Flutter 已经定义了如何在文件小部件外部使用全局键

Flutter 已经定义了如何在文件小部件外部使用全局键,flutter,dart,key,Flutter,Dart,Key,在文件1中,我定义了以下小部件: class MyWidget extends StatefulWidget { const MyWidget({ Key key, }) : super(key: key); @override _MyWidget createState() => _MyWidgetState(); } 在文件2中,我想调用这个小部件并为key参数提供一个全局键。为此,我将导入文件1: import 'package:mypackage/sup

在文件1中,我定义了以下小部件:

class MyWidget extends StatefulWidget {
  const MyWidget({
    Key key,
  }) : super(key: key);

  @override
  _MyWidget createState() => _MyWidgetState();
}
在文件2中,我想调用这个小部件并为key参数提供一个全局键。为此,我将导入文件1:

import 'package:mypackage/supplemental/file1.dart';
然后在这个文件(文件2)中,我想定义一个MyWidget全局键:

GlobalKey<_MyWidgetState> globalKey;
GlobalKey-GlobalKey;
但我得到了一个错误:

名称“\u MyWidgetState”不是类型,因此不能用作类型 论点尝试将名称更正为现有类型,或定义 名为“\u MyWidgetState”的类型


为什么即使我导入了该文件,我也无法访问它?

请删除您的\u MyWidgetState前面的下划线以将其公开。改变

_MyWidgetState


删除_MyWidgetState前面的下划线以将其公开。改变

_MyWidgetState


如果在类或变量声明之前有一个
,则表示该类或变量是私有的。在您的情况下,MyWidgetState是私有的,不能从其他文件访问。您可以从类声明中删除
,然后它就可以工作了。如果在类或变量声明之前有
,则表示该类或变量是私有的。在您的情况下,MyWidgetState是私有的,不能从其他文件访问。您可以从类声明中删除
,然后它就可以工作了。