diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 8ca3f129..69f01889 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 084A20882202E4FD00428FF5 /* flutter go.png in Resources */ = {isa = PBXBuildFile; fileRef = 084A20872202E4FD00428FF5 /* flutter go.png */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; 333E5DAE7FC10AC69FEC26C0 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DDA792F029EDD7A11295D192 /* libPods-Runner.a */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; }; @@ -42,6 +43,7 @@ 084A20872202E4FD00428FF5 /* flutter go.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "flutter go.png"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; }; 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; @@ -453,7 +455,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterRookieBook; + PRODUCT_BUNDLE_IDENTIFIER = com.ali.flutterRookieBook; PRODUCT_NAME = "$(TARGET_NAME)"; VERSIONING_SYSTEM = "apple-generic"; }; @@ -477,7 +479,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterRookieBook; + PRODUCT_BUNDLE_IDENTIFIER = com.ali.flutterRookieBook; PRODUCT_NAME = "$(TARGET_NAME)"; VERSIONING_SYSTEM = "apple-generic"; }; diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard index dfd4ac9b..bb646759 100644 --- a/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -24,8 +24,10 @@ + + diff --git a/lib/main.dart b/lib/main.dart index 3eee4c35..dfc33e73 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -4,20 +4,31 @@ import 'package:flutter/rendering.dart'; 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() { + MyApp() { final router = new Router(); 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,18 +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); + 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 7190d3c2..92c53031 100644 --- a/lib/resources/shared_preferences_keys.dart +++ b/lib/resources/shared_preferences_keys.dart @@ -7,15 +7,24 @@ * tartget: xxx */ -import 'package:flutter/material.dart'; +//enum DateType { +// Int, +// Double, +// Bool, +// String, +// Dynamic +//} -class Demo extends StatefulWidget { - _Demo createState() => _Demo(); +//class spKey { +// String name; +// DateType type; +// +// spKey({this.name, this.type}); +//} + +class sharedPreferencesKeys { + /// boolean + /// 用于欢迎页面. 只有第一次访问才会显示. 或者手动将这个值设为false + static String showWelcome = 'loginWelcone'; } -class _Demo extends State { - - Widget build(BuildContext context) { - return Container(); - } -} diff --git a/lib/routers/application.dart b/lib/routers/application.dart index 35587d4d..64a25786 100644 --- a/lib/routers/application.dart +++ b/lib/routers/application.dart @@ -1,8 +1,11 @@ import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_go/utils/shared_preferences.dart'; class Application { static Router router; static TabController controller; + static SpUtil sharePeferences; + static Map github = { 'widgetsURL':'https://github.com/alibaba/flutter-go/blob/develop/lib/widgets/', //'develop':'https://github.com/alibaba-paimai-frontend/flutter-common-widgets-app/tree/develop/lib/widgets/', diff --git a/lib/utils/shared_preferences.dart b/lib/utils/shared_preferences.dart index e69de29b..9dee93d4 100644 --- a/lib/utils/shared_preferences.dart +++ b/lib/utils/shared_preferences.dart @@ -0,0 +1,119 @@ + +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(); + } + + static SharedPreferences _spf; + + + SpUtil._(); + + Future _init() async { + _spf = await SharedPreferences.getInstance(); + } + + static Future getInstance() async { + print("_instance>>$_instance"); + if (_instance == null) { + _instance = new SpUtil._(); + await _instance._init(); + + } + return _instance; + } + + static bool _beforCheck() { + if (_spf == null) { + return true; + } + return false; + } + // 判断是否存在数据 + bool hasKey(String key) { + Set keys = getKeys(); + return keys.contains(key); + } + + Set getKeys() { + if (_beforCheck()) return null; + return _spf.getKeys(); + } + + get(String key) { + if (_beforCheck()) return null; + return _spf.get(key); + } + + getString(String key) { + if (_beforCheck()) return null; + return _spf.getString(key); + } + + Future putString(String key, String value) { + if (_beforCheck()) return null; + return _spf.setString(key, value); + } + + bool getBool(String key) { + if (_beforCheck()) return null; + return _spf.getBool(key); + } + + Future putBool(String key, bool value) { + if (_beforCheck()) return null; + return _spf.setBool(key, value); + } + + int getInt(String key) { + if (_beforCheck()) return null; + return _spf.getInt(key); + } + + Future putInt(String key, int value) { + if (_beforCheck()) return null; + return _spf.setInt(key, value); + } + + double getDouble(String key) { + if (_beforCheck()) return null; + return _spf.getDouble(key); + } + + Future putDouble(String key, double value) { + if (_beforCheck()) return null; + return _spf.setDouble(key, value); + } + + List getStringList(String key) { + return _spf.getStringList(key); + } + + Future putStringList(String key, List value) { + if (_beforCheck()) return null; + return _spf.setStringList(key, value); + } + + dynamic getDynamic(String key) { + if (_beforCheck()) return null; + return _spf.get(key); + } + + + + Future remove(String key) { + if (_beforCheck()) return null; + return _spf.remove(key); + } + + 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,