Sobes.tech
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 метавонанд ба ранг дастрасӣ пайдо кунанд бидуни гузаронидани параметрҳо ба таври дастӣ.