mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2024-11-25 00:40:39 +00:00
c66381f813
* sync with resources * separated `ExpandableSectionList` as widget * fixed generic type * implemented `FilmsScreen` (wip) * made `SliverScreen` title a widget * [`FilmEditScreen`] wip * [`FilmEditScreen`] added validation * fixed title overflow for `SliverScreen` * [`FilmEditScreen`] separated add and edit blocs * [`FilmEditScreen`] split into separate components * added bottom widget to `SliverScreen` * implemented films list tabs fo `FilmsScreen` * added films screen to navigation * replaced explicit routes names with enum values * implemented CRUD for custom films * added placeholder for empty custom films list * added `FilmsStorageService` * fixed unit tests * fixed integration tests * lint * fixed golden tests * added iap stub methods * added custom films to features list * use 2.0.0 resouces * fixed film picket tests * migrated to iap 1.0.1 * autofocus film name field * wait for the film to edited * migrated to iap 1.1.0 * typo * wait for storage initialization * migrated to iap 1.1.1 * fixed films initialization * added conditions to films model `updateShouldNotifyDependent` * typo * fixed select film discard notify * covered films model `updateShouldNotifyDependent`
31 lines
781 B
Dart
31 lines
781 B
Dart
import 'package:flutter/material.dart';
|
|
|
|
enum SelectableAspect { list, selected }
|
|
|
|
|
|
|
|
class SelectableInheritedModel<T> extends InheritedModel<SelectableAspect> {
|
|
const SelectableInheritedModel({
|
|
super.key,
|
|
required this.values,
|
|
required this.selected,
|
|
required super.child,
|
|
});
|
|
|
|
final List<T> values;
|
|
final T selected;
|
|
|
|
@override
|
|
bool updateShouldNotify(SelectableInheritedModel oldWidget) => true;
|
|
|
|
@override
|
|
bool updateShouldNotifyDependent(SelectableInheritedModel oldWidget, Set<SelectableAspect> dependencies) {
|
|
if (dependencies.contains(SelectableAspect.list)) {
|
|
return true;
|
|
} else if (dependencies.contains(SelectableAspect.selected)) {
|
|
return selected != oldWidget.selected;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|