欢迎来到「技术刚刚好」作者,「技术刚刚好」是个人维护,每天至少更新一篇Flutter技术文章,实时为大家播报Flutter最新消息。如果你刚好也在关注Flutter这门技术,那就跟我一起学习进步吧,你的赞,收藏,转发是对我个人最大的支持,维护不易,欢迎关注。
近几年,移动端跨平台开发技术层出不穷,从Facebook家的ReactNative,到阿里家WEEX,前端技术在移动端跨平台开发中大展身手,技术刚刚好作为一名Android开发,经历了从Reactjs到Vuejs的不断学习。而在2018年,我们的主角变成了Flutter,这是Goolge开源的一个移动端跨平台解决方案,可以快速开发精美的移动App。希望跟大家一起学习,一起进步!
本文会讲解在Flutter当中存储简单的数据,方便在Android,iOS 手机上读写简单的数据,
在简单示例中,假设您只想在电话上存储简单数据,以后再启动该应用程序时就可以引用该数据,然后共享首选项将帮助您在电话上存储数据。
iOS和macOS上的NSUserDefaults中的共享首选项,Android 上的SharedPreferences。
我相信做安卓 iOS 开发的应该知道这两个API
添加依赖:
首先,您需要将包名称添加 shared_preferences到Pubspec.yaml中
在dependencies: 您的 部分中 pubspec.yaml,将以下几行添加为“ 共享的偏好设置”:
现在在您的终端中运行 Flutter程序包 ,我们将安装该 shared_preferences程序包。
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: !isFirstScreen ? IntroScreen() : HomeScreen(),
);
}
}
在上述代码中,我们创建MyApp StatefulWidget,在home属性中,我们具有isFirsScreen。
要存储布尔值,我们需要创建变量isFirstScreen,如下所示:
bool isFirstScreen = false;
class IntroScreen extends StatefulWidget {
@override
_IntroScreenState createState() => _IntroScreenState();
}
class _IntroScreenState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text("Intro Screen"),
RaisedButton(
onPressed: () {},
child: Text("GO to HomeScreen"),
)
],
),
));
}
}
这个时候当我们进入项目就实现一次介绍。
当第二次进入就不显示了。
void gotoHomeScreen(context) async {
///Shared Preferences wiill stored types String , int , bool, double
SharedPreferences pref = await SharedPreferences.getInstance();
await pref.setBool('seen', true);
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (context) => HomeScreen(),
),
);
}class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text(
"Home Screen",
style: TextStyle(
fontSize: 30,
),
),
),
);
}
}然后,我们需要为此在MyApp中获取该密钥,我们需要在MyApp窗口小部件中创建checkFirstScreen。 Future checkFirstScreen() async { SharedPreferences pref = await SharedPreferences.getInstance(); //if First statement is Null Or NO Value then it will give us Second Value bool seen = (pref.getBool('seen') ?? false); if (seen) { setState(() { isFirstScreen = true; }); } else { setState(() { isFirstScreen = false; }); } }
Future checkFirstScreen() async {
SharedPreferences pref = await SharedPreferences.getInstance();
//if First statement is Null Or NO Value then it will give us Second Value
bool seen = (pref.getBool('seen') ?? false);
if (seen) {
setState(() {
isFirstScreen = true;
});
} else {
setState(() {
isFirstScreen = false;
});
}
}
这样就行了。
页面更新:2024-04-30
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号