我已经阅读了保存此信息的不同方法,但是似乎没有关于此的任何适当的文字。 大多数人建议使用SharedPreferences并对列表进行编码/解码。其他人使用一个函数按属性映射列表属性,而我根本找不到这个专业人员。
默认情况下,该库可以保存不同的类型,但列表之间不存在。
有这个例子:
final _myList = [
{one: 1, two: 2},
{one: 1, two: 2},
];
我们如何保存并从Flutter的本地存储中获取它?
答案 0 :(得分:0)
main.dart
:
void main() {
SharedPreferences.getInstance().then((prefs) {
runApp(MyApp(prefs: prefs));
});
}
class MainScreen extends StatefulWidget {
MainScreen({Key key, this.prefs}) : super(key: key);
final SharedPreferences prefs;
...
我从MainScreen
将首选项传递到其余页面,因此一开始就将其加载到我的应用程序中。
这是另一个页面:
class MyState extends State<TeamsPage> {
List _teams = [];
SharedPreferences _prefs = null;
@override
void initState() {
_prefs = widget.data["prefs"];
_getTeams();
}
_getTeams() async {
if (_prefs.containsKey("teams") == null || _prefs.get('teams') == null) {
_teams = [
{"name": "Team 1", "avatar": "assets/images/draw.jpg"},
{"name": "Team 2", "avatar": "assets/images/draw1.jpg"},
{"name": "Team 3", "avatar": "assets/images/draw2.jpg"},
{"name": "Team 4", "avatar": "assets/images/draw3.jpg"}
];
_prefs.setString("teams", json.encode(_teams));
} else {
_teams = json.decode(_prefs.get('teams'));
}
}