fixed superfluous selector rebuild
This commit is contained in:
parent
c495f113fa
commit
45153e94bb
3 changed files with 15 additions and 0 deletions
|
@ -26,6 +26,11 @@ class AlbumListPage extends StatelessWidget {
|
||||||
final source = context.read<CollectionSource>();
|
final source = context.read<CollectionSource>();
|
||||||
return Selector<Settings, Tuple3<AlbumChipGroupFactor, ChipSortFactor, Set<CollectionFilter>>>(
|
return Selector<Settings, Tuple3<AlbumChipGroupFactor, ChipSortFactor, Set<CollectionFilter>>>(
|
||||||
selector: (context, s) => Tuple3(s.albumGroupFactor, s.albumSortFactor, s.pinnedFilters),
|
selector: (context, s) => Tuple3(s.albumGroupFactor, s.albumSortFactor, s.pinnedFilters),
|
||||||
|
shouldRebuild: (t1, t2) {
|
||||||
|
// `Selector` by default uses `DeepCollectionEquality`, which does not go deep in collections within `TupleN`
|
||||||
|
const eq = DeepCollectionEquality();
|
||||||
|
return !(eq.equals(t1.item1, t2.item1) && eq.equals(t1.item2, t2.item2) && eq.equals(t1.item3, t2.item3));
|
||||||
|
},
|
||||||
builder: (context, s, child) {
|
builder: (context, s, child) {
|
||||||
return AnimatedBuilder(
|
return AnimatedBuilder(
|
||||||
animation: androidFileUtils.appNameChangeNotifier,
|
animation: androidFileUtils.appNameChangeNotifier,
|
||||||
|
|
|
@ -25,6 +25,11 @@ class CountryListPage extends StatelessWidget {
|
||||||
final source = context.read<CollectionSource>();
|
final source = context.read<CollectionSource>();
|
||||||
return Selector<Settings, Tuple2<ChipSortFactor, Set<CollectionFilter>>>(
|
return Selector<Settings, Tuple2<ChipSortFactor, Set<CollectionFilter>>>(
|
||||||
selector: (context, s) => Tuple2(s.countrySortFactor, s.pinnedFilters),
|
selector: (context, s) => Tuple2(s.countrySortFactor, s.pinnedFilters),
|
||||||
|
shouldRebuild: (t1, t2) {
|
||||||
|
// `Selector` by default uses `DeepCollectionEquality`, which does not go deep in collections within `TupleN`
|
||||||
|
const eq = DeepCollectionEquality();
|
||||||
|
return !(eq.equals(t1.item1, t2.item1) && eq.equals(t1.item2, t2.item2));
|
||||||
|
},
|
||||||
builder: (context, s, child) {
|
builder: (context, s, child) {
|
||||||
return StreamBuilder(
|
return StreamBuilder(
|
||||||
stream: source.eventBus.on<CountriesChangedEvent>(),
|
stream: source.eventBus.on<CountriesChangedEvent>(),
|
||||||
|
|
|
@ -25,6 +25,11 @@ class TagListPage extends StatelessWidget {
|
||||||
final source = context.read<CollectionSource>();
|
final source = context.read<CollectionSource>();
|
||||||
return Selector<Settings, Tuple2<ChipSortFactor, Set<CollectionFilter>>>(
|
return Selector<Settings, Tuple2<ChipSortFactor, Set<CollectionFilter>>>(
|
||||||
selector: (context, s) => Tuple2(s.tagSortFactor, s.pinnedFilters),
|
selector: (context, s) => Tuple2(s.tagSortFactor, s.pinnedFilters),
|
||||||
|
shouldRebuild: (t1, t2) {
|
||||||
|
// `Selector` by default uses `DeepCollectionEquality`, which does not go deep in collections within `TupleN`
|
||||||
|
const eq = DeepCollectionEquality();
|
||||||
|
return !(eq.equals(t1.item1, t2.item1) && eq.equals(t1.item2, t2.item2));
|
||||||
|
},
|
||||||
builder: (context, s, child) {
|
builder: (context, s, child) {
|
||||||
return StreamBuilder(
|
return StreamBuilder(
|
||||||
stream: source.eventBus.on<TagsChangedEvent>(),
|
stream: source.eventBus.on<TagsChangedEvent>(),
|
||||||
|
|
Loading…
Reference in a new issue