diff --git a/lib/models/github.dart b/lib/models/github.dart index 8737fc8..2fde15b 100644 --- a/lib/models/github.dart +++ b/lib/models/github.dart @@ -166,7 +166,7 @@ class GithubNotificationItemSubject { int? _number; int? get number { if (_number == null) { - _number = int.parse(url?.split('/')?.last ?? '0'); + _number = int.parse(url?.split('/').last ?? '0'); } return _number; } diff --git a/lib/scaffolds/long_list.dart b/lib/scaffolds/long_list.dart index e858a93..081e78f 100644 --- a/lib/scaffolds/long_list.dart +++ b/lib/scaffolds/long_list.dart @@ -9,17 +9,17 @@ import '../widgets/link.dart'; import '../widgets/error_reload.dart'; class LongListPayload { - T? header; - int? totalCount; - String? cursor; - List? leadingItems; + T header; + int totalCount; + String cursor; + List leadingItems; List? trailingItems; LongListPayload({ - this.header, - this.totalCount, - this.cursor, - this.leadingItems, + required this.header, + required this.totalCount, + required this.cursor, + required this.leadingItems, this.trailingItems, }); } @@ -51,12 +51,12 @@ class LongListStatefulScaffold extends StatefulWidget { } class _LongListStatefulScaffoldState - extends State> { + extends State> { late bool loading; bool loadingMore = false; String error = ''; - LongListPayload? payload; + LongListPayload? payload; @override void initState() { @@ -94,7 +94,7 @@ class _LongListStatefulScaffoldState await widget.onLoadMore(payload!.cursor); payload!.totalCount = _payload.totalCount; payload!.cursor = _payload.cursor; - payload!.leadingItems!.addAll(_payload.leadingItems!); + payload!.leadingItems.addAll(_payload.leadingItems); } finally { if (mounted) { setState(() { @@ -113,11 +113,11 @@ class _LongListStatefulScaffoldState int realIndex = index ~/ 2; - if (realIndex < payload!.leadingItems!.length) { - return widget.itemBuilder(payload!.leadingItems![realIndex]); - } else if (realIndex == payload!.leadingItems!.length) { - var count = payload!.totalCount! - - payload!.leadingItems!.length + + if (realIndex < payload!.leadingItems.length) { + return widget.itemBuilder(payload!.leadingItems[realIndex]); + } else if (realIndex == payload!.leadingItems.length) { + var count = payload!.totalCount - + payload!.leadingItems.length + payload!.trailingItems!.length; return Container( padding: CommonStyle.padding, @@ -150,13 +150,13 @@ class _LongListStatefulScaffoldState ); } else { return widget.itemBuilder(payload! - .trailingItems![realIndex - payload!.leadingItems!.length - 1]); + .trailingItems![realIndex - payload!.leadingItems.length - 1]); } } int get _itemCount { - int count = payload!.leadingItems!.length + payload!.trailingItems!.length; - if (payload!.totalCount! > count) { + int count = payload!.leadingItems.length + payload!.trailingItems!.length; + if (payload!.totalCount > count) { count++; } return 2 * count; // including bottom border diff --git a/lib/screens/ge_search.dart b/lib/screens/ge_search.dart index 0c14b68..9c85013 100644 --- a/lib/screens/ge_search.dart +++ b/lib/screens/ge_search.dart @@ -25,7 +25,7 @@ class _GeSearchScreenState extends State { List _payloads = [[], [], []]; TextEditingController? _controller; - String get _keyword => _controller!.text?.trim() ?? ''; + String get _keyword => _controller!.text.trim(); @override void initState() { diff --git a/lib/screens/gh_issue.dart b/lib/screens/gh_issue.dart index 6d757d3..d4ce060 100644 --- a/lib/screens/gh_issue.dart +++ b/lib/screens/gh_issue.dart @@ -87,7 +87,7 @@ class GhIssueScreen extends StatelessWidget { ); } - Future _queryIssue(BuildContext context, + Future _queryIssue(BuildContext context, {String? cursor}) async { final req = GIssueReq((b) { b.vars.owner = owner; @@ -97,7 +97,7 @@ class GhIssueScreen extends StatelessWidget { }); OperationResponse res = await context.read().gqlClient!.request(req).first; - return res.data!.repository; + return res.data!.repository!; } @override @@ -257,15 +257,14 @@ class GhIssueScreen extends StatelessWidget { }, itemBuilder: (p) => TimelineItem(p), onRefresh: () async { - final res = - await (_queryIssue(context) as Future); + final res = await _queryIssue(context); if (res.issueOrPullRequest!.G__typename == 'Issue') { final issue = res.issueOrPullRequest as GIssueData_repository_issueOrPullRequest__asIssue; return LongListPayload( header: res, totalCount: issue.timelineItems.totalCount, - cursor: issue.timelineItems.pageInfo.endCursor, + cursor: issue.timelineItems.pageInfo.endCursor!, leadingItems: issue.timelineItems.nodes!.toList(), trailingItems: [], ); @@ -275,22 +274,21 @@ class GhIssueScreen extends StatelessWidget { return LongListPayload( header: res, totalCount: pr.timelineItems.totalCount, - cursor: pr.timelineItems.pageInfo.endCursor, + cursor: pr.timelineItems.pageInfo.endCursor!, leadingItems: pr.timelineItems.nodes!.toList(), trailingItems: [], ); } }, onLoadMore: (_cursor) async { - final res = await (_queryIssue(context, cursor: _cursor) - as Future); + final res = await _queryIssue(context, cursor: _cursor); if (res.issueOrPullRequest!.G__typename == 'Issue') { final issue = res.issueOrPullRequest as GIssueData_repository_issueOrPullRequest__asIssue; return LongListPayload( header: res, totalCount: issue.timelineItems.totalCount, - cursor: issue.timelineItems.pageInfo.endCursor, + cursor: issue.timelineItems.pageInfo.endCursor!, leadingItems: issue.timelineItems.nodes!.toList(), ); } else { @@ -299,7 +297,7 @@ class GhIssueScreen extends StatelessWidget { return LongListPayload( header: res, totalCount: pr.timelineItems.totalCount, - cursor: pr.timelineItems.pageInfo.endCursor, + cursor: pr.timelineItems.pageInfo.endCursor!, leadingItems: pr.timelineItems.nodes!.toList(), ); } diff --git a/lib/screens/gh_repo.dart b/lib/screens/gh_repo.dart index 768dee1..dea0265 100644 --- a/lib/screens/gh_repo.dart +++ b/lib/screens/gh_repo.dart @@ -270,7 +270,7 @@ class GhRepoScreen extends StatelessWidget { leftIconData: Octicons.history, text: Text(AppLocalizations.of(context)!.commits), rightWidget: Text( - ((ref.target as GRepoCommit).history?.totalCount ?? 0) + ((ref.target as GRepoCommit).history.totalCount) .toString()), url: '/github/$owner/$name/commits/${ref.name}', ), diff --git a/lib/screens/gh_search.dart b/lib/screens/gh_search.dart index 5346426..bd48733 100644 --- a/lib/screens/gh_search.dart +++ b/lib/screens/gh_search.dart @@ -25,7 +25,7 @@ class _GhSearchScreenState extends State { TextEditingController? _controller; - String get _keyword => _controller!.text?.trim() ?? ''; + String get _keyword => _controller!.text.trim(); @override void initState() { diff --git a/lib/screens/gl_search.dart b/lib/screens/gl_search.dart index b232344..66e39bc 100644 --- a/lib/screens/gl_search.dart +++ b/lib/screens/gl_search.dart @@ -26,7 +26,7 @@ class _GlSearchScreenState extends State { TextEditingController? _controller; - String get _keyword => _controller!.text?.trim() ?? ''; + String get _keyword => _controller!.text.trim(); @override void initState() {