如何在dart中使用共享首选项而不使用异步方法?



我想在颤动容器的子文本中显示,但首先我必须使用共享偏好来获得我的值,我试图在不同的函数中使用sharedpreference,但它显示了一个错误,并说未来不能分配给小部件. 我该怎么修理它?

Container(
child: _show(),
height: 40,
width: MediaQuery.of(context).size.width - 230,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
boxShadow: [
BoxShadow(
color: Colors.black26,
blurRadius: 6,
offset: Offset(0, 2)),
],
),
),

在其他函数我有:

_show() async {
final prefs = await SharedPreferences.getInstance();
var myVar= prefs.getInt('key');

return myVar;
}

为了在你的小部件中使用async方法,你必须使用Future Builder,它只会让你的应用程序' '保持' ';直到你的数据到达。

你可以这样使用:

Container(
child: FutureBuilder(
future: _show(),
builder: (context, snapshot) { // snapshot is just the data returned from the method, to access it's data you use .data  
if (snapshot.hasData) { // this is for null safety, since you are accessing saved data the first time you use your app you might not have anything stored, which returns null
return Container(Text(snapshot.data.toString())) // here I just return a simple Text widget with data
}
else { 
return Container();
}
}
);,
height: 40,
width: MediaQuery.of(context).size.width - 230,
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(10),
boxShadow: [
BoxShadow(
color: Colors.black26,
blurRadius: 6,
offset: Offset(0, 2)),
],
),
),

相关内容

  • 没有找到相关文章

最新更新