Junior — Middle
Маслиҳат медиҳед, ки мисоли истифодаи InheritedWidget дар Flutter-ро диҳед?
sobes.tech AI
Ҷавоб аз AI
Дар Flutter, InheritedWidget истифода мешавад барои интиқоли маълумотҳо ба поён дар дарахти 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 метавонанд ба ранг дастрасӣ пайдо кунанд бидуни гузаронидани параметрҳо ба таври дастӣ.