Commit f822dca6 authored by “Icebear”'s avatar “Icebear”

抽出Model的存储类,不需要单例类

parent 8d709232
...@@ -8,7 +8,7 @@ import 'laishanqi/layout_page.dart'; ...@@ -8,7 +8,7 @@ import 'laishanqi/layout_page.dart';
import 'laishanqi/netrain/user/loginPage.dart'; import 'laishanqi/netrain/user/loginPage.dart';
import 'laishanqi/netrain/user/RegisterPage.dart'; import 'laishanqi/netrain/user/RegisterPage.dart';
import 'laishanqi/photo.dart'; import 'laishanqi/photo.dart';
import 'zhangfeng/UserData.dart'; import 'zhangfeng/UserModel.dart';
import 'zhangfeng/LoginPage.dart'; import 'zhangfeng/LoginPage.dart';
...@@ -16,7 +16,7 @@ void main() { ...@@ -16,7 +16,7 @@ void main() {
runApp(MyApp()); runApp(MyApp());
// runApp(Login()); // runApp(Login());
// runApp(TestPage()); // runApp(TestPage());
UserData.instance; UserModel.getModel();
print("启动"); print("启动");
} }
...@@ -40,6 +40,7 @@ class MyApp extends StatelessWidget { ...@@ -40,6 +40,7 @@ class MyApp extends StatelessWidget {
"register": (context) => RegisterPage(), "register": (context) => RegisterPage(),
"login": (context) => LoginPage(), "login": (context) => LoginPage(),
"listPage":(context) => List_Page(), "listPage":(context) => List_Page(),
"LoginRequestPage":(context) => LoginRequestPage(),
"main": (context) => mainPage(), "main": (context) => mainPage(),
}, },
), ),
...@@ -88,7 +89,7 @@ class _RouterNavigatorState extends State<RouterNavigator> { ...@@ -88,7 +89,7 @@ class _RouterNavigatorState extends State<RouterNavigator> {
_item("layout页面", LayoutPage(), 'layout'), _item("layout页面", LayoutPage(), 'layout'),
_item("拍照页面", PhotoApp(), 'photo'), _item("拍照页面", PhotoApp(), 'photo'),
_item("登陆", LoginPage(), 'login'), _item("登陆", LoginPage(), 'login'),
_item("登录网络请求", LoginRequestPage(), 'loginRequest'), _item("登录网络请求", LoginRequestPage(), 'LoginRequestPage'),
_item("listview页面",List_Page(),'listPage'), _item("listview页面",List_Page(),'listPage'),
], ],
), ),
......
import 'Network/HttpManager.dart'; import 'Network/HttpManager.dart';
import 'Network/BaseHttpModel.dart'; import 'Network/BaseHttpModel.dart';
import 'UserModel.dart'; import 'UserModel.dart';
import 'UserData.dart'; import 'Network/SaveModel.dart';
/// 所有接口类 /// 所有接口类
class LoginApi { class LoginApi {
...@@ -10,7 +10,7 @@ class LoginApi { ...@@ -10,7 +10,7 @@ class LoginApi {
return HttpManager.getInstance().request('auth/oauth/token', parameters: param, onResult: (data,errorMsg){ return HttpManager.getInstance().request('auth/oauth/token', parameters: param, onResult: (data,errorMsg){
BaseHttpModel httpModel = data; BaseHttpModel httpModel = data;
UserModel userModel = UserModel.fromJson(httpModel.data); UserModel userModel = UserModel.fromJson(httpModel.data);
UserData.getInstance().saveUserModel(userModel); UserModel.saveModel(userModel);
if(onResult != null){ if(onResult != null){
onResult(data, errorMsg); onResult(data, errorMsg);
} }
......
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:netrain_flutter_app/zhangfeng/Network/HttpManager.dart'; import 'package:netrain_flutter_app/zhangfeng/Network/HttpManager.dart';
import 'package:netrain_flutter_app/zhangfeng/UserModel.dart';
import 'LoginApi.dart'; import 'LoginApi.dart';
import 'UserData.dart';
class LoginRequestPage extends StatefulWidget { class LoginRequestPage extends StatefulWidget {
final String title = "登录页"; final String title = "登录页";
...@@ -14,7 +14,7 @@ class LoginRequestPage extends StatefulWidget { ...@@ -14,7 +14,7 @@ class LoginRequestPage extends StatefulWidget {
class _LoginState extends State<LoginRequestPage> { class _LoginState extends State<LoginRequestPage> {
// This widget is the root of your application. // This widget is the root of your application.
void _loginAction() { void _loginAction() {
if(UserData.instance.userModel != null && UserData.instance.userModel.token != null){ if(UserModel.getModel() != null){
Fluttertoast.showToast(msg:'已经登录'); Fluttertoast.showToast(msg:'已经登录');
return; return;
} }
...@@ -35,7 +35,7 @@ class _LoginState extends State<LoginRequestPage> { ...@@ -35,7 +35,7 @@ class _LoginState extends State<LoginRequestPage> {
}); });
} }
void _logoutAction() { void _logoutAction() {
UserData.instance.removeUserModel(); UserModel.removeModel();
Fluttertoast.showToast(msg:'退出成功'); Fluttertoast.showToast(msg:'退出成功');
} }
......
import 'dart:convert'; import 'dart:convert';
import 'UserModel.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
class UserData { class SaveModel {
UserModel userModel; // factory UserData() => getInstance();
factory UserData() => getInstance(); // static UserData get instance => getInstance();
static UserData get instance => getInstance(); // static UserData _instance;
static UserData _instance; //
// static UserData getInstance() {
static UserData getInstance() { // if (_instance == null) {
if (_instance == null) { // _instance = new UserData._internal();
_instance = new UserData._internal(); // }
} // return _instance;
return _instance; // }
} //
// UserData._internal() {
UserData._internal() { //
// 初始化 // }
getUserModel();
}
saveUserModel(UserModel userModel) async { static saveModel(dynamic model,String modelName) async {
SharedPreferences pref= await SharedPreferences.getInstance(); SharedPreferences pref= await SharedPreferences.getInstance();
//将data转换成json字符串 //将data转换成json字符串
var jsonStr = json.encode(userModel); var jsonStr = json.encode(model);
pref.setString('UserModel',jsonStr); pref.setString(modelName,jsonStr);
this.userModel = userModel;
} }
// 读取 SharedPreferences // 读取 SharedPreferences
getUserModel() async { static Future<Map> getModel(String modelName) async {
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
final jsonStr = prefs.getString('UserModel'); final jsonStr = prefs.getString(modelName);
if(jsonStr != null && jsonStr.length > 0){ if(jsonStr != null && jsonStr.length > 0){
//先将json字符串转json //先将json字符串转json
Map json = jsonDecode(jsonStr); Map json = jsonDecode(jsonStr);
//将json转model return json;
final model = new UserModel.fromJson(json);
this.userModel = model;
} }
return null;
} }
removeUserModel() async{ static removeModel(String modelName) async{
SharedPreferences prefs = await SharedPreferences.getInstance(); SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('UserModel',""); prefs.setString(modelName,"");
this.userModel = null;
} }
} }
\ No newline at end of file
import 'package:json_annotation/json_annotation.dart'; import 'package:json_annotation/json_annotation.dart';
import 'package:netrain_flutter_app/zhangfeng/Network/SaveModel.dart';
part 'UserModel.g.dart'; part 'UserModel.g.dart';
@JsonSerializable() @JsonSerializable()
class UserModel{ class UserModel{
static UserModel sharedModelInstance_;
final token; final token;
final header; final header;
final tokenHead; final tokenHead;
...@@ -13,4 +16,25 @@ class UserModel{ ...@@ -13,4 +16,25 @@ class UserModel{
factory UserModel.fromJson(Map<String, dynamic> json) => _$UserModelFromJson(json); factory UserModel.fromJson(Map<String, dynamic> json) => _$UserModelFromJson(json);
Map<String, dynamic> toJson() => _$UserModelToJson(this); Map<String, dynamic> toJson() => _$UserModelToJson(this);
static UserModel getModel(){
if(sharedModelInstance_ == null){
SaveModel.getModel('UserModel').then((json) => {
if(json != null){
sharedModelInstance_ = new UserModel.fromJson(json)
}
});
}
return sharedModelInstance_;
}
static removeModel() {
SaveModel.removeModel('UserModel');
sharedModelInstance_ = null;
}
static saveModel(UserModel userModel){
sharedModelInstance_ = userModel;
SaveModel.saveModel(userModel,'UserModel');
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment