информацию между экранами - Инхириты или Провайдер ? или есть более удобные вещи?
Provider — это универсальный InheritedWidget, в который ты можешь через механизм generics подсунуть любой свой класс. Сделан для того, чтобы под каждый класс не писать отдельный InheritedWidget
все понял. Благодарю за совет, просто думал через инхириты расписывать все нужно .
InheritedWidget нужен, чтобы потом доставать его с помощью вот такой записи MyClass.of(context) Например, MediaQuery, ScaffoldMessenger, Theme — это всё InheritedWidget'ы. Проблема в том, что каждый раз его оформлять очень долго, нужно много писанины. Вот пример из доки: class FrogColor extends InheritedWidget { const FrogColor({ super.key, required this.color, required super.child, }); final Color color; static FrogColor? maybeOf(BuildContext context) { return context.dependOnInheritedWidgetOfExactType<FrogColor>(); } static FrogColor of(BuildContext context) { final FrogColor? result = maybeOf(context); assert(result != null, 'No FrogColor found in context'); return result!; } @override bool updateShouldNotify(FrogColor oldWidget) => color != oldWidget.color; } Поэтому придумали провайдер. Кладешь в него через Provider<FrogColor>(create: (_) => FrogColor()) Достаешь Provider.of<FrogColor>() или даже короче context.watch<FrogColor>()
благодарю за объяснение
Обсуждают сегодня