【发布时间】:2026-01-07 00:35:01
【问题描述】:
问题: 如何从 IconButton 的 onPressed() 调用 methodA()。 我试图通过使用 GlobalKey 来做到这一点: GlobalKey<_mybuttonstate> globalKey = GlobalKey(); 但它返回一个错误。
我已经阅读了很多关于此的论坛,并且我尝试了所有提出的解决方案,但没有一个对我有用。
代码:
main.dart
import 'package:flutter/material.dart';
import 'button.dart';
void main() {
runApp(MaterialApp( title: 'My app', home: MyApp(),));
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
leading: IconButton(
icon: Icon(Icons.help),
onPressed: () {
// how can I call methodA from here?
},
),
),
body: HomePage(),
),
);
}
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Center(
child: MyButton(),
);
}
}
button.dart
import 'package:flutter/material.dart';
class MyButton extends StatefulWidget {
@override
_MyButtonState createState() => _MyButtonState();
}
class _MyButtonState extends State<MyButton> {
@override
Widget build(BuildContext context) {
return Container( );
}
void methodA(){
print('methodA');
}
}
我已经阅读了很多关于此的论坛,并且我尝试了所有提出的解决方案,但没有一个对我有用。
【问题讨论】:
-
您在 button.dart 中使用有状态小部件是否有特殊原因?
-
如果当您按下 MyButton 时,尝试发送一个标志(触发器),例如 true 或 false。因此,如果您的 initstate 为 true,请运行您的方法 A。
标签: class flutter dart widget setstate