【问题标题】:Global variable in Dart/FlutterDart/Flutter 中的全局变量
【发布时间】:2020-03-24 12:47:16
【问题描述】:

我在flutter中编写了一个通过rest api登录用户的函数。我想使用帖子的响应,但我不知道如何将变量导出到另一个文件中。

我想使用userID,但我不知道如何使用, 有人可以帮帮我吗?

class LoginScreenState extends State<LoginScreen>{

  makeLoginRequest(String email, password) async {
    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    Map data = {
      'email':email,
      'password':password
    };
    var jsonResponse;
    var url = 'http://10.0.2.2:80/user/login';
    var response = await http.post(url, body:data);
    if(response.statusCode == 200){
      jsonResponse = json.decode(response.body);

      int userID = jsonResponse['id'];//HERE

if(jsonResponse != null){
        setState(() {
          _isLoading = false;
        });
        sharedPreferences.setString("token", jsonResponse['token']);
        Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (BuildContext context) => UserPage()), (Route<dynamic> route) => false);
      }
    }

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    在您的 UserPage 中使用变量来获取 ID。

    示例:

    class UserPage extends StatefulWidget {
      final int userId;
    
      UserPage({@required this.userId});
    
      @override
      _UserPageState createState() => _UserPageState();
    }
    
    class _UserPageState extends State<UserPage> {
      @override
      Widget build(BuildContext context) {
        return Container();
      }
    }
    

    在登录后导航到 UserPage 时传递用户 ID:

    Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (BuildContext context) => UserPage(userId: userID)), (Route<dynamic> route) => false);
    

    当你想获取UserPage中userId的值时,可以通过如下方式使用:widget.userId

    【讨论】:

    • 非常感谢,你是神 :D,但是有一个问题,widget.userId,这里的小部件怎么样?您能在上面的帖子中举一些使用示例吗?
    • "widget" 如果我​​们在状态小部件 UserPageState 内部使用对父小部件 UserPage 的引用。
    猜你喜欢
    • 1970-01-01
    • 2015-05-24
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    相关资源
    最近更新 更多