diff --git a/lib/providers/html_parser_provider.dart b/lib/providers/html_parser_provider.dart index b4b0e7d8..1a5cef02 100644 --- a/lib/providers/html_parser_provider.dart +++ b/lib/providers/html_parser_provider.dart @@ -12,7 +12,7 @@ class HtmlParser extends _$HtmlParser { @override void build() {} - uh.HtmlDocument parseResp(Response resp) { + uh.HtmlDocument parseResp(Response resp, {bool syncServerTime = true}) { final doc = parseHtmlDocument((resp.data ?? '') as String); final serverTime = doc .querySelector('p.xs0') @@ -24,7 +24,9 @@ class HtmlParser extends _$HtmlParser { ?.trim() .parseToDateTimeUtc8() ?? DateTime.now(); - ref.read(serverDateTimeProvider.notifier).state = serverTime; + if (syncServerTime) { + ref.read(serverDateTimeProvider.notifier).state = serverTime; + } return doc; } } diff --git a/lib/screens/notice/notice_detail_page.dart b/lib/screens/notice/notice_detail_page.dart index d1f9871a..55a90bc9 100644 --- a/lib/screens/notice/notice_detail_page.dart +++ b/lib/screens/notice/notice_detail_page.dart @@ -183,8 +183,10 @@ class _NoticeDetailPage extends ConsumerState { } if (snapshot.hasData) { final data = snapshot.data!; - final document = - ref.read(htmlParserProvider.notifier).parseResp(data); + // Here we are in a future builder, where should avoid modifying providers, skip sync server time here. + final document = ref + .read(htmlParserProvider.notifier) + .parseResp(data, syncServerTime: false); return _buildBody(context, document); } return Center(