如何在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;