listen: false still rebuild
xxxxxxxxxx
/// PROVIDER FULL GUIDE! (Easy)
// 1) SETUP Model:
import 'package:flutter/foundation.dart';
class UniProvider with ChangeNotifier {
bool postUploaded = false;
// BASIC:
void updatePostUploaded(bool data) {
postUploaded = data;
notifyListeners();
}
// RECOMMNDED:
void updatePostUploaded(bool data, {bool notify = true}) {
postUploaded = data;
if(notify) notifyListeners();
}
}
xxxxxxxxxx
// 2) SETUP main.dart:
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => UniProvider()), // USE THIS.
// Provider.value(value: StreamModel().serverClient), // *ADVANCED*
// FutureProvider<List<Activity>?>.value(value: StreamModel().getFeedActivities(), initialData: const []), // *ADVANCED*
],
child: const App()),
);
xxxxxxxxxx
// 3) SETUP shortcuts:
extension ContextX on BuildContext{
UniProvider get uniProvider => Provider.of<UniProvider>(this, listen: false);
UniProvider get listenUniProvider => Provider.of<UniProvider>(this);
}
xxxxxxxxxx
// 4) Get values:
// Use HOT RESTART While switch methods!
// 4A: Get value & Done.
context.uniProvider.postUploaded;
// 4B: Get value & rebuild widget only when 5C is used. (new value)
context.listenUniProvider.postUploaded;
xxxxxxxxxx
// 5) update values:
// 5A NOT notify listener
context.uniProvider.postUploaded = true;
// 5B NOT notify listener
context.uniProvider.updatePostUploaded(true, notify: false);
// 5C Notify listener (4B)
context.uniProvider.updatePostUploaded(true);