diff --git a/lib/main.dart b/lib/main.dart index e95efc63..dfc33e73 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -5,9 +5,12 @@ import 'routers/routers.dart'; import 'routers/application.dart'; import 'package:flutter_go/utils/provider.dart'; import 'package:flutter_go/utils/shared_preferences.dart'; +import 'package:flutter_go/views/first_page/home.dart'; import 'views/welcome_page/index.dart'; const int ThemeColor = 0xFFC91B3A; +SpUtil sp; +var db; class MyApp extends StatelessWidget { MyApp() { @@ -15,9 +18,17 @@ class MyApp extends StatelessWidget { Routes.configureRoutes(router); Application.router = router; } - + showWelcomePage() { + bool showWelcome = sp.getBool(sharedPreferencesKeys.showWelcome); + if (showWelcome == null || showWelcome == true) { + return WelcomePage(); + } else { + return AppPage(); + } + } @override Widget build(BuildContext context) { + showWelcomePage(); return new MaterialApp( title: 'title', theme: new ThemeData( @@ -34,19 +45,18 @@ class MyApp extends StatelessWidget { ), ), home: new Scaffold( - body: new WelcomePage(), + body: showWelcomePage() ), onGenerateRoute: Application.router.generator, ); } } -var db; void main() async { final provider = new Provider(); await provider.init(true); - Application.sharePeferences = await SpUtil.instance; + sp = await SpUtil.getInstance(); db = Provider.db; runApp(new MyApp()); } diff --git a/lib/resources/shared_preferences_keys.dart b/lib/resources/shared_preferences_keys.dart index 87be28fe..92c53031 100644 --- a/lib/resources/shared_preferences_keys.dart +++ b/lib/resources/shared_preferences_keys.dart @@ -7,22 +7,24 @@ * tartget: xxx */ -enum DateType { - Int, - Double, - Bool, - String, - Dynamic -} +//enum DateType { +// Int, +// Double, +// Bool, +// String, +// Dynamic +//} -class spKey { - String name; - DateType type; - - spKey({this.name, this.type}); -} +//class spKey { +// String name; +// DateType type; +// +// spKey({this.name, this.type}); +//} class sharedPreferencesKeys { - static spKey loginWelcome = spKey(name: 'loginWelcone', type: DateType.Bool); + /// boolean + /// 用于欢迎页面. 只有第一次访问才会显示. 或者手动将这个值设为false + static String showWelcome = 'loginWelcone'; } diff --git a/lib/utils/shared_preferences.dart b/lib/utils/shared_preferences.dart index c8c96137..9dee93d4 100644 --- a/lib/utils/shared_preferences.dart +++ b/lib/utils/shared_preferences.dart @@ -1,13 +1,13 @@ import 'dart:async'; import 'package:shared_preferences/shared_preferences.dart'; - +export 'package:flutter_go/resources/shared_preferences_keys.dart'; /// /// 用来做shared_preferences的存储 class SpUtil { static SpUtil _instance; static Future get instance async { - return await _getInstance(); + return await getInstance(); } static SharedPreferences _spf; @@ -19,7 +19,8 @@ class SpUtil { _spf = await SharedPreferences.getInstance(); } - static Future _getInstance() async { + static Future getInstance() async { + print("_instance>>$_instance"); if (_instance == null) { _instance = new SpUtil._(); await _instance._init(); @@ -29,83 +30,90 @@ class SpUtil { } static bool _beforCheck() { - String a; if (_spf == null) { - return throw new StateError("SharedPreferences must be initialized first, but the insurance is null;"); + return true; } + return false; + } + // 判断是否存在数据 + bool hasKey(String key) { + Set keys = getKeys(); + return keys.contains(key); } - static Set getKeys() { + Set getKeys() { if (_beforCheck()) return null; return _spf.getKeys(); } - dynamic get(String key) { + + get(String key) { if (_beforCheck()) return null; - return _spf.getKeys(); + return _spf.get(key); } - static String getString(String key) { + + getString(String key) { if (_beforCheck()) return null; return _spf.getString(key); } - static Future putString(String key, String value) { + Future putString(String key, String value) { if (_beforCheck()) return null; return _spf.setString(key, value); } - static bool getBool(String key) { + bool getBool(String key) { if (_beforCheck()) return null; return _spf.getBool(key); } - static Future putBool(String key, bool value) { + Future putBool(String key, bool value) { if (_beforCheck()) return null; return _spf.setBool(key, value); } - static int getInt(String key) { + int getInt(String key) { if (_beforCheck()) return null; return _spf.getInt(key); } - static Future putInt(String key, int value) { + Future putInt(String key, int value) { if (_beforCheck()) return null; return _spf.setInt(key, value); } - static double getDouble(String key) { + double getDouble(String key) { if (_beforCheck()) return null; return _spf.getDouble(key); } - static Future putDouble(String key, double value) { + Future putDouble(String key, double value) { if (_beforCheck()) return null; return _spf.setDouble(key, value); } - static List getStringList(String key) { + List getStringList(String key) { return _spf.getStringList(key); } - static Future putStringList(String key, List value) { + Future putStringList(String key, List value) { if (_beforCheck()) return null; return _spf.setStringList(key, value); } - static dynamic getDynamic(String key) { + dynamic getDynamic(String key) { if (_beforCheck()) return null; return _spf.get(key); } - static Future remove(String key) { + Future remove(String key) { if (_beforCheck()) return null; return _spf.remove(key); } - static Future clear() { + Future clear() { if (_beforCheck()) return null; return _spf.clear(); } -} +} \ No newline at end of file diff --git a/lib/views/first_page/first_page.dart b/lib/views/first_page/first_page.dart index a7f8feb8..87847280 100644 --- a/lib/views/first_page/first_page.dart +++ b/lib/views/first_page/first_page.dart @@ -17,7 +17,7 @@ class FirstPage extends StatefulWidget { } class FirstPageState extends State with AutomaticKeepAliveClientMixin{ - Future _prefs=SharedPreferences.getInstance(); + Future _prefs = SharedPreferences.getInstance(); Future _unKnow; @override diff --git a/lib/views/fourth_page/pages.dart b/lib/views/fourth_page/pages.dart index dbc01b02..e9efb923 100644 --- a/lib/views/fourth_page/pages.dart +++ b/lib/views/fourth_page/pages.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import '../../routers/application.dart'; import '../../routers/routers.dart'; +import '../../utils/shared_preferences.dart'; final pages = [ new PageViewModel( @@ -30,7 +31,7 @@ final pages = [ class Page extends StatelessWidget { final PageViewModel viewModel; final double percentVisible; - + SpUtil sp; Page({ this.viewModel, this.percentVisible = 1.0, @@ -43,8 +44,10 @@ class Page extends StatelessWidget { Widget creatButton( BuildContext context, String txt, IconData iconName, String type) { return RaisedButton.icon( - onPressed: () { + onPressed: () async { if (type == 'start') { + await SpUtil.getInstance() + ..putBool(sharedPreferencesKeys.showWelcome, false); _goHomePage(context); } else if (type == 'goGithub') { Application.router.navigateTo(context,