如何在 Dart 中将 Navigator 函数作为参数传递?
Posted
技术标签:
【中文标题】如何在 Dart 中将 Navigator 函数作为参数传递?【英文标题】:How to pass Navigator function as a parameter in Dart? 【发布时间】:2022-01-21 16:47:52 【问题描述】:我有一个代表按钮的自定义小部件,该小部件位于“lib”文件夹内一个名为“Widgets”的单独文件夹中,这就是按钮小部件文件
import 'package:flutter/material.dart';
Widget buttonWidget(String text, Function action)
return ElevatedButton(
onPressed: () => action,
child: Text(text, style: const TextStyle(fontSize: 20),
);
现在在 main.dart 文件中,我希望 buttonWidget 使用 Navigator.pushNamed 函数,所以我将 buttonWidget 称为
buttonWidget("Navigate", Navigator.pushNamed(context, '/screenTwo')),
但是 buttonWidget 调用给了我这个错误
The argument type 'Future<Object?>' can't be assigned to the parameter type 'Function'.
【问题讨论】:
【参考方案1】:您需要围绕调用创建一个匿名函数,就像直接将其传递给onPressed
参数一样。
buttonWidget("Navigate", () => Navigator.pushNamed(context, '/screenTwo')),
或
buttonWidget("Navigate", ()
Navigator.pushNamed(context, '/screenTwo');
),
【讨论】:
以上是关于如何在 Dart 中将 Navigator 函数作为参数传递?的主要内容,如果未能解决你的问题,请参考以下文章
Dart / Flutter:在没有上下文的页面之间导航(使用 Navigator)(所以没有 Navigator.push?)