flutter - 为什么列表在添加新元素时表现不同?
问题描述
当我将新元素附加到现有列表并在屏幕上显示列表后,有时新元素显示在列表顶部,有时显示在最后。为什么 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);
});
}
解决方案
使用 List 的 insert() 方法添加项目,这里索引为 0 以在开头添加它。例子:
List<String> transactions = ["Items1", "Items2", "Items3"];
transactions.insert(0, "New Value");
推荐阅读
- reporting-services - 获取从数据集列 ssrs 之间的值
- c# - 我不明白为什么我有 null MVC AJAX
- python - 如何使用python从父标签中获取数据
- javascript - 动态引导 4 导航栏“活动”标签
- c - 预处理器宏字符串化
- hibernate - 如何修复此异常
- visual-studio-2010 - VS2010 与 C++11 使用 QT creator 的所有功能支持
- python - WxPython。脚本执行
- postgresql - 从子查询中保存价值并在以后重用它?
- meteor - Meteor Async ValidatedMethod 被调用,函数参数未定义