fix peers view ChangeNotifierProvider update (#9459)

Signed-off-by: 21pages <sunboeasy@gmail.com>
This commit is contained in:
21pages 2024-09-25 15:11:11 +08:00 committed by GitHub
parent ce5151032e
commit 7c55e3266b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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<Peers>(
create: (context) => widget.peers,
return ChangeNotifierProvider<Peers>.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<Peers>(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(