Junior — Middle
Можеш ли да дадеш пример за използване на InheritedWidget във Flutter?
sobes.tech AI
Отговор от AI
InheritedWidget в Flutter се използва за предаване на данни надолу по дървото на widget-ите без необходимостта да ги предавате явно чрез конструкторите на всеки дете widget.
Пример за приложение: създаване на тема или настройки, които трябва да бъдат достъпни за много widget-и в приложението.
Прост пример — предаване на низ с настройка за цвят:
class MySettings extends InheritedWidget {
final Color color;
const MySettings({
Key? key,
required this.color,
required Widget child,
}) : super(key: key, child: child);
static MySettings? of(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<MySettings>();
}
@override
bool updateShouldNotify(MySettings oldWidget) => color != oldWidget.color;
}
// Използване:
class ColoredText extends StatelessWidget {
@override
Widget build(BuildContext context) {
final settings = MySettings.of(context);
return Text(
'Здравей, Flutter!',
style: TextStyle(color: settings?.color ?? Colors.black),
);
}
}
По този начин всички widget-и вътре в MySettings могат да получат достъп до цвета без да предават параметри ръчно.