Эй, ребята, у меня есть (надеюсь, для вас простая) проблема. Как я могу запустить функцию из другого виджета? У меня есть StatelessWidget, откуда я хочу запустить функцию таймера, которая находится в StatefulWidget. Как я могу запустить таймер (который «есть» в statefulWidget) из statelessWidget? Я надеюсь, что вы понимаете мою проблему, если не скажите мне, пожалуйста, какие части кода вам нужны. Заранее спасибо!
[...]
void main() => runApp(
MaterialApp(
home: Workout1(),
routes: { "/home": (context) => Homescreen(),}
),
);
class Workout1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Title"),
),
body: BodyConstruction());
}
}
class BodyConstruction extends StatefulWidget {
@override
_BodyConstructionState createState() =>
_BodyConstructionState(); //the belongs to a "StatefulWidget"
}
class _BodyConstructionState extends State<BodyConstruction> {
int _time = 10;
[...]
void countdown() {
Timer.periodic(
Duration(seconds: 1),
(timer) {
setState(() {
_time--; //every second -1
});
@override
Widget build(BuildContext context) {
return Center(
child: Column(
children: <Widget>[
[...]
RaisedButton(
child: Text("Button"),
onPressed: () {
countdown(); //when tis button is pressed "countdown" is called
}),
Text(_time.toString()),
],
),
);
}
}
Вот код. Я надеюсь, что не буду удалять что-нибудь важное для вас, но в противном случае код был бы слишком длинным. Я хочу, чтобы таймер запускался при открытии этого экрана, а не при нажатии кнопки