【问题标题】:How to store user created objects in a List Flutter如何将用户创建的对象存储在 List Flutter 中
【发布时间】:2021-04-06 11:30:35
【问题描述】:
我正在尝试将用户创建的对象存储在要在 ListView 中显示的列表中,但出现错误:
它给我的错误是:
无法在初始化程序中访问实例成员 contact1。
尝试用不同的expressiondartimplicit_this_reference_in_initializer替换对实例成员的引用
如何实现将用户对象存储在 List 中?
【问题讨论】:
标签:
flutter
dart
flutter-layout
【解决方案1】:
你应该这样做:
这是一个示例 根据您的数据更改它
import 'package:flutter/material.dart';
class Contact {
final String id;
final int number;
final String role;
Contact({this.id, this.number, this.role});
}
class Widget1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
var contact1 = Contact(id: "fahmi", number: 00, role: "admin");
var contact2 = Contact(id: "fahmi", number: 00, role: "admin");
var contact3 = Contact(id: "fahmi", number: 00, role: "admin");
final List<Contact> myList = [contact1, contact2, contact3];
return Container();
}
}
【解决方案2】:
您无法访问位于初始化程序位置的任何对象。只需将项目设置为initState 内的myList 或任何方法。最好的方法是将其设置在 initState 方法中。因为它只会被调用一次。
-
只需在无状态类之外初始化myList。
-
在 initState 中将项目添加到 myList。
class ContactsPage extends StatelessWidget {
final List<Contact> myList = [];
final Contact contact1 = Contact(id: "fahmi", number: 00, role: "admin");
final Contact contact2 = Contact(id: "fahmi", number: 00, role: "admin");
final Contact contact3 = Contact(id: "fahmi", number: 00, role: "admin");
@override
void initState() {
super.initState();
myList.addAll([contact1, contact2, contact]);
}
}