我想在其他飞镖文件中使用几个变量。简而言之,我希望它们可以在全球范围内访问

I want to use few variables in other dart files. In short I want them to be globally accessed

这里有两个 bool 变量,我希望它们在其他 dart 文件中使用。我怎样才能做到这一点。 classEmployeeRegistrationScreen 扩展了 StatefulWidget {

  static const id = 'employee_register';

  @override
  _EmployeeRegistrationScreenState createState() => _EmployeeRegistrationScreenState();
}

class _EmployeeRegistrationScreenState extends State<EmployeeRegistrationScreen> {

  bool showSpinner = false;
  final _auth = FirebaseAuth.instance;
  String email;
  String password;
  String confirmPassword;
  bool  _passwordVisible = false;
  bool _confirmPasswordVisible = false;
  String name;

您可以查看状态管理,这将有助于小部件之间的应用状态。 Flutter 团队在这里做了一个很好的介绍:https://flutter.dev/docs/development/data-and-backend/state-mgmt/intro

如果您尝试在多个屏幕上访问数据,Provider package 可以帮助您。它存储可从所有 类 访问的全局数据,无需创建构造函数。

下面是一些使用步骤(网上也有很多资料):

  • 在 pubspec.yaml

    中导入提供商
  • 创建您的 provider.dart 文件。例如:

    class HeroInfo with ChangeNotifier{
     String _hero = 'Ironman'
    
      get hero {
       return _hero;
      }
    
      set hero (String heroName) {
        _hero = heroName;
        notifyListeners();
      }
    }
    
  • 使用 ChangeNotifierProvider 包装您的 MaterialApp(可能在 main.dart 上)。

    return ChangeNotifierProvider(
      builder: (context) => HeroInfo(),
      child: MaterialApp(...),
    );
    
  • 在您的应用程序中使用它!在任何构建方法中调用提供程序并获取数据:

    @override
    Widget build(BuildContext context){
      final heroProvider = Provider.of<HeroInfo>(context);
    
      return Column {
        children: [
          Text(heroProvider.hero) 
        ]
      }
    }
    
  • 或设置数据:

    heroProvider.hero = 'Superman';