我对“加高”按钮的单击有疑问。 OnPressed()内部的方法没有被调用。理想情况下,我希望在OnPressed()方法上显示弹出窗口或滑块。我创建了示例以显示当前面临的问题。
main.dart文件调用Screen2()
import 'package:flutter/material.dart';
//import 'package:flutter_app/main1.dart';
import 'screen2.dart';
void main() => runApp(Lesson1());
class Lesson1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Screen2(),
);
}
}
,在Screen2()中,我只有一个RaisedButton和OnPressed(),它需要调用函数ButtonPressed()。
import 'package:flutter/material.dart';
class Screen2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blue,
title: Text('Screen 2'),
),
body: Center(
child: RaisedButton(
color: Colors.blue,
child: Text('Go Back To Screen 1'),
onPressed: () {
print('centrebutton');
ButtonPressed();
},
),
),
);
}
}
class ButtonPressed extends StatefulWidget {
@override
_ButtonPressedState createState() => _ButtonPressedState();
}
class _ButtonPressedState extends State<ButtonPressed> {
@override
Widget build(BuildContext context) {
print ('inside button press');
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.red,
title: Text('Screen 3'),
),
// create a popup to show some msg.
);
}
}
单击``升高''按钮后,打印语句(``centerbutton'')将被打印。
但是ButtonPressed()方法没有被调用。
我在控制台中看不到打印消息(“按下内部按钮”)。 Pl。让我看看ButtonPressed方法没有被调用的原因可能是什么。随附快照以供参考。
答案 0 :(得分:2)
您正在RaisedButton的onPressed方法上调用小部件。您的小部件正在被调用,但无法在屏幕上的任何位置呈现。
您应该在点击事件中调用一个函数来处理数据。但是您正在调用小部件或说出UI视图。
如果要导航到相应的屏幕,则应使用导航器。
例如:
onPressed: () {
print('centrebutton');
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => ButtonPressed()));
},
答案 1 :(得分:0)
这可能是一个原因:如果您有一个资产作为按钮的子级,而该资产不存在,则按下的按钮将无法工作。
解决方案:移除资产。
示例:
return RaisedButton(
splashColor: Colors.grey,
onPressed: () {
},
child: Padding(
padding: const EdgeInsets.fromLTRB(0, 10, 0, 10),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image(image: AssetImage("assets/google_logo.png"), height: 35.0), //remove this line
Padding(
padding: const EdgeInsets.only(left: 10),
child: Text(
'Sign in with Google',
style: TextStyle(
fontSize: 20,
color: Colors.grey,
),
),
)
],
),
),
);