From 7c55e3266b1cf13a92e6973323aba3034651afb1 Mon Sep 17 00:00:00 2001 From: 21pages Date: Wed, 25 Sep 2024 15:11:11 +0800 Subject: [PATCH] fix peers view ChangeNotifierProvider update (#9459) Signed-off-by: 21pages --- flutter/lib/common/widgets/peers_view.dart | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/flutter/lib/common/widgets/peers_view.dart b/flutter/lib/common/widgets/peers_view.dart index b18de82d9..e80e5ffe3 100644 --- a/flutter/lib/common/widgets/peers_view.dart +++ b/flutter/lib/common/widgets/peers_view.dart @@ -128,8 +128,9 @@ class _PeersViewState extends State<_PeersView> // // Although `onWindowRestore()` is called after `onWindowBlur()` in my test, // we need the following comparison to ensure that `_isActive` is true in the end. - if (isWindows && DateTime.now().difference(_lastWindowRestoreTime) < - const Duration(milliseconds: 300)) { + if (isWindows && + DateTime.now().difference(_lastWindowRestoreTime) < + const Duration(milliseconds: 300)) { return; } _queryCount = _maxQueryCount; @@ -170,8 +171,9 @@ class _PeersViewState extends State<_PeersView> // We should avoid too many rebuilds. MacOS(m1, 14.6.1) on Flutter 3.19.6. // Continious rebuilds of `ChangeNotifierProvider` will cause memory leak. // Simple demo can reproduce this issue. - return ChangeNotifierProvider( - create: (context) => widget.peers, + return ChangeNotifierProvider.value( + // https://pub.dev/packages/provider: If you already have an object instance and want to expose it, it would be best to use the .value constructor of a provider. + value: widget.peers, child: Consumer(builder: (context, peers, child) { if (peers.peers.isEmpty) { gFFI.peerTabModel.setCurrentTabCachedPeers([]); @@ -186,7 +188,7 @@ class _PeersViewState extends State<_PeersView> ).paddingOnly(bottom: 10), Text( translate( - _emptyMessages[widget.peers.loadEvent] ?? 'Empty', + _emptyMessages[peers.loadEvent] ?? 'Empty', ), textAlign: TextAlign.center, style: TextStyle(