Sobes.tech
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 могат да получат достъп до цвета без да предават параметри ръчно.