flutter - 如何在 Flutter/Dart 中显示 SharedPreferences 值?
问题描述
我想在该页面中设置 sharedPreferences 变量。但是当我调用函数(例如 _getUsername)时,出现类似“Flutter:“Future”不是“String”类型的子类型的错误。
如何在该页面中获取和设置值?为什么不能在小部件中显示字符串值?这应该是我的“编辑设置”页面。我想编辑三个变量用户名、密码和 url。感谢帮助。
class ThirdRoute extends StatefulWidget {
@override
_ThirdRouteState createState() => _ThirdRouteState();
}
class _ThirdRouteState extends State<ThirdRoute> {
String username = '';
String password = '';
String url = '';
@override
void initState() {
super.initState();
username = _getUsername();
password = _getPassword();
url = _getUrl();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("edit page")),
body: Center(
child: ListView(
children: [
Container(
child: Text(username),
),
Container(
child: Text(password),
),
Container(
child: Text(url),
),
FlatButton(
onPressed: () {
setState(() {
_setUsername("new username");
_setPassword("new password");
_setUrl("new url");
});
},
)
],
),
),
);
}
}
_getUsername() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('username');
}
_getPassword() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('password').toString();
}
_getUrl() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('url').toString();
}
_setUsername(newUsername) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString("username", newUsername);
}
_setPassword(newPassword) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString("password", newPassword);
}
_setUrl(newUrl) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setString("url", newUrl);
}
解决方案
尝试像这样打电话
_getUsername().then((value) => ....)
推荐阅读
- postgresql - Postgres 连接未关闭 - 休眠
- python - 如何动态访问新的数据框(熊猫管道)?
- python - 子集数据并在传递前存储,使用 loc
- events - 如何更新与另一个聚合有关联的聚合的 ReadModel
- grafana - Graphite divideSeries(#E,#A) 不返回数据
- matplotlib - 创建 matplotlib 子图并调用 np.random.multivariate_normal 时出现“SVD 不收敛”错误
- php - 此集合实例上不存在属性 [firstName]
- excel - 在Excel中如何识别图片部分覆盖的单元格位置
- java - 与 MongoDB 的春季会议:竞争条件?
- c# - 没有空值时出现 NullReferenceException