如何解决flutter 中的共享首选项停止应用
void initState() {
super.initState();
getPreferences().then((value){
Timer(
Duration(seconds: 2),(() => {
Navigator.of(context).pushReplacement(new MaterialPageRoute(
builder: (BuildContext context) => value))
}),);
});
}
这是我的方法
getPreferences() async {
WidgetsFlutterBinding.ensureInitialized();//??**
SharedPreferences prefs = await SharedPreferences.getInstance();//the same with home screen in the skip button
bool loadingScreen=prefs.getBool('seen');
print("loadingScreen = $loadingScreen");
StatefulWidget _screen= LoginScr();
if (loadingScreen == null|| loadingScreen == false){
_screen = Tut();
}
else if (loadingScreen == true){
userName = prefs.getString('userName');
if(userName ==null||userName=="null") {
print(userName+' userName in main');
_screen = LoginScr();
} else {
print(userName +'userName in main');
_screen = HomePage();
}
}
return _screen;
}
顺便说一句,我不知道这条线是什么
Widge,tsFlutterBinding.ensureInitialized();
//??**
这是我的日志
正在执行热重启...正在将文件同步到设备 Android SDK 构建
对于 x86... 在 1,776 毫秒内重新启动应用程序。我/颤振(8982):
loadingScreen = true E/Flutter ( 8982):
[错误:Flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:
NoSuchMethodError: 在 null 上调用了方法“+”。 E/颤振 (
8982):接收器:空E/Flutter(8982):尝试调用:+(“用户名
在 main") E/Flutter ( 8982): #0 Object.noSuchMethod
(dart:core-patch/object_patch.dart:51:5) E/Flutter (8982): #1
_SplashSCRState.getPreferences (package:plaster/UI/SplashSCR.dart:138:24) E/Flutter (8982):
E/颤振(8982):#2
_SplashSCRState.initState (package:plaster/UI/SplashSCR.dart:26:5) E/Flutter (8982): #3 StatefulElement._firstBuild
(package:Flutter/src/widgets/framework.dart:4765:58) E/Flutter (
8982):#4 ComponentElement.mount
(包:Flutter/src/widgets/framework.dart:4601:5)E/Flutter(8982):
#5 Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14) E/Flutter (
8982):#6 Element.updateChild
(package:Flutter/src/widgets/framework.dart:3327:18) E/Flutter (
8982):#7 SingleChildRenderObjectElement.mount
(package:Flutter/src/widgets/framework.dart:6118:14) E/Flutter (
8982):#8 Element.inflateWidget
(package:Flutter/src/widgets/framework.dart:3569:14) E/Flutter (
8982):#9 Element.updateChild
(package:Flutter/src/widgets/framework.dart:3327:18) E/Flutter (
8982):#10 ComponentElement.performRebuild
(package:Flutter/src/widgets/framework.dart:4652:16) E/Flutter (
8982):#11 Element.rebuild
(包:Flutter/src/widgets/framework.dart:4343:5)E/Flutter(8982):
#12 ComponentElement._firstBuild (package:Flutter/src/widgets/framework.dart:4606:5) E/Flutter (8982):
#13 ComponentElement.mount (package:Flutter/src/widgets/framework.dart:4601:5) E/Flutter (8982):
#14 Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14) E/Flutter (
8982):#15 Element.updateChild
(package:Flutter/src/widgets/framework.dart:3327:18) E/Flutter (
8982):#16 SingleChildRenderObjectElement.mount
(package:Flutter/src/widgets/framework.dart:6118:14) E/Flutter (
8982):#17 Element.inflateWidget
(package:Flutter/src/widgets/framework.dart:3569:14) E/Flutter (
8982):#18 Element.updateChild
(package:Flutter/src/widgets/framework.dart:3327:18) E/Flutter (
8982):#19 SingleChildRenderObjectElement.mount
(package:Flutter/src/widgets/framework.dart:6118:14) E/Flutter (
8982):#20 Element.inflateWidget
(package:Flutter/src/widgets/framework.dart:3569:14) E/Flutter (
8982):#21 Element.updateChild
(package:Flutter/src/widgets/framework.dart:3327:18) E/Flutter (
8982):#22 ComponentElement.performRebuild
(package:Flutter/src/widgets/framework.dart:4652:16) E/Flutter (
8982):#23 StatefulElement.performRebuild
(package:Flutter/src/widgets/framework.dart:4800:11) E/Flutter (
8982):#24 Element.rebuild
(包:Flutter/src/widgets/framework.dart:4343:5)E/Flutter(8982):
#25 ComponentElement._firstBuild (package:Flutter/src/widgets/framework.dart:4606:5) E/Flutter (8982):
#26 StatefulElement._firstBuild (package:Flutter/src/widgets/framework.dart:4791:11) E/Flutter (
8982):#27 ComponentElement.mount
(包:Flutter/src/widgets/framework.dart:4601:5)E/Flutter(8982):
#28 Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14) E/Flutter (
8982):#29 Element.updateChild
(package:Flutter/src/widgets/framework.dart:3327:18) E/Flutter (
8982):#30 SingleChildRenderObjectElement.mount
(package:Flutter/src/widgets/framework.dart:6118:14) E/Flutter (
8982):#31 Element.inflateWidget
(package:Flutter/src/widgets/framework.dart:3569:14) E/Flutter (
8982):#32 Element.updateChild
(package:Flutter/src/widgets/framework.dart:3327:18) E/Flutter (
8982):#33 SingleChildRenderObjectElement.mount
(package:Flutter/src/widgets/framework.dart:6118:14) E/Flutter (
8982):#34 Element.inflateWidget
(package:Flutter/src/widgets/framework.dart:3569:14) E/Flutter (
8982):#35 Element.updateChild
(package:Flutter/src/widgets/framework.dart:3327:18) E/Flutter (
8982):#36 ComponentElement.performRebuild
(package:Flutter/src/widgets/framework.dart:4652:16) E/Flutter (
8982):#37 StatefulElement.performRebuild
(package:Flutter/src/widgets/framework.dart:4800:11) E/Flutter (
8982):#38 Element.rebuild
(包:Flutter/src/widgets/framework.dart:4343:5)E/Flutter(8982):
#39 ComponentElement._firstBuild (package:Flutter/src/widgets/framework.dart:4606:5) E/Flutter (8982):
#40 StatefulElement._firstBuild (package:Flutter/src/widgets/framework.dart:4791:11) E/Flutter (
8982):#41 ComponentElement.mount
(包:Flutter/src/widgets/framework.dart:4601:5)E/Flutter(8982):
#42 Element.inflateWidget (package:Flutter/src/widgets/framework.dart:3569:14) E/Flutter (
8982):#43 Element.updateChild
(package:Flutter/src/widgets/framework.dart:3327:18) E/Flutter (
8982):#44 ComponentElement.performRebuild
(package:Flutter/src/widgets/framework.dart:4652:16) E/Flutter (
8982): #45 元素.r
解决方法
您正在尝试打印日志:
print(userName + ' userName in main');
当 userName
为 null
时:
if (userName == null || userName == "null")
它引发了异常。修改print
方法的用法ant再试。应该是这样的:
userName = prefs.getString('userName');
if(userName == null || userName == "null") {
print('first start,userName in main is null');
_screen = LoginScr();
} else {
print('$userName is userName in main');
_screen = HomePage();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。