【发布时间】:2020-10-23 17:19:28
【问题描述】:
我正在创建一个具有开始按钮(StartButton 类)的应用程序,并且我希望该按钮调用另一个类(NewRide 类)的方法,但是如何从另一个文件调用 void 函数?
class StartButton extends StatefulWidget{
@override
_StartButtonState createState() => _StartButtonState();
}
class _StartButtonState extends State<StartButton> {
String _driverState = 'offline';
@override
Widget build(context){
return FlatButton(
child: Text('Start'),
onPressed: (){
setState(() {
if (_driverState == 'offline') {
_driverState = 'online';
} else {
_driverState = 'offline';
}
});
},
);
}
}
这是 New Ride 课程,它具有我想在按下开始按钮时调用的 void 函数。
class NewRide extends StatefulWidget {
@override
_NewRideState createState() => _NewRideState();
}
class _NewRideState extends State<NewRide> {
int _counter = 60;
Timer _timer;
@override
Widget build(BuildContext context) {
void startTimer() {
_counter = 60;
if (_timer != null) {
_timer.cancel();
}
_timer = Timer.periodic(Duration(seconds: 1), (timer) {
setState(() {
if (_counter > 0) {
_counter--;
} else {
_timer.cancel();
}
});
});
}
_showNewRideAlert() {
if (_counter == 0) {
return Text('Counter == 0');
} else {
return Text('Counter != 0');
}
}
return _showNewRideAlert();
}
}
【问题讨论】:
-
这是为了实验目的吗?如果不是,如果我必须在两个小部件之间共享任何状态/功能,我会使用提供者之类的东西。
-
是的,我想学习如何从另一个类中访问某个类中的某些内容。
-
startTimer被声明为build方法中的本地函数。不可能从另一个文件或真正从build方法之外的任何地方调用它。