Как управлять кнопкой во внешнем виджете во flutter?

В Flutter управление кнопкой во внешнем виджете может быть достигнуто с помощью состояния (state).

Существует несколько шагов, которые необходимо выполнить, чтобы достичь этого:

1. Создайте новый виджет, в котором будет размещаться кнопка. Назовем его "MyButtonWidget".

Widget MyButtonWidget() {
return RaisedButton(
onPressed: () {
// Обработчик нажатия кнопки
},
child: Text('Нажми меня'),
);
}

2. Создайте новый виджет, который будет содержать MyButtonWidget и управлять его состоянием. Назовем его "MainWidget".

class MainWidget extends StatefulWidget {
@override
_MainWidgetState createState() => _MainWidgetState();
}

class _MainWidgetState extends State<MainWidget> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Моя кнопка'),
),
body: Center(
child: MyButtonWidget(),
),
);
}
}

3. Теперь, чтобы управлять кнопкой в MyButtonWidget, мы должны передать обратный вызов (callback) или функцию из MainWidget в MyButtonWidget.

class MainWidget extends StatefulWidget {
@override
_MainWidgetState createState() => _MainWidgetState();
}

class _MainWidgetState extends State<MainWidget> {
void onButtonPressed() {
// Вызывается при нажатии кнопки
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Моя кнопка'),
),
body: Center(
child: MyButtonWidget(
onPressed: onButtonPressed,
),
),
);
}
}

4. Теперь давайте передадим обратный вызов в MyButtonWidget и используем его внутри кнопки.

class MyButtonWidget extends StatelessWidget {
final VoidCallback onPressed;

MyButtonWidget({
required this.onPressed,
});

@override
Widget build(BuildContext context) {
return RaisedButton(
onPressed: onPressed,
child: Text('Нажми меня'),
);
}
}

Теперь, при нажатии кнопки, функция onButtonPressed будет вызываться, и вы сможете управлять кнопкой из MainWidget.