Skip to content

Commit

Permalink
fix timeline page flick (Predidit#604)
Browse files Browse the repository at this point in the history
  • Loading branch information
Predidit committed Jan 14, 2025
1 parent b90bbcc commit 1e9c6b5
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 8 deletions.
10 changes: 8 additions & 2 deletions lib/pages/info/info_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,16 @@ abstract class _InfoController with Store {
// }
// }

Future<void> queryBangumiInfoByID(int id) async {
Future<void> queryBangumiInfoByID(int id, {String type = "init"}) async {
await BangumiHTTP.getBangumiInfoByID(id).then((value) {
if (value != null) {
bangumiItem = value;
if (type == "init") {
bangumiItem = value;
} else {
bangumiItem.summary = value.summary;
bangumiItem.tags = value.tags;
bangumiItem.rank = value.rank;
}
collectController.updateLocalCollect(bangumiItem);
}
});
Expand Down
9 changes: 6 additions & 3 deletions lib/pages/info/info_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,11 @@ class _InfoPageState extends State<InfoPage>
@override
void initState() {
super.initState();
// Because the gap between different bangumi API reponse is too large, sometimes we need to query the bangumi info again
// We need the type parameter to determine whether to attach the new data to the old data
// We can't generally replace the old data with the new data, because the old data containes images url, update them will cause the image to reload and flicker
if (infoController.bangumiItem.summary == '' || infoController.bangumiItem.tags.isEmpty) {
queryBangumiInfoByID(infoController.bangumiItem.id);
queryBangumiInfoByID(infoController.bangumiItem.id, type: 'attach');
}
queryManager = QueryManager();
queryManager.querySource(popularController.keyword);
Expand All @@ -57,9 +60,9 @@ class _InfoPageState extends State<InfoPage>
super.dispose();
}

Future<void> queryBangumiInfoByID(int id) async {
Future<void> queryBangumiInfoByID(int id, {String type = "init"}) async {
try {
await infoController.queryBangumiInfoByID(id);
await infoController.queryBangumiInfoByID(id, type: type);
setState(() {});
} catch (e) {
KazumiLogger().log(Level.error, e.toString());
Expand Down
2 changes: 0 additions & 2 deletions lib/pages/plugin_editor/plugin_view_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_mobx/flutter_mobx.dart';
import 'package:flutter_modular/flutter_modular.dart';
import 'package:kazumi/utils/logger.dart';
import 'package:kazumi/utils/utils.dart';
import 'package:kazumi/bean/dialog/dialog_helper.dart';
import 'package:kazumi/plugins/plugins.dart';
import 'package:kazumi/plugins/plugins_controller.dart';
import 'package:kazumi/bean/appbar/sys_app_bar.dart';
import 'package:logger/logger.dart';

class PluginViewPage extends StatefulWidget {
const PluginViewPage({super.key});
Expand Down
1 change: 0 additions & 1 deletion lib/plugins/plugins_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import 'package:kazumi/plugins/plugin_install_time_tracker.dart';
import 'package:kazumi/request/plugin.dart';
import 'package:kazumi/modules/plugin/plugin_http_module.dart';
import 'package:logger/logger.dart';
import 'package:path/path.dart' as path;
import 'package:kazumi/utils/logger.dart';
import 'package:kazumi/request/api.dart';

Expand Down

0 comments on commit 1e9c6b5

Please sign in to comment.