#flutter #dart
Вопрос:
У меня есть унаследованный виджет, скажем, с картой строковых значений, которые я хочу передать дочерним виджетам. Я хотел бы иметь функцию для доступа к значению на карте ближайшего унаследованного виджета или продолжать движение вверх по дереву, если значение не найдено. Есть ли способ сделать это?
class MyInherited extends InheritedWidget { final Widget child; final Maplt;String, Stringgt; names; MyInherited(this.child, {this.names = const {}}) : super(child: child); @override bool updateShouldNotify(InheritedWidget oldWidget) =gt; names != oldWidget.names; static MyInherited? of(BuildContext context) =gt; context.dependOnInheritedWidgetOfExactTypelt;MyInheritedgt;(); // Something like this String? getName(String key) =gt; names[key] ?? nextUpChain.getValue(key); }
Так что в приведенном ниже примере, если я получу доступ к «key2» из второго унаследованного виджета, я получу «Пока», а если я получу доступ к «key1», я все равно получу «Привет, мир» от верхнего родителя.
MyInherited( names: { "key1": "Hello World", "key2": "Hi", }, child: MyInherited( names: { "key2": "Bye", } child: ... ) );