我想在 Flutter 中使用 ListWheelScrollView 但仅在其 Selected 之后输出 Selected Item

问题描述 投票:0回答:1

我想在 Flutter 中使用 ListWheelScrollView,但仅在其选定后输出选定项。 所以因为现在当我一次从底部到顶部时,它会输出每个项目...

这是我的代码:

List<int> numbers = List.generate(3, (index) => index + 1);

void _updateSelectedCardType(int index) {
  setState(() {
    _selectedIndex = index;
    switch (index) {
      case 0:
        selectedCard = '1';
        break;
      case 1:
        selectedCard = '2';
        break;
      case 2:
        selectedCard = '3';
        break;
    }
  sleep(const Duration(seconds: 1));
  print('Selected card type: $selectedCard');
}

这里我试着只在一秒钟后输出它所以如果它被选中并且没有改变我可以打印它...... 关于如何做的任何想法

flutter dart listview sleep
1个回答
0
投票

试试看

import 'dart:async';
import 'package:flutter/material.dart';

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  int _selectedIndex = 0;
  String selectedCard = '1';
  Timer? _timer;

  List<int> numbers = List.generate(3, (index) => index + 1);

  @override
  void dispose() {
    _timer?.cancel();
    super.dispose();
  }

  void _onSelectedItemChanged(int index) {
    setState(() {
      _selectedIndex = index;
      switch (index) {
        case 0:
          selectedCard = '1';
          break;
        case 1:
          selectedCard = '2';
          break;
        case 2:
          selectedCard = '3';
          break;
      }
    });
    _timer?.cancel();
    _timer = Timer(Duration(milliseconds: 500), () {
      print('Selected card type: $selectedCard');
    });
  }

  @override
  Widget build(BuildContext context) {
    return ListWheelScrollView(
      itemExtent: 50,
      children: numbers.map((number) {
        return Center(child: Text('$number'));
      }).toList(),
      onSelectedItemChanged: _onSelectedItemChanged,
      physics: FixedExtentScrollPhysics(),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.