【发布时间】:2020-07-16 13:08:08
【问题描述】:
您好,我在 Flutter 应用上使用 SharedPreferences 时遇到问题。加载要在构建函数中公开的 SharedPreferences 时出现错误屏幕。目前所有内容都已加载,我可以毫无错误地使用我的应用程序。 我得到的错误代码:“方法 getStringList 在 null 上被调用”。这是我的代码:
SharedPreferences sp;
List<String> toprun = ["181","103","90","0","0","0","0","0","0","0"];
@override
void initState(){
SharedPreferences.getInstance().then((SharedPreferences shared)
{
sp = shared;
sp?.setStringList('toprun', toprun);
}); //Setting Data in my sp
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Title'),
backgroundColor: Colors.redAccent,
),
body: Padding(
padding: EdgeInsets.fromLTRB(30.0, 40.0, 30.0, 0.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget> [
DataTable(
columns: [
DataColumn(label: Text('Results')),
],
rows:
sp.getStringList('toprun') // Get data I previously saved in my sp
.map(
((element) => DataRow(
cells: <DataCell>[
DataCell(Text(element)),
],
)),
)
.toList()
)
],
)
),
bottomNavigationBar: NavBarWidget(index: 0,),
);
}
【问题讨论】:
-
能否将错误添加到问题中?
-
我做到了。它说“方法 'getStringList' 在 null 上被调用”。
-
你可以避免在 initstate 中使用异步代码
-
添加到 Kadri 的评论中:当您在
build中调用getStringList时,您的sp为空,因为您在SharedPreferences.getInstance().then(...)中的代码异步运行。
标签: flutter sharedpreferences loading