Flutter ReorderableListView с настраиваемым объектом
В настоящее время у меня возникают проблемы с ReorderableListView.
У меня есть список ToDoPrefabs, который я хочу вывести, потому что мой список состоит не из строк, а из чего-то еще, я получаю ошибки в индексе, для ключа и текста.
это ошибка:
"тип" To Prefab "не является подтипом типа" int ""
Подозреваю, что это ключ. Это также логично, поскольку todoprefab не является int. Есть ли у кого-нибудь идеи, как я могу получить еще один индекс типа int в моем ReorderableListView
Это мой ReorderableListView
return ReorderableListView(
onReorder: _onReorder,
scrollDirection: Axis.vertical,
padding: const EdgeInsets.symmetric(vertical: 8.0),
children: [
for(final item in toDoManagerClass.todoBank)
todocardprefab(item)
]
);
todocardprefab (не список)
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),
];
}
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