微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

flutter 中的共享首选项停止应用

如何解决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');

userNamenull 时:

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 举报,一经查实,本站将立刻删除。