首页 > 解决方案 > 如何使用 dart/flutter 在不同的类上使用变量

问题描述

我有一门课,那就是我的 getToken 课。在这个类中,我得到了String token 的 token。这是我的getToken.dart

class GetToken {
  String token;
  Future<Null> getData() async {
    var url = "http://192.168.1.39:7070/api/v2/token";
    http.post(url, body: {
      "grant_type": "string",
      "branchcode": "string",
      "password": "string",
      "username": "string",
      "dbname": "string",
      "dbuser": "string",
      "dbpassword": "string",
      "dbtype": "string"
    }).then((response) {
      print("Response Status: ${response.statusCode}");
      //print("Response Body: ${response.body}");
      print('access token is -> ${json.decode(response.body)['access_token']}');
      token = json.decode(response.body)['access_token'];
    });
  }
}

我想在我的 getCari 类中使用这个令牌并在我的 rest api 中获取 Json 值。这是我的getCari.dart课程

class GetCari{
  getCari() async {
    final response = await http.get("http://192.168.1.39:7070/api/v2/ARPs",
    headers: {HttpHeaders.AUTHORIZATION: token});

    if(response.statusCode ==200){
      return Cari.fromJson(json.decode(response.body));
    }else{
      throw Exception("Failed to Load");
    }
  }
}

我想问一下如何在我的 getCari.dart 类中使用我的令牌(从 getToken.dart 获得)。我如何将令牌变量传递给其他类?

标签: dart

解决方案


您可以使用get_it 之类的服务管理器在应用程序的任何位置重用值。

  1. 创建将保存您的共享信息的类

    class GetToken{
      String token;
      ...
    }
    
  2. 在你的 main.dart 文件中,设置你的 GetIt 实例

    final getIt = GetIt.instance;
    
    void setup() {
      getIt.registerSingleton<GetToken>(GetToken());
    }
    
  3. 现在,您可以从应用程序的任何位置调用此类并获取您的令牌。

    var mytoken= getIt.get<AppModel>().token;
    

推荐阅读