当前位置: 首页 > 知识库问答 >
问题:

颤振停止应用程序中的共享首选项

葛越泽
2023-03-14

我在我制作的闪屏页面中调用共享首选项

  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.ensure初始化();//??这是我的日志

正在执行热重启。。。正在将文件同步到为x86构建的Android SDK设备。。。1776ms内重新启动应用程序。I/flatter(8982):loadingScreen=true E/flatter(8982):[ERROR:flatter/lib/ui/ui\u dart\u state.cc(177)]未处理的异常:NoSuchMethodError:在null上调用了方法“”。E/flatter(8982):接收方:null E/flatter(8982):尝试调用:(“主用户名”)E/flatter(8982):#0对象。无此方法(省道:核心补片/物体补片。省道:51:5)E/颤振(8982):#1
\u飞溅状态。getPreferences(软件包:石膏/UI/SplashSCR.省道:138:24)E/flatter(8982):E/flatter(8982):#2
_SplashSCRState。初始状态(包:石膏/UI/SplashSCR.省道:26:5)E/颤振(8982):#3状态元素_firstBuild(包:flatter/src/widgets/framework.dart:4765:58)E/flatter(8982):#4组件元素。挂载(包:flatter/src/widgets/framework.dart:4601:5)E/flatter(8982):#5元素。充气小部件(包:flatter/src/widgets/framework.dart:3569:14)E/flatter(8982):#6元素。updateChild(包:flatter/src/widgets/framework.dart:3327:18)E/flatter(8982):#7 SingleChildRenderObjectElement。挂载(包:flatter/src/widgets/framework.dart:6118:14)E/flatter(8982):#8元素。充气小部件(包:flatter/src/widgets/framework.dart:3569:14)E/flatter(8982):#9元素。updateChild(包:flatter/src/widgets/framework.dart:3327:18)E/flatter(8982):#10组件元素。performRebuild(包:flatter/src/widgets/framework.dart:4652:16)E/flatter(8982):#11元素。重建(包:flatter/src/widgets/framework.dart:4343:5)E/flatter(8982):#12组件元素_firstBuild(包:flatter/src/widgets/framework.dart:4606:5)E/flatter(8982):#13组件元素。挂载(包:flatter/src/widgets/framework.dart:4601:5)E/flatter(8982):#14元素。充气小部件(包:flatter/src/widgets/framework.dart:3569:14)E/flatter(8982):#15元素。updateChild(包:flatter/src/widgets/framework.dart:3327:18)E/flatter(8982):#16 SingleChildRenderObjectElement。挂载(包:flatter/src/widgets/framework.dart:6118:14)E/flatter(8982):#17元素。充气小部件(包:flatter/src/widgets/framework.dart:3569:14)E/flatter(8982):#18元素。updateChild(包:flatter/src/widgets/framework.dart:3327:18)E/flatter(8982):#19 SingleChildRenderObjectElement。挂载(包:flatter/src/widgets/framework.dart:6118:14)E/flatter(8982):#20元素。充气小部件(包:flatter/src/widgets/framework.dart:3569:14)E/flatter(8982):#21元素。updateChild(包:flatter/src/widgets/framework.dart:3327:18)E/flatter(8982):#22组件元素。performRebuild(包:flatter/src/widgets/framework.dart:4652:16)E/flatter(8982):#23 StatefulElement。performRebuild(包:flatter/src/widgets/framework.dart:4800:11)E/flatter(8982):#24元素。重建(包:flatter/src/widgets/framework.dart:4343:5)E/flatter(8982):#25组件元素_firstBuild(包:flatter/src/widgets/framework.dart:4606:5)E/flatter(8982):#26 StatefulElement_firstBuild(包:flatter/src/widgets/framework.dart:4791:11)E/flatter(8982):#27组件元素。挂载(包:flatter/src/widgets/framework.dart:4601:5)E/flatter(8982):#28元素。充气小部件(包:flatter/src/widgets/framework.dart:3569:14)E/flatter(8982):#29元素。updateChild(包:flatter/src/widgets/framework.dart:3327:18)E/flatter(8982):#30 SingleChildRenderObjectElement。挂载(包:flatter/src/widgets/framework.dart:6118:14)E/flatter(8982):#31元素。充气小部件(包:flatter/src/widgets/framework.dart:3569:14)E/flatter(8982):#32元素。updateChild(包:flatter/src/widgets/framework.dart:3327:18)E/flatter(8982):#33 SingleChildRenderObjectElement。挂载(包:flatter/src/widgets/framework.dart:6118:14)E/flatter(8982):#34元素。充气小部件(包:flatter/src/widgets/framework.dart:3569:14)E/flatter(8982):#35元素。updateChild(包:flatter/src/widgets/framework.dart:3327:18)E/flatter(8982):#36组件元素。performRebuild(包:flatter/src/widgets/framework.dart:4652:16)E/flatter(8982):#37 StatefulElement。performRebuild(包:flatter/src/widgets/framework.dart:4800:11)E/flatter(8982):#38元素。重建(包:flatter/src/widgets/framework.dart:4343:5)E/flatter(8982):#39组件元素_firstBuild(包:flatter/src/widgets/framework.dart:4606:5)E/flatter(8982):#40 StatefulElement_firstBuild(包:flatter/src/widgets/framework.dart:4791:11)E/flatter(8982):#41组件元素。挂载(包:flatter/src/widgets/framework.dart:4601:5)E/flatter(8982):#42元素。充气小部件(包:flatter/src/widgets/framework.dart:3569:14)E/flatter(8982):#43元素。updateChild(包:flatter/src/widgets/framework.dart:3327:18)E/flatter(8982):#44组件元素。performRebuild(包:flatter/src/widgets/framework.dart:4652:16)E/flatter(8982):#45元素。R

