|
| 1 | +import 'package:flutter/material.dart' show StreamBuilder; |
1 | 2 | import 'package:provide/provide.dart' |
2 | | - show Provider, Providers, ProviderNode, Provide; |
3 | | -// import 'package:flutter/material.dart' show StreamBuilder; |
| 3 | + show |
| 4 | + Provider, |
| 5 | + Provide, |
| 6 | + ProviderNode, |
| 7 | + Providers, |
| 8 | + ProvideMulti, |
| 9 | + ProviderScope; |
| 10 | +export 'package:provide/provide.dart'; |
4 | 11 | import './models/config_state_model.dart' show ConfigModel; |
5 | 12 | import './models/user_model.dart' show UserModel; |
6 | 13 | import './models/author_state_model.dart' show AuthorModel; |
7 | 14 | export './models/config_state_model.dart' show ConfigModel; |
8 | 15 | export './models/user_model.dart' show UserModel; |
9 | 16 | export './models/author_state_model.dart' show AuthorModel; |
10 | | -export 'package:provide/provide.dart' |
11 | | - show Provider, Providers, ProviderNode, Provide; |
12 | 17 |
|
13 | 18 | class Store { |
14 | | - static init({child}) { |
| 19 | + static init({model, child, dispose = true}) { |
15 | 20 | final providers = Providers() |
16 | 21 | ..provide(Provider.value(ConfigModel())) |
17 | 22 | ..provide(Provider.value(UserModel())) |
18 | 23 | ..provide(Provider.value(AuthorModel())); |
19 | | - print('store init'); |
20 | | - return ProviderNode(providers: providers, child: child); |
| 24 | + |
| 25 | + return ProviderNode( |
| 26 | + child: child, |
| 27 | + providers: providers, |
| 28 | + dispose: dispose, |
| 29 | + ); |
21 | 30 | } |
| 31 | + |
| 32 | + /** |
| 33 | + * 获取 |
| 34 | + */ |
22 | 35 | static valueNotContext<T>(value) { |
23 | 36 | return Providers().provideValue<T>(value); |
24 | 37 | } |
25 | | - static value<T>(context) { |
26 | | - return Provide.value<T>(context); |
| 38 | + |
| 39 | + /** |
| 40 | + * 根据 Context 获取 |
| 41 | + */ |
| 42 | + static value<T>(context, {scope}) { |
| 43 | + return Provide.value<T>(context, scope: scope); |
| 44 | + } |
| 45 | + |
| 46 | + /** |
| 47 | + * 监听 |
| 48 | + */ |
| 49 | + static connect<T>({builder, child, scope}) { |
| 50 | + return Provide<T>( |
| 51 | + builder: builder, |
| 52 | + child: child, |
| 53 | + scope: scope, |
| 54 | + ); |
27 | 55 | } |
28 | 56 |
|
29 | | - static connect<T>({builder}) { |
30 | | - return Provide<T>(builder: builder); |
| 57 | + /** |
| 58 | + * 通过流的方式 监听 |
| 59 | + */ |
| 60 | + static stream<T>({builder, model, context}) { |
| 61 | + return StreamBuilder<T>( |
| 62 | + initialData: model, |
| 63 | + stream: Provide.stream<T>(context), |
| 64 | + builder: builder); |
31 | 65 | } |
32 | 66 |
|
| 67 | + /** |
| 68 | + * 链接多个类型 |
| 69 | + */ |
| 70 | + static multi( |
| 71 | + {builder, |
| 72 | + child, |
| 73 | + List<Type> requestedValues, |
| 74 | + Map<ProviderScope, List<Type>> requestedScopedValues}) { |
| 75 | + return ProvideMulti( |
| 76 | + builder: builder, |
| 77 | + child: child, |
| 78 | + requestedValues: requestedValues, |
| 79 | + requestedScopedValues: requestedScopedValues); |
| 80 | + } |
33 | 81 | // static connect({context, builder, child}) { |
34 | 82 | // final currentCounter = Provide.value<Counter>(context); |
35 | 83 | // print('currentCounter ${currentCounter} '); |
|
0 commit comments