Skip to content

Commit 17b6fd5

Browse files
committed
fix: long list scaffold
1 parent af52d55 commit 17b6fd5

File tree

7 files changed

+32
-34
lines changed

7 files changed

+32
-34
lines changed

lib/models/github.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ class GithubNotificationItemSubject {
166166
int? _number;
167167
int? get number {
168168
if (_number == null) {
169-
_number = int.parse(url?.split('/')?.last ?? '0');
169+
_number = int.parse(url?.split('/').last ?? '0');
170170
}
171171
return _number;
172172
}

lib/scaffolds/long_list.dart

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ import '../widgets/link.dart';
99
import '../widgets/error_reload.dart';
1010

1111
class LongListPayload<T, K> {
12-
T? header;
13-
int? totalCount;
14-
String? cursor;
15-
List<K>? leadingItems;
12+
T header;
13+
int totalCount;
14+
String cursor;
15+
List<K> leadingItems;
1616
List<K>? trailingItems;
1717

1818
LongListPayload({
19-
this.header,
20-
this.totalCount,
21-
this.cursor,
22-
this.leadingItems,
19+
required this.header,
20+
required this.totalCount,
21+
required this.cursor,
22+
required this.leadingItems,
2323
this.trailingItems,
2424
});
2525
}
@@ -51,12 +51,12 @@ class LongListStatefulScaffold<T, K> extends StatefulWidget {
5151
}
5252

5353
class _LongListStatefulScaffoldState<T, K>
54-
extends State<LongListStatefulScaffold<T?, K>> {
54+
extends State<LongListStatefulScaffold<T, K>> {
5555
late bool loading;
5656
bool loadingMore = false;
5757
String error = '';
5858

59-
LongListPayload<T?, K>? payload;
59+
LongListPayload<T, K>? payload;
6060

6161
@override
6262
void initState() {
@@ -94,7 +94,7 @@ class _LongListStatefulScaffoldState<T, K>
9494
await widget.onLoadMore(payload!.cursor);
9595
payload!.totalCount = _payload.totalCount;
9696
payload!.cursor = _payload.cursor;
97-
payload!.leadingItems!.addAll(_payload.leadingItems!);
97+
payload!.leadingItems.addAll(_payload.leadingItems);
9898
} finally {
9999
if (mounted) {
100100
setState(() {
@@ -113,11 +113,11 @@ class _LongListStatefulScaffoldState<T, K>
113113

114114
int realIndex = index ~/ 2;
115115

116-
if (realIndex < payload!.leadingItems!.length) {
117-
return widget.itemBuilder(payload!.leadingItems![realIndex]);
118-
} else if (realIndex == payload!.leadingItems!.length) {
119-
var count = payload!.totalCount! -
120-
payload!.leadingItems!.length +
116+
if (realIndex < payload!.leadingItems.length) {
117+
return widget.itemBuilder(payload!.leadingItems[realIndex]);
118+
} else if (realIndex == payload!.leadingItems.length) {
119+
var count = payload!.totalCount -
120+
payload!.leadingItems.length +
121121
payload!.trailingItems!.length;
122122
return Container(
123123
padding: CommonStyle.padding,
@@ -150,13 +150,13 @@ class _LongListStatefulScaffoldState<T, K>
150150
);
151151
} else {
152152
return widget.itemBuilder(payload!
153-
.trailingItems![realIndex - payload!.leadingItems!.length - 1]);
153+
.trailingItems![realIndex - payload!.leadingItems.length - 1]);
154154
}
155155
}
156156

157157
int get _itemCount {
158-
int count = payload!.leadingItems!.length + payload!.trailingItems!.length;
159-
if (payload!.totalCount! > count) {
158+
int count = payload!.leadingItems.length + payload!.trailingItems!.length;
159+
if (payload!.totalCount > count) {
160160
count++;
161161
}
162162
return 2 * count; // including bottom border

lib/screens/ge_search.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class _GeSearchScreenState extends State<GeSearchScreen> {
2525
List<List> _payloads = [[], [], []];
2626

2727
TextEditingController? _controller;
28-
String get _keyword => _controller!.text?.trim() ?? '';
28+
String get _keyword => _controller!.text.trim();
2929

3030
@override
3131
void initState() {

lib/screens/gh_issue.dart

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class GhIssueScreen extends StatelessWidget {
8787
);
8888
}
8989

90-
Future<GIssueData_repository?> _queryIssue(BuildContext context,
90+
Future<GIssueData_repository> _queryIssue(BuildContext context,
9191
{String? cursor}) async {
9292
final req = GIssueReq((b) {
9393
b.vars.owner = owner;
@@ -97,7 +97,7 @@ class GhIssueScreen extends StatelessWidget {
9797
});
9898
OperationResponse<GIssueData, GIssueVars?> res =
9999
await context.read<AuthModel>().gqlClient!.request(req).first;
100-
return res.data!.repository;
100+
return res.data!.repository!;
101101
}
102102

103103
@override
@@ -257,15 +257,14 @@ class GhIssueScreen extends StatelessWidget {
257257
},
258258
itemBuilder: (p) => TimelineItem(p),
259259
onRefresh: () async {
260-
final res =
261-
await (_queryIssue(context) as Future<GIssueData_repository>);
260+
final res = await _queryIssue(context);
262261
if (res.issueOrPullRequest!.G__typename == 'Issue') {
263262
final issue = res.issueOrPullRequest
264263
as GIssueData_repository_issueOrPullRequest__asIssue;
265264
return LongListPayload(
266265
header: res,
267266
totalCount: issue.timelineItems.totalCount,
268-
cursor: issue.timelineItems.pageInfo.endCursor,
267+
cursor: issue.timelineItems.pageInfo.endCursor!,
269268
leadingItems: issue.timelineItems.nodes!.toList(),
270269
trailingItems: [],
271270
);
@@ -275,22 +274,21 @@ class GhIssueScreen extends StatelessWidget {
275274
return LongListPayload(
276275
header: res,
277276
totalCount: pr.timelineItems.totalCount,
278-
cursor: pr.timelineItems.pageInfo.endCursor,
277+
cursor: pr.timelineItems.pageInfo.endCursor!,
279278
leadingItems: pr.timelineItems.nodes!.toList(),
280279
trailingItems: [],
281280
);
282281
}
283282
},
284283
onLoadMore: (_cursor) async {
285-
final res = await (_queryIssue(context, cursor: _cursor)
286-
as Future<GIssueData_repository>);
284+
final res = await _queryIssue(context, cursor: _cursor);
287285
if (res.issueOrPullRequest!.G__typename == 'Issue') {
288286
final issue = res.issueOrPullRequest
289287
as GIssueData_repository_issueOrPullRequest__asIssue;
290288
return LongListPayload(
291289
header: res,
292290
totalCount: issue.timelineItems.totalCount,
293-
cursor: issue.timelineItems.pageInfo.endCursor,
291+
cursor: issue.timelineItems.pageInfo.endCursor!,
294292
leadingItems: issue.timelineItems.nodes!.toList(),
295293
);
296294
} else {
@@ -299,7 +297,7 @@ class GhIssueScreen extends StatelessWidget {
299297
return LongListPayload(
300298
header: res,
301299
totalCount: pr.timelineItems.totalCount,
302-
cursor: pr.timelineItems.pageInfo.endCursor,
300+
cursor: pr.timelineItems.pageInfo.endCursor!,
303301
leadingItems: pr.timelineItems.nodes!.toList(),
304302
);
305303
}

lib/screens/gh_repo.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ class GhRepoScreen extends StatelessWidget {
270270
leftIconData: Octicons.history,
271271
text: Text(AppLocalizations.of(context)!.commits),
272272
rightWidget: Text(
273-
((ref.target as GRepoCommit).history?.totalCount ?? 0)
273+
((ref.target as GRepoCommit).history.totalCount)
274274
.toString()),
275275
url: '/github/$owner/$name/commits/${ref.name}',
276276
),

lib/screens/gh_search.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class _GhSearchScreenState extends State<GhSearchScreen> {
2525

2626
TextEditingController? _controller;
2727

28-
String get _keyword => _controller!.text?.trim() ?? '';
28+
String get _keyword => _controller!.text.trim();
2929

3030
@override
3131
void initState() {

lib/screens/gl_search.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class _GlSearchScreenState extends State<GlSearchScreen> {
2626

2727
TextEditingController? _controller;
2828

29-
String get _keyword => _controller!.text?.trim() ?? '';
29+
String get _keyword => _controller!.text.trim();
3030

3131
@override
3232
void initState() {

0 commit comments

Comments
 (0)