我想在其他飞镖文件中使用几个变量。简而言之,我希望它们可以在全球范围内访问
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';
这里有两个 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';