我在我制作的闪屏页面中调用共享首选项
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
你试图打印日志:
print(userName + ' userName in main');
当userName
为null
时:
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和应