首页 > 解决方案 > 为什么列表在添加新元素时表现不同?

问题描述

当我将新元素附加到现有列表并在屏幕上显示列表后,有时新元素显示在列表顶部,有时显示在最后。为什么 List 会有这样的行为?在下面的代码中,我在我的列表顶部显示新添加的元素有没有办法做到这一点?

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);
    });
  }


标签: flutterdartflutter-layout

解决方案


使用 List 的 insert() 方法添加项目,这里索引为 0 以在开头添加它。例子:

List<String> transactions = ["Items1", "Items2", "Items3"];


transactions.insert(0, "New Value");

推荐阅读