我正在创建一个具有开始按钮(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';
}
});
},
);
}
}
这是“新骑”类,它具有我按开始按钮时要调用的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();
}
}
答案 0 :(得分:1)
首先将另一个文件/类导入主类(我不确定您的文件名为什么)。
import '.../newRide.dart' as newRide;
然后像这样调用函数:
newRide._showNewRideAlert();
由于类/状态的设置,它可能不起作用(将不会构建窗口小部件)。因此,您可能必须将代码移到可调用的位置,例如类的顶部,或将函数实现到使用它的页面中。
答案 1 :(得分:1)
使用 GlobalKey 并公开startTimer并将NewRideState更改为_ NewRideState
python example.py