Skip to content

Commit f0de6d0

Browse files
committed
调整 riverpod 细节
1 parent eb55432 commit f0de6d0

File tree

9 files changed

+192
-115
lines changed

9 files changed

+192
-115
lines changed

android/app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,11 @@
6060
<meta-data
6161
android:name="io.flutter.embedded_views_preview"
6262
android:value="true" />
63+
<meta-data
64+
android:name="io.flutter.embedding.android.DisableMergedPlatformUIThread"
65+
android:value="true" />
66+
<meta-data
67+
android:name="io.flutter.embedding.android.EnableImpeller"
68+
android:value="false" />
6369
</application>
6470
</manifest>

lib/page/my_page.dart

Lines changed: 26 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_redux/flutter_redux.dart';
3-
import 'package:flutter_riverpod/flutter_riverpod.dart';
43
import 'package:gsy_github_app_flutter/common/repositories/event_repository.dart';
54
import 'package:gsy_github_app_flutter/common/repositories/user_repository.dart';
65
import 'package:gsy_github_app_flutter/page/user/base_person_provider.dart';
7-
import 'package:gsy_github_app_flutter/provider/app_state_provider.dart';
86
import 'package:gsy_github_app_flutter/redux/gsy_state.dart';
97
import 'package:gsy_github_app_flutter/redux/user_redux.dart';
108
import 'package:gsy_github_app_flutter/common/style/gsy_style.dart';
@@ -118,7 +116,7 @@ class MyPageState extends BasePersonState<MyPage> {
118116
getUserOrg(_getUserName());
119117

120118
///获取用户仓库前100个star统计数据
121-
getHonor(globalContainer, _getUserName());
119+
getHonor();
122120
_refreshNotify();
123121
}
124122
return await _getDataLogic();
@@ -135,6 +133,11 @@ class MyPageState extends BasePersonState<MyPage> {
135133
@override
136134
bool get needHeader => false;
137135

136+
@override
137+
FetchHonorDataProvider get headerProvider {
138+
return fetchHonorDataProvider(_getUserName());
139+
}
140+
138141
@override
139142
void didChangeDependencies() {
140143
if (pullLoadWidgetControl.dataList.isEmpty) {
@@ -146,35 +149,26 @@ class MyPageState extends BasePersonState<MyPage> {
146149
@override
147150
Widget build(BuildContext context) {
148151
super.build(context); // See AutomaticKeepAliveClientMixin.
149-
return Consumer(
150-
builder: (BuildContext context, WidgetRef ref, Widget? child) {
151-
var result = ref.watch(fetchHonorDataProvider(_getUserName()));
152-
return StoreBuilder<GSYState>(
153-
builder: (context, store) {
154-
return GSYNestedPullLoadWidget(
155-
pullLoadWidgetControl,
156-
(BuildContext context, int index) => renderItem(
157-
index, store.state.userInfo!, beStaredCount, notifyColor, () {
152+
return StoreBuilder<GSYState>(
153+
builder: (context, store) {
154+
return GSYNestedPullLoadWidget(
155+
pullLoadWidgetControl,
156+
(BuildContext context, int index) => renderItem(
157+
index, store.state.userInfo!, beStaredCount, notifyColor, () {
158+
_refreshNotify();
159+
}, orgList),
160+
handleRefresh,
161+
onLoadMore,
162+
scrollController: scrollController,
163+
refreshKey: refreshIKey,
164+
headerSliverBuilder: (context, innerBoxIsScrolled) {
165+
return sliverBuilder(context, innerBoxIsScrolled,
166+
store.state.userInfo!, notifyColor, beStaredCount, () {
158167
_refreshNotify();
159-
}, orgList),
160-
handleRefresh,
161-
onLoadMore,
162-
scrollController: scrollController,
163-
refreshKey: refreshIKey,
164-
headerSliverBuilder: (context, innerBoxIsScrolled) {
165-
return sliverBuilder(
166-
context,
167-
innerBoxIsScrolled,
168-
store.state.userInfo!,
169-
notifyColor,
170-
beStaredCount,
171-
result.value, () {
172-
_refreshNotify();
173-
});
174-
},
175-
);
176-
},
177-
);
178-
});
168+
});
169+
},
170+
);
171+
},
172+
);
179173
}
180174
}

lib/page/trend/trend_user_page.dart

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,12 @@ class _TrendUserPageState extends ConsumerState<TrendUserPage> {
2424
}
2525

2626
Future<void> loadData(WidgetRef ref, {bool isRefresh = false}) async {
27+
/// getTrendUserProvider 这里只有一处地方使用,所以不需要做局部单实例共享
2728
final result = await ref.read(
28-
searchTrendUserRequestProvider("China", cursor: endCursor).future);
29+
searchTrendUserRequestProvider("China", isRefresh, cursor: endCursor)
30+
.future);
2931
if (result != null) {
3032
var (dataList, cursor) = result;
31-
var trendRef = ref.read(trendCNUserListProvider.notifier);
32-
if (isRefresh) {
33-
trendRef.setList(dataList);
34-
} else {
35-
trendRef.addList(dataList);
36-
}
37-
var _ = ref.refresh(trendCNUserListProvider.notifier);
3833
endCursor = cursor;
3934
}
4035
}

lib/page/trend/trend_user_provider.dart

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,20 @@ class TrendCNUserList extends _$TrendCNUserList {
3434

3535
@riverpod
3636
Future<(List<SearchUserQL>, String)?> searchTrendUserRequest(
37-
Ref ref, String location,
37+
Ref ref, String location, bool isRefresh,
3838
{String? cursor}) async {
3939
var result =
4040
await UserRepository.searchTrendUserRequest("China", cursor: cursor);
41-
return result.data;
41+
if (result.data != null) {
42+
var value = result.data;
43+
var trendRef = ref.read(trendCNUserListProvider.notifier);
44+
if (isRefresh) {
45+
trendRef.setList(value.$1);
46+
} else {
47+
trendRef.addList(value.$1);
48+
}
49+
var _ = ref.refresh(trendCNUserListProvider.notifier);
50+
return result.value;
51+
}
52+
return null;
4253
}

lib/page/trend/trend_user_provider.g.dart

Lines changed: 19 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/page/user/base_person_state.dart

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ import 'dart:async';
22

33
import 'package:flutter/material.dart';
44
import 'package:flutter/rendering.dart';
5-
import 'package:flutter_riverpod/flutter_riverpod.dart';
65
import 'package:gsy_github_app_flutter/common/repositories/user_repository.dart';
76
import 'package:gsy_github_app_flutter/model/Event.dart';
87
import 'package:gsy_github_app_flutter/model/User.dart';
98
import 'package:gsy_github_app_flutter/model/UserOrg.dart';
109
import 'package:gsy_github_app_flutter/common/utils/event_utils.dart';
1110
import 'package:gsy_github_app_flutter/common/utils/navigator_utils.dart';
1211
import 'package:gsy_github_app_flutter/page/user/base_person_provider.dart';
12+
import 'package:gsy_github_app_flutter/provider/app_state_provider.dart';
1313
import 'package:gsy_github_app_flutter/widget/gsy_event_item.dart';
14+
import 'package:gsy_github_app_flutter/widget/only_share_widget.dart';
1415
import 'package:gsy_github_app_flutter/widget/pull/nested/gsy_sliver_header_delegate.dart';
1516
import 'package:gsy_github_app_flutter/widget/pull/nested/nested_refresh.dart';
1617
import 'package:gsy_github_app_flutter/widget/state/gsy_list_state.dart';
@@ -67,6 +68,9 @@ abstract class BasePersonState<T extends StatefulWidget> extends State<T>
6768
@override
6869
bool get needHeader => true;
6970

71+
@protected
72+
FetchHonorDataProvider get headerProvider;
73+
7074
@protected
7175
getUserOrg(String? userName) {
7276
if (page <= 1 && userName != null) {
@@ -98,7 +102,6 @@ abstract class BasePersonState<T extends StatefulWidget> extends State<T>
98102
User userInfo,
99103
Color? notifyColor,
100104
String beStaredCount,
101-
HonorModel? honorModel,
102105
refreshCallBack) {
103106
double headerSize = 210;
104107
double bottomSize = 70;
@@ -152,10 +155,9 @@ abstract class BasePersonState<T extends StatefulWidget> extends State<T>
152155
return SizedBox.expand(
153156
child: Padding(
154157
padding: const EdgeInsets.only(bottom: 10, left: 0, right: 0),
155-
child: UserHeaderBottom(
156-
userInfo,
157-
honorModel,
158-
radius,
158+
child: OnlyShareInstanceWidget(
159+
value: headerProvider,
160+
child: UserHeaderBottom(userInfo, radius),
159161
),
160162
),
161163
);
@@ -187,8 +189,7 @@ abstract class BasePersonState<T extends StatefulWidget> extends State<T>
187189
}
188190

189191
///获取用户仓库前100个star统计数据
190-
getHonor(ProviderContainer ref, String name) async {
191-
var _ = ref.refresh(fetchHonorDataProvider(name));
192-
await ref.read(fetchHonorDataProvider(name).future);
192+
getHonor() async {
193+
var _ = globalContainer.refresh(headerProvider);
193194
}
194195
}

0 commit comments

Comments
 (0)