Flutter

Flutter 本地存储值引导页和主页面切换

2019-09-26  本文已影响0人  fordG

在移动开发中,第一次安装应用时,引导页是必不可少的, 这里主要操作时,引导页和主页面的切换状态显示问题的实现, 本地存储使用到的是:

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^0.1.2

  #本地存储
  shared_preferences: ^0.5.3+4
  #获取版本号信息
 package_info: ^0.4.0+6
//入口控制页面

class Enter extends StatefulWidget {
  @override
  EnterState createState() {
    // TODO: implement createState
    return EnterState();
  }
}

class EnterState extends State<Enter> {

  //临时显示的Widget
  Widget homePage = new Container(color: HexColor("#ffffff"));

  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    //获取显示的页面
    mainPage();
  }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      home: homePage,
    );
  }


  mainPage() async {
    String currentVersion = await getVersion();
    String storageVersion = await getOldVersion();
    print(currentVersion+'/n'+storageVersion);
    setState(() {

      if(storageVersion == currentVersion){
        //版本号相同显示首页
        homePage = MainPage();
      }else{
        //版本号不一致, 显示引导页
        homePage = LaunchPage(callback: (){
          //引导页点击事件回调
          setState(() {
            homePage = MainPage();
          });
        },);
        //本地存储新的版本号
        setNewVersion();
      }
    });
  }

  //获取当前版本号
  Future<String>getVersion() async {
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    String appName = packageInfo.appName;
    String packageName = packageInfo.packageName;
    String version = packageInfo.version;
    String buildNumber = packageInfo.buildNumber;
    return version;
  }
  //获取旧版本号
  Future<String>getOldVersion()async{
    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    String version = sharedPreferences.getString('OLD_VERSION') ?? "";
    return version;
  }
  //设置新的版本号
  setNewVersion() async {
    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    PackageInfo packageInfo = await PackageInfo.fromPlatform();
    String version = packageInfo.version;
    sharedPreferences.setString("OLD_VERSION", version);
  }
}
切换的页面可以使用自己的, 效果时,通过版本号判断是否和当前版本号一致, 如果不一致,显示引导页!
上一篇下一篇

猜你喜欢

热点阅读