Как получить доступ к InheritedWidget из InheritedWidget?

#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: ...  ) );