共有1个答案

贺季
2023-03-14

你试图打印日志:

print(userName + ' userName in main');

userNamenull时:

dart prettyprint-override">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();
}
 类似资料:
  • 共享的首选项:^0.5。12 4 错误日志: 颤振sdk详细信息: [✓]Flutter(通道稳定,1.22.5,在Mac OS X 10.14.6 18G7016 darwin-x64,美国本地)Flutter版本1.22.5在 /Users/taleb/Developer/flutter框架修订7891006299 (6周前),2020-12-10 11:54:40 -0800引擎修订ae90

  • 我不知道该怎么办了 似乎在android 3.0及更高版本上工作得很好,但在android 2.3.3上,每次我启动应用程序时,它都会再次询问用户名/密码。 我正在使用共享偏好设置。 以下是我保存首选项的方式: 我是这样读的: 我还尝试使用以下代码保存首选项: 然后用这段代码读出来: 但这也不管用。 问题是在我重新启动应用程序之前,我可以看到它们仍然存在。然而,只要我重新启动,我就会得到用户名为“

  • 我使用flutter 1.2和我的项目运行成功之前,我添加shared_preferences包到它。我正在使用

  • 当我运行应用程序时,它卡住了 它永远不会初始化Gradle或依赖项

  • 我正在开发一个应用程序,我在共享偏好中保留布尔标志,以检查当前会话是否处于活动状态。基于此标志,用户将在显示闪屏后导航到主屏幕或登录屏幕。 这运行良好,但我们的一位客户报告说,即使在卸载和重新安装他的应用程序后,他的应用程序仍会让他的用户登录。 他跟随的步骤 安装应用程序 使用有效凭据登录 从设置中卸载应用程序 使用我提供的apk重新安装应用程序 打开应用程序 我认为当我们卸载应用程序时,其数据会

  • 我正试图从Flatter网站上消化以下信息。 Flutter如何在Android上运行我的代码? 引擎的C和C代码是用Android的NDK编译的。Dart代码(SDK和您的)是提前(AOT)编译到本机、ARM和x86库中的。这些库包含在一个“runner”Android项目中,整个项目都内置在一个APK中。启动时,应用程序将加载颤振库。任何呈现、输入或事件处理等都被委托给编译的flatter和应