Flutter Pulse
500 subscribers
305 photos
643 links
На канале будут новости про flutter с сайтов, информация об обновлении пакетов, а также авторский контент.
Download Telegram
Изменение модели родительского виджета из дочернего
с использованием виджета 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