fish-redux 使用adapter生成TabBarView出现 Duplicate key found: [< [< >]>]. 错误

ny6fqffe  于 4个月前  发布在  其他
关注(0)|答案(2)|浏览(71)

// view.dart
List<Widget> _buildTabBarView() {
    List<Widget> widgets = [];
    for (var i = 0; i < adapter.itemCount; i++) {
      widgets.add(adapter.itemBuilder(viewService.context, i));
    }
    return widgets;
 }
// state.dart
  @override
  Object getItemData(int index) {
    return lotteryStates[index];
  }

  @override
  String getItemType(int index) {
    if (lotteryStates[index] is GroupLotteryNewState) {
      return 'new';
    }
    return 'dtl';
  }

  @override
  int get itemCount => lotteryStates.length;

  @override
  void setItemData(int index, Object data) {
    lotteryStates[index] = data;
  }
// adapter.dart
class GroupLotteryAdapter extends SourceFlowAdapter<GroupLotteryState> {
  GroupLotteryAdapter()
      : super(
          pool: <String, Component<Object>>{
            'new': GroupLotteryNewComponent(),
            'dtl': GroupLotteryDtlComponent()
          },
        );
}
zte4gxcn

zte4gxcn1#

我加了个valueKey 解决了这个错误,目前没发现其他问题

List<Widget> _buildTabBarView() {
    List<Widget> widgets = [];
    for (var i = 0; i < adapter.itemCount; i++) {
      widgets.add(Container(
        key: ValueKey(i),
        child: adapter.itemBuilder(viewService.context, i),
      ));
    }
    return widgets;
  }
nfzehxib

nfzehxib2#

我加了个valueKey 解决了这个错误,目前没发现其他问题

List<Widget> _buildTabBarView() {
    List<Widget> widgets = [];
    for (var i = 0; i < adapter.itemCount; i++) {
      widgets.add(Container(
        key: ValueKey(i),
        child: adapter.itemBuilder(viewService.context, i),
      ));
    }
    return widgets;
  }

你的state.dart实现StateKey也可以,你这样会引发其他问题

相关问题