flutter - 如何从另一个文件调用函数
问题描述
我有两个不同的 .dart 文件。
侧边栏文件,这个类中有一个函数来做某事
class SideBar extends StatefulWidget {
@override
_SideBarState createState() => _SideBarState();
}
class _SideBarState extends State<SideBar>
with SingleTickerProviderStateMixin<SideBar> {
void onIconPressed() {
print('123');
}
}
主屏幕文件;
class HomeScreen extends StatelessWidget {
static String routeName = "/HomeScreen";
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async => false,
child: Scaffold(
appBar: AppBar(
leading: Builder(
builder: (BuildContext context) {
return IconButton(
icon: const Icon(Icons.menu),
onPressed: (){ }, ///////////////////////where i try to implement function
我想在另一个文件中调用这个函数。我尝试将 sidebar.dart 文件导入为侧边栏。然后调用 sidebar.onIconPressed() 之类的函数,但没有任何效果。我查看了小部件通信的东西,但无法得到它。有什么简单的方法可以解决这个问题。
编辑:我的解决方案不起作用的原因是因为我访问了具有 setstate 的 void。这就是为什么我总是收到空消息
解决方案
class SideBar extends StatefulWidget {
@override
_SideBarState createState() => _SideBarState();
}
class _SideBarState extends State<SideBar>
with SingleTickerProviderStateMixin<SideBar> {
@override
Widget build(BuildContext context) {
return IconButton(
icon: const Icon(Icons.menu),
onPressed: (){
onIconPressed();
},
void onIconPressed() {
print('123');
}
}
class HomeScreen extends StatelessWidget {
static String routeName = "/HomeScreen";
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async => false,
child: Scaffold(
appBar: AppBar(
leading: Builder(
builder: (BuildContext context) {
return SideBar(....
推荐阅读
- python - 无法让并行处理在 python 中工作
- python-3.x - 把括号放在数字之间
- reactjs - 发送 post 请求时 useEffect 导致 .map() 错误
- python - Python中的lambda函数问题
- python-3.x - 如何将数据框中的列绘制为子图
- python-3.x - 每隔一小时更新一次频率
- c# - 将类型列表gameObjects添加到GameObject列表时获取null
- python - python fabric run() sudo 命令不提示输入密码
- sharepoint - 具有 4 个条件的 CAML 查询将引发此错误“无法完成此操作。\n\n请重试。”
- python - Web Scraping 问题,使用 BeautifulSoup 库返回空列表