【问题标题】:Flutter ReorderableListView with custom objectFlutter ReorderableListView 与自定义对象
【发布时间】:2020-10-12 03:21:09
【问题描述】:

我目前在使用 ReorderableListView 时遇到了一些困难。

我有一个 ToDoPrefabs 列表,我想输出它,因为我的列表不包含字符串而是其他内容,我在索引中遇到错误,对于键和文本。

这是错误:

"type 'To Prefab' 不是 type 'int' 的子类型"

我怀疑这是关键。这也是合乎逻辑的,因为 todoprefab 不是 int。有谁知道如何在我的 ReorderableListView 中获得另一个 int 类型的索引

这是我的 ReorderableListView

return ReorderableListView(
      onReorder: _onReorder,
      scrollDirection: Axis.vertical,
      padding: const EdgeInsets.symmetric(vertical: 8.0),
      children: [
        for(final item in toDoManagerClass.todoBank)
        todocardprefab(item)
      ]
    );

tod​​ocardprefab(不是列表)

todocardprefab(var key){
  return Dismissible(
    key: ValueKey(key),
    background: Container(color: Colors.red, alignment: Alignment.centerLeft, child: Icon(Icons.delete),),
    secondaryBackground: Container(color: Colors.green, alignment: Alignment.centerRight, child: Icon(Icons.archive),),
    child: Card(
      child: ListTile(
        //leading: Icon(Icons.check_box_outline_blank),
        title: Text(toDoManagerClass.todoBank[key].toDoText),
        onTap: (){},
      ),
    ),
  );
}

这是一个简单的列表。

class ToDoManagerClass{
  List<ToDoPrefab> todoBank = [
    ToDoPrefab(text: 'Homework', f: false),
    ToDoPrefab(text: 'Homework1', f: false),
    ToDoPrefab(text: 'Homework12', f: false),
    ToDoPrefab(text: 'Homework123', f: false),
    ToDoPrefab(text: 'Homework1234', f: false),
    ToDoPrefab(text: 'Homework12345', f: false),
  ];
}

【问题讨论】:

    标签: list object flutter listview reorderable-list


    【解决方案1】:

    这个方法应该有效:

    您的可重新排序的列表视图

    return ReorderableListView(
          onReorder: _onReorder,
          scrollDirection: Axis.vertical,
          padding: const EdgeInsets.symmetric(vertical: 8.0),
          children: [
            for(final item in toDoManagerClass.todoBank)
            todocardprefab(item, index())
          ]
        );
    

    这里是函数。每次调用都会返回一个更高的数字。

    int index(){
        if(i < toDoManagerClass.todoBank.length){
          print(i);
          i++;
        }
        return i-1;
      }
    

    现在您只需使用索引而不是 todocard 中的项目

    【讨论】:

      猜你喜欢
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多