【发布时间】:2020-12-28 03:25:21
【问题描述】:
我正在使用 共享偏好 来存储和加载 Flutter 中的地图的值,但出现错误
The following assertion was thrown building UserPro(dirty):
A non-null String must be provided to a Text widget.
'package:flutter/src/widgets/text.dart':
Failed assertion: line 360 pos 10: 'data != null'
我当然知道 Shared Preferences 返回一个空字符串值,但我不明白为什么,因为我正在等待该值。以及如何解决它。我附上我的代码和这个问题供您参考
----存储 ------
void setUserValues() async{
SharedPreferences sharedPrefs = await SharedPreferences.getInstance();
currentUser.forEach((k,v)=>sharedPrefs.setString(k, v));
}
这里 currentUser 包含包含“姓名”、“电子邮件”等用户数据的地图。
----加载中 ------
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
SharedPreferences localStorage;
class UserPro extends StatelessWidget{
final currentUser;
String name;
UserPro({this.currentUser}){
name=localStorage.getString("Name");;
}
static Future init() async{
localStorage = await SharedPreferences.getInstance();
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
body: Center(
child: Text(
name,
style: TextStyle(
fontSize: 15,
fontFamily: 'Berlin Sans FB',
fontWeight: FontWeight.bold,
),
),
),
);
}
}
【问题讨论】:
-
您需要等待共享首选项被初始化。你在哪里调用 init() 方法?
标签: android flutter sharedpreferences