Flutter TinderSwapCards 动态添加新卡片

问题描述

我实现了 TinderSwapCard 小部件,它在初始化期间需要固定数量的卡片(totalNum,例如 =5)。现在我想加载更多卡片,如果卡片的初始数量已经被刷过(例如从初始设置刷过 5 张卡片 -> 再加载 2 张生成的卡片)。应该与 ListView 类似,它可以使用 ScrollController 动态扩展显示的列表。

我尝试使用在 CardController 小部件中实现的 TinderSwapCard 来实现这一点,但这仅适用于触发器事件。

因此,我使用 CardController 扩展了 ChangeNotifier,但未正确触发侦听器(请参阅下面的代码)。

class _SwipingPageState extends State<SwipingPage> {
  final MainController _mainController = MainController.to;

  final RxDouble swipeEdge = 50.0.obs;
  int iterationCounter = 0; //0 = Standard Set; 1 = 1. Iteration...
  int currentCardindex = 0;
  CardController _cardController = new CardController();
  bool isPerformingRequest = false;

  @override
  void initState() {
    super.initState();
    _cardController.addListener(() { //never triggered
      if (currentCardindex == 3) { //_mainController.volunteeringOffers.length && iterationCounter == 0) {
        print("listener called");
        _getMoreData();
      }
    });
  }

  @override
  void dispose() {
    _cardController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
       return Stack(
      children: [
        Scaffold(
          body: Center(
            child: Container(
              alignment: Alignment.center,padding: const EdgeInsets.symmetric(horizontal: 24,vertical: 16),child: RichText(...
            ),),TinderSwapCard(
          orientation: AmassOrientation.TOP,totalNum: _mainController.volunteeringOffers.length,stackNum: 4,maxWidth: Get.width,maxHeight: Get.height,minWidth: Get.width * 0.9,minHeight: Get.height * 0.9,cardBuilder: (context,index) => _mainController.volunteeringOfferCards[index],cardController: _cardController,swipeEdge: 6.9,swipeCompleteCallback: (CardSwipeOrientation orientation,int index) {
            ...
            currentCardindex++;
          },],);
}

  _getMoreData() async {
    if (!isPerformingRequest) {
      setState(() => isPerformingRequest = true);

      if (iterationCounter != maximumIterations) {
        List<VolunteeringOffer> newEntries = await dataRequest();
        setState(() {
          _mainController.addCardsWithVolunteeringOffersDynamically(newEntries); 
// SwipeCardWidgets are added to volunteeringOfferCards
          isPerformingRequest = false;
          iterationCounter++;
        });
      }
    }


  Future<List<VolunteeringOffer>> dataRequest() async {
    return Future.delayed(Duration(seconds: 1),() {
      return [
        VolunteeringOffer(...),VolunteeringOffer(...)
      ];
    });
  }
}

我想知道在这个 Swiping 小部件中动态加载卡片是否可行,如果是,怎么做?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...