颤动中共享偏好的替代是什么
What is the alternate of shared preference in flutter
我正在开发一个应用程序,该应用程序已接近完成,处于部署阶段。但是,现在我遇到了大问题,我从模拟器中卸载了该应用程序,然后再次 运行 它向我发送了 shared preference
版本的错误,颤振将其版本从 2.0.5
更新为2.0.7
所以我将 shared preference
的版本从 2.0.5
更改为 2.0.7
,然后当我 运行 应用程序构建成功但我无法移动到下一个屏幕。我的 api 是 运行ning 它正在向我发送 200
响应状态代码。
我在登录屏幕中使用 shared preference
,这样当用户登录时,我会在 response.data
中获取所有详细信息,然后使用 [=将数据从登录屏幕传递到主屏幕和其他屏幕 shared preference
.
这里是登录功能代码
var data={};
Future login() async {
Dio dio = new Dio();
try {
data = {
'username':"abc",
'password':"abc123",
'date': "2021-08-29"
};
await dio
.post(localhostUrlLogin, data: json.encode(data),)
.then((onResponse) async {
print(onResponse.statusCode);
String name = (onResponse.data['User']['username']);
String email = (onResponse.data['User']['email']);
//here i am using shared preference to pass the name and email to home and other screen
myPrefs.setString('name', name);
myPrefs.setString('email', email);
//here i am calling the home screen
Navigator.push(
context, new MaterialPageRoute(builder: (context) => Home()));
});
} catch (e) {
showDialog(
context: context,
builder: (BuildContext context) {
return AdvanceCustomAlert(
title: "Connection Error",
descriptions: "Connection error",
icon: Icons.error,
bgcolor: Colors.red,
fgcolor: Colors.red,
);
});
}
}
当我点击登录按钮时,它会在终端中发送此输出
I/flutter (11877): 200
I/flutter (11877): NoSuchMethodError: The method 'setString' was called on null.
I/flutter (11877): Receiver: null
I/flutter (11877): Tried calling: setString("name", "abc")
如何解决这个问题?
如果 myPrefs
是 SharedPreference
实例的变量,那么您应该知道我们必须等待它的实例,然后才能对其进行任何操作。根据控制台中的消息 myPrefs
似乎是 null
尝试:
var myPrefs = await SharedPreferences.getInstance();
await myPrefs.setString('name', name);
await myPrefs.setString('email', email);
我正在开发一个应用程序,该应用程序已接近完成,处于部署阶段。但是,现在我遇到了大问题,我从模拟器中卸载了该应用程序,然后再次 运行 它向我发送了 shared preference
版本的错误,颤振将其版本从 2.0.5
更新为2.0.7
所以我将 shared preference
的版本从 2.0.5
更改为 2.0.7
,然后当我 运行 应用程序构建成功但我无法移动到下一个屏幕。我的 api 是 运行ning 它正在向我发送 200
响应状态代码。
我在登录屏幕中使用 shared preference
,这样当用户登录时,我会在 response.data
中获取所有详细信息,然后使用 [=将数据从登录屏幕传递到主屏幕和其他屏幕 shared preference
.
这里是登录功能代码
var data={};
Future login() async {
Dio dio = new Dio();
try {
data = {
'username':"abc",
'password':"abc123",
'date': "2021-08-29"
};
await dio
.post(localhostUrlLogin, data: json.encode(data),)
.then((onResponse) async {
print(onResponse.statusCode);
String name = (onResponse.data['User']['username']);
String email = (onResponse.data['User']['email']);
//here i am using shared preference to pass the name and email to home and other screen
myPrefs.setString('name', name);
myPrefs.setString('email', email);
//here i am calling the home screen
Navigator.push(
context, new MaterialPageRoute(builder: (context) => Home()));
});
} catch (e) {
showDialog(
context: context,
builder: (BuildContext context) {
return AdvanceCustomAlert(
title: "Connection Error",
descriptions: "Connection error",
icon: Icons.error,
bgcolor: Colors.red,
fgcolor: Colors.red,
);
});
}
}
当我点击登录按钮时,它会在终端中发送此输出
I/flutter (11877): 200
I/flutter (11877): NoSuchMethodError: The method 'setString' was called on null.
I/flutter (11877): Receiver: null
I/flutter (11877): Tried calling: setString("name", "abc")
如何解决这个问题?
如果 myPrefs
是 SharedPreference
实例的变量,那么您应该知道我们必须等待它的实例,然后才能对其进行任何操作。根据控制台中的消息 myPrefs
似乎是 null
尝试:
var myPrefs = await SharedPreferences.getInstance();
await myPrefs.setString('name', name);
await myPrefs.setString('email', email);