#flutter #dart #flutter-layout
#flutter #dart #flutter-layout
Вопрос:
Когда я добавляю новый элемент в существующий список и после отображения списка на экране, иногда новый элемент отображается в верхней части списка, а иногда и в последней. Почему список ведет себя подобным образом? в приведенном ниже коде я хочу показать, что недавно добавленный элемент находится в верхней части моего списка, Есть ли способ это сделать?
class _TransactionListState extends State<TransactionList> {
// Existing List with two transactions
final List<Transaction> transactions = [
Transaction(
title: 'New Books',
id: 't1',
amount: 44.55,
date: DateTime.now(),
),
Transaction(
title: 'Weekly Items',
id: 't2',
amount: 22.44,
date: DateTime.now(),
),
];
final titleController = TextEditingController();
final amountController = TextEditingController();
void addTransactions() {
// Add new transaction
Transaction tx = Transaction(
title: titleController.text,
amount: double.parse(amountController.text),
date: DateTime.now(),
id: DateTime.now().toString());
setState(() {
// Add new transaction to existing List. I want this new element on top of screen
transactions.add(tx);
});
}
Ответ №1:
Используйте метод insert () списка, чтобы добавить элемент, здесь индекс будет равен 0, чтобы добавить его в начале. Пример:
List<String> transactions = ["Items1", "Items2", "Items3"];
transactions.insert(0, "New Value");
Ответ №2:
Вы можете передать reverse: true
в ListView
конструктор или вставить новый элемент с 0-м индексом, используя list.insert(index, item)
метод как:
setState(() { transactions.insert(0, tx); });
Ответ №3:
Если вы хотите использовать стеки, вы могли бы использовать: https://pub.dev/packages/stack