Flutter,将私有方法分解为助手 class。参数问题

Flutter, break out private method to a helper class. Arguments problem

我想分解此方法并在助手 class 中使其成为 public 但是我 运行 在尝试将上下文传递给它时出现此错误?它需要两个必需的上下文和 BuildContext 但我不知道如何实现它?我收到这个错误。这似乎也是两个上下文参数的问题:

“需要 2 个位置参数,但找到 0 个。尝试添加缺少的参数”

或者如果我键入第一个上下文,它是:

“需要 1 个位置参数,但找到 0 个。尝试添加缺少的参数”

私有方法:

_showDialog() {
  showDialog(
    context: context,
    builder: (BuildContext context) {
      return AlertDialog(
        title: Text('Title'),
        content: Text('Body'),
        actions: <Widget>[
          OutlinedButton(
            child: Text('Close'),
            onPressed: () {
              Navigator.of(context).pop();
            },
          ),
        ],
      );
    },
  );
}

Public 方法(有两个上下文参数):

class _LegendScreenState extends State<LegendScreen> {
  showDialog(context, BuildContext context) {
    showDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text('Title'),
          content: Text('Body'),
          actions: <Widget>[
            OutlinedButton(
              child: Text('Close'),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
          ],
        );
      },
    );
  }
}

删除一个上下文参数。你只需要一个。

showDialog(context, BuildContext context) {

应该是:

showDialog(BuildContext context) {

出现此问题是因为,您定义的 showDialog 方法已在 material.dart 上定义。它与名称重叠。尝试将助手 class 重命名为 appDialog 之类的名称并传递 context.

  appDialog(BuildContext context) {
    showDialog(
      context: context,
      builder: (BuildContext context) {

更多关于showDialog