Изменение модели родительского виджета из дочернего
с использованием виджета Actions и модели Intent 🤯
Привет, разработчики Flutter! 👋 Сегодня мы рассмотрим интересный трюк, который поможет вам изменить модель родительского виджета из дочернего компонента. Это очень полезный навык при создании сложных интерфейсов. 📱
Основная идея
Используем виджет Actions и модель Intent для взаимодействия между родительским и дочерним компонентами.
Пример кода
Этот подход позволяет элегантно управлять состоянием родительского виджета из дочерних компонентов. 👍
Оцените новую рубрику FlutterPulseTips! 😊 Нам важно ваше мнение!
Все подобные новости вы можете найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #WidgetMagic #StateManagement #FlutterTips
с использованием виджета Actions и модели Intent 🤯
Привет, разработчики Flutter! 👋 Сегодня мы рассмотрим интересный трюк, который поможет вам изменить модель родительского виджета из дочернего компонента. Это очень полезный навык при создании сложных интерфейсов. 📱
Основная идея
Используем виджет Actions и модель Intent для взаимодействия между родительским и дочерним компонентами.
Пример кода
// Используем intent для изменения модели действия
class AppBarBuildIntent extends Intent {
final PreferredSizeWidget? appbar;
AppBarBuildIntent(this.appbar);
}
// Действие, которое можно вызвать из любого дочернего элемента
class BartAppbarAction extends Action<AppBarBuildIntent> {
final ValueNotifier<PreferredSizeWidget?> appbar;
BartAppbarAction(this.appbar);
@override
void invoke(covariant AppBarBuildIntent intent) {
this.appbar.value = intent.appbar;
}
}
class MyWidget extends StatelessWidget {
final ValueNotifier<PreferredSizeWidget?> appBarNotifier = ValueNotifier(null);
MyWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Actions(
actions: <Type, Action<Intent>>{
AppBarBuildIntent: BartAppbarAction(appBarNotifier),
},
child: AnimatedBuilder(
animation: appBarNotifier,
builder: (ctx, child) => ...,
),
);
}
}
// Вызов в дочернем элементе для изменения родителя (appBar)
Actions.invoke(context, AppBarBuildIntent(AppBar(title: Text("title text"))));
Этот подход позволяет элегантно управлять состоянием родительского виджета из дочерних компонентов. 👍
Оцените новую рубрику FlutterPulseTips! 😊 Нам важно ваше мнение!
Все подобные новости вы можете найти по хэштегу #FlutterPulseTips
#flutter #dart #flutterpulse #FlutterPulseTips #MobileDev #WidgetMagic #StateManagement #FlutterTips