Skip to content

Commit 170d7bc

Browse files
committed
Merge branch 'dev' of https://github.com/efoxTeam/flutter-ui into dev
# Conflicts: # pubspec.yaml
2 parents 058a8e0 + 337b1d8 commit 170d7bc

File tree

3 files changed

+160
-0
lines changed

3 files changed

+160
-0
lines changed

lib/store/provide.dart

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import './provide_model/user_model.dart' show UserModel;
2+
import './provide_model/config_model.dart' show ConfigModel;
3+
import 'package:provide/provide.dart'
4+
show
5+
Provider,
6+
Provide,
7+
ProviderNode,
8+
Providers,
9+
ProvideMulti,
10+
ProviderScope;
11+
import 'package:flutter/material.dart' show StreamBuilder;
12+
13+
//导出类型 以便全局调用
14+
export './provide_model/user_model.dart';
15+
export './provide_model/config_model.dart';
16+
17+
/**
18+
* import 'package:efox_flutter/store/provide.dart' as Store
19+
* Store.userModel
20+
* Store.configModel
21+
*/
22+
class Store {
23+
static init({model, child, dispose = true}) {
24+
Providers providers = Providers();
25+
UserModel userModel = UserModel();
26+
ConfigModel configModel = ConfigModel();
27+
providers
28+
..provide(Provider<UserModel>.value(userModel))
29+
..provide(Provider<ConfigModel>.value(configModel));
30+
return ProviderNode(
31+
child: child,
32+
providers: providers,
33+
dispose: dispose,
34+
);
35+
}
36+
37+
/**
38+
* 获取
39+
*/
40+
static get<T>(context, {scope}) => Provide.value<T>(context, scope: scope);
41+
/**
42+
* 监听
43+
*/
44+
static connect<T>({builder, child, scope}) {
45+
return Provide<T>(
46+
builder: builder,
47+
child: child,
48+
scope: scope,
49+
);
50+
}
51+
52+
/**
53+
* 通过流的方式 监听
54+
*/
55+
static stream<T>({builder, model, context}) {
56+
return StreamBuilder<T>(
57+
initialData: model,
58+
stream: Provide.stream<T>(context),
59+
builder: builder);
60+
}
61+
62+
/**
63+
* 链接多个类型
64+
*/
65+
static pm(
66+
{builder,
67+
child,
68+
List<Type> requestedValues,
69+
Map<ProviderScope, List<Type>> requestedScopedValues}) {
70+
return ProvideMulti(
71+
builder: builder,
72+
child: child,
73+
requestedValues: requestedValues,
74+
requestedScopedValues: requestedScopedValues);
75+
}
76+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import 'dart:convert';
2+
import 'package:efox_flutter/config/index.dart' as Config;
3+
import 'package:efox_flutter/store/index.dart' show model;
4+
import 'package:efox_flutter/utils/loadAsset.dart' show loadAssets;
5+
import 'package:efox_flutter/utils/localstage.dart' show LocalStorage;
6+
import 'package:package_info/package_info.dart' show PackageInfo;
7+
import 'package:flutter/material.dart' show ChangeNotifier;
8+
9+
class ConfigInfo {
10+
bool isPro = Config.isPro;
11+
String version = '1.0';
12+
dynamic env = Config.env;
13+
String theme = 'red';
14+
String appVersion = '-';
15+
}
16+
17+
ConfigInfo _appConfigInfo = new ConfigInfo();
18+
19+
class ConfigModel extends ChangeNotifier {
20+
get state => _appConfigInfo;
21+
22+
Future getAppVersion() async {
23+
PackageInfo packageInfo = await PackageInfo.fromPlatform();
24+
_appConfigInfo.appVersion = await packageInfo.version;
25+
}
26+
27+
Future getTheme() async {
28+
String theme = await LocalStorage.get('theme');
29+
if (theme != null) {
30+
_appConfigInfo.theme = theme;
31+
}
32+
}
33+
34+
dynamic getVersion() async {
35+
print('version ${model.config.state.env.versionUrl}');
36+
String _version =
37+
await loadAssets(model.config.state.env.versionUrl).then((resp) {
38+
Map<String, dynamic> res = json.decode(resp);
39+
return res['version'].toString() ?? '0.1';
40+
}).catchError((err) {
41+
print('err $err');
42+
return '0.0';
43+
});
44+
print('_version ${_version}');
45+
return _version;
46+
}
47+
48+
methods(name, payload) async {
49+
print('payload= $payload');
50+
51+
switch (name) {
52+
case 'setEnv':
53+
_appConfigInfo.isPro = payload;
54+
break;
55+
case 'setVersion':
56+
_appConfigInfo.version = await this.getVersion();
57+
break;
58+
case 'setTheme':
59+
_appConfigInfo.theme = payload;
60+
LocalStorage.set('theme', payload);
61+
break;
62+
case 'getTheme':
63+
await this.getTheme();
64+
break;
65+
}
66+
}
67+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import 'package:flutter/material.dart';
2+
import '../objects/user_info.dart';
3+
4+
class UserModel extends ChangeNotifier {
5+
UserInfo _userInfo = UserInfo();
6+
get userInfo => _userInfo;
7+
8+
Future getAction() async {
9+
_userInfo.loading = true;
10+
notifyListeners();
11+
}
12+
13+
void setAge() {
14+
_userInfo.age += 1;
15+
notifyListeners();
16+
}
17+
}

0 commit comments

Comments
 (0)