我使用共享首选项保存了两个字符串。我想分别检索字符串并将其显示为文本。
写:
_nameSaver() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('name', nameController.text);
prefs.setString('school', schoolController.text);
}
RaisedButton(onPressed: () => _nameSaver(),);
阅读:
_nameRetriever() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
final name = prefs.getString('name') ?? '';
final school = prefs.getString('school') ?? '';
print(name);
print(school);
}
我应该从共享首选项中提取姓名和学校,并将其分别显示在列表图块上。名称标题和学校字幕。但是我不确定如何使用await方法提取它。
ListTile(title: Text("")
subtitle: Text(""),),
答案 0 :(得分:1)
首先为文本定义变量
String nameText = '';
String schoolText = '';
将这些分配给小部件
ListTile(title: Text(nameText)
subtitle: Text(schoolText),),
现在可以从sharedpref函数读取这些内容
_nameRetriever() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(){
nameText = prefs.getString('name') ?? '';
schoolText = prefs.getString('school') ?? '';
}
print(targetPrice);
print(instrumentPair);
}
编辑
这只是为了演示其工作原理。我已经将保存功能设为将来的功能,只是为了确保保存后可以阅读。如果您同时进行保存和阅读,则不需要
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
@override
void initState() {
super.initState();
_nameSaver().then((_) {
_nameRetriever();
});
}
@override
Widget build(BuildContext context) {
return Scaffold(body: Container());
}
Future<String> _nameSaver() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('name2', 'asdsadasd');
prefs.setString('school2', 'asdasdas');
return 'saved';
}
_nameRetriever() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
final name = prefs.getString('name2') ?? '';
final school = prefs.getString('school2') ?? '';
print(name);
print(school);
}
}
答案 1 :(得分:0)
可以从首选读取值。为-
getPref('name');
使用此方法-
getPref(String key) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
String auth = prefs.getString(key);
}
为我工作。