如何在flutter中获取另一个文件的var值?
How to get the value of a var of another file in flutter?
我试图在 flutter 中获取不同文件中的 var 的值,我尝试这样做:New x = New(); 'New is my class', x.variable = ...
这对我不起作用。我有什么想法可以让这样的东西发挥作用吗?
import 'auth/LoginPage.dart' as login;
class WelcomePage extends StatefulWidget {
@override
_WelcomePageState createState() => _WelcomePageState();
}
class _WelcomePageState extends State<WelcomePage> {
final PageController _pageController = PageController();
var x = login.userType;
所以您需要创建一个文件 login.dart 从您想要导入方法的地方:
//login.dart
enum UserType { Firebase, Google, Twitter }
getUserTypeFirebase() {
return UserType.Firebase;
}
getUserTypeGoogle() {
return UserType.Google;
}
getUserTypeTwitter() {
return UserType.Twitter;
}
然后您使用 library
语句和 export
语句创建库 login_lib.dart 以导出您想要导出的其他文件或包从这个库中使用。在这种情况下,我们导出文件 login.dart,如下所述。
//login_lib.dart
library login;
export 'login.dart';
然后你可以像这样在 class 中导入 login_lib:
//welcome_page.dart
import 'package:flutter/material.dart';
import 'login_lib.dart' as login;
class WelcomePage extends StatelessWidget {
var x = login.getUserTypeGoogle();
@override
Widget build(BuildContext context) {
return Container();
}
}
只需创建一个库文件并为您需要的全局变量创建字段。在需要访问这些字段的任何地方导入此库。
app.dart
import 'globals.dart' as globals;
main() {
globals.isLoggedIn = true;
}
component1.dart
import 'globals.dart' as globals;
class MyComponent {
view() {
if(globals.isLoggedIn) {
doSomething();
else {
doSomethingElse();
}
}
}
globals.dart
library my_prj.globals;
bool isLoggedIn = false;
我想出了自动登录的方法,但是当我尝试它时却出现错误,有什么地方不对吗?代码:
@override
void initState() {
super.initState();
FirebaseAuth.instance.currentUser().then(
(res) async {
print(userType);
if (res != null && userType == 'Admin') {
Navigator.pushReplacementNamed(context, '/AdminPage');
}
if (res != null && userType == 'Student') {
Navigator.pushReplacementNamed(context, '/StudentPage');
}
if (res != null && userType == 'Teacher') {
Navigator.pushReplacementNamed(context, '/TeacherPage');
}
它说 userType 为 null,所以我的新问题是关于在其中使用 initState 之外的 var 的能力?困惑吧?
我想要值的文件:
importme.dart
- 从扩展部分删除 _...
- 使变量静态..
class MultiSelectChip extends StatefulWidget { final List
reportList; final Function(List) onSelectionChanged;
_MultiSelectChip(this.reportList, {required
this.onSelectionChanged});
@override **_**MultiSelectChipState createState() =>
MultiSelectChipState(); }
class _MultiSelectChipState extends State {
static List selectedChoices =
[];
mainfile.dart
import 'package:ytsubmeapp/widgets/multichoice.dart';
List x = MultiSelectChipState.selectedChoices;
我试图在 flutter 中获取不同文件中的 var 的值,我尝试这样做:New x = New(); 'New is my class', x.variable = ...
这对我不起作用。我有什么想法可以让这样的东西发挥作用吗?
import 'auth/LoginPage.dart' as login;
class WelcomePage extends StatefulWidget {
@override
_WelcomePageState createState() => _WelcomePageState();
}
class _WelcomePageState extends State<WelcomePage> {
final PageController _pageController = PageController();
var x = login.userType;
所以您需要创建一个文件 login.dart 从您想要导入方法的地方:
//login.dart
enum UserType { Firebase, Google, Twitter }
getUserTypeFirebase() {
return UserType.Firebase;
}
getUserTypeGoogle() {
return UserType.Google;
}
getUserTypeTwitter() {
return UserType.Twitter;
}
然后您使用 library
语句和 export
语句创建库 login_lib.dart 以导出您想要导出的其他文件或包从这个库中使用。在这种情况下,我们导出文件 login.dart,如下所述。
//login_lib.dart
library login;
export 'login.dart';
然后你可以像这样在 class 中导入 login_lib:
//welcome_page.dart
import 'package:flutter/material.dart';
import 'login_lib.dart' as login;
class WelcomePage extends StatelessWidget {
var x = login.getUserTypeGoogle();
@override
Widget build(BuildContext context) {
return Container();
}
}
只需创建一个库文件并为您需要的全局变量创建字段。在需要访问这些字段的任何地方导入此库。
app.dart
import 'globals.dart' as globals;
main() {
globals.isLoggedIn = true;
}
component1.dart
import 'globals.dart' as globals;
class MyComponent {
view() {
if(globals.isLoggedIn) {
doSomething();
else {
doSomethingElse();
}
}
}
globals.dart
library my_prj.globals;
bool isLoggedIn = false;
我想出了自动登录的方法,但是当我尝试它时却出现错误,有什么地方不对吗?代码:
@override
void initState() {
super.initState();
FirebaseAuth.instance.currentUser().then(
(res) async {
print(userType);
if (res != null && userType == 'Admin') {
Navigator.pushReplacementNamed(context, '/AdminPage');
}
if (res != null && userType == 'Student') {
Navigator.pushReplacementNamed(context, '/StudentPage');
}
if (res != null && userType == 'Teacher') {
Navigator.pushReplacementNamed(context, '/TeacherPage');
}
它说 userType 为 null,所以我的新问题是关于在其中使用 initState 之外的 var 的能力?困惑吧?
我想要值的文件:
importme.dart
- 从扩展部分删除 _...
- 使变量静态..
class MultiSelectChip extends StatefulWidget { final List reportList; final Function(List) onSelectionChanged;
_MultiSelectChip(this.reportList, {required this.onSelectionChanged});
@override **_**MultiSelectChipState createState() => MultiSelectChipState(); }
class _MultiSelectChipState extends State {
static List selectedChoices = [];
mainfile.dart
import 'package:ytsubmeapp/widgets/multichoice.dart';
List x = MultiSelectChipState.selectedChoices;