Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 省道/颤振中的全局变量_Flutter_Dart - Fatal编程技术网

Flutter 省道/颤振中的全局变量

Flutter 省道/颤振中的全局变量,flutter,dart,Flutter,Dart,我在Flatter中编写了一个通过RESTAPI登录用户的函数。我想使用post的响应,但我不知道如何将变量导出到另一个文件中 我想使用userID,但我不知道如何使用, 有人能帮我吗 class LoginScreenState extends State<LoginScreen>{ makeLoginRequest(String email, password) async { SharedPreferences sharedPreferences = await

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

我想使用
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);
      }
    }
类登录筛选状态扩展状态{
makeLoginRequest(字符串电子邮件、密码)异步{
SharedReferences SharedReferences=等待SharedReferences.getInstance();
地图数据={
“电子邮件”:电子邮件,
“密码”:密码
};
var-jsonResponse;
var url='1〕http://10.0.2.2:80/user/login';
var response=wait http.post(url,body:data);
如果(response.statusCode==200){
jsonResponse=json.decode(response.body);
int userID=jsonResponse['id'];//此处
if(jsonResponse!=null){
设置状态(){
_isLoading=false;
});
setString(“token”,jsonResponse['token']);
Navigator.of(context).pushandremoveintil(MaterialPageRoute(builder:(BuildContext context)=>UserPage(),(Route-Route)=>false);
}
}

在用户页面中,使用变量获取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();
  }
}
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (BuildContext context) => UserPage(userId: userID)), (Route<dynamic> route) => false);
class UserPage扩展StatefulWidget{
最终int用户标识;
UserPage({@required this.userId});
@凌驾
_UserPageState createState();
}
类_UserPageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器();
}
}
登录后导航到用户页面时,传递用户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();
  }
}
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (BuildContext context) => UserPage(userId: userID)), (Route<dynamic> route) => false);
Navigator.of(context).pushandremoveintil(materialpage(builder:(BuildContext context)=>UserPage(userId:userId)),(Route-Route)=>false);

当您想在UserPage中获取userId的值时,可以按以下方式使用它:
小部件。userId
在您的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();
  }
}
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (BuildContext context) => UserPage(userId: userID)), (Route<dynamic> route) => false);
class UserPage扩展StatefulWidget{
最终int用户标识;
UserPage({@required this.userId});
@凌驾
_UserPageState createState();
}
类_UserPageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器();
}
}
登录后导航到用户页面时,传递用户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();
  }
}
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (BuildContext context) => UserPage(userId: userID)), (Route<dynamic> route) => false);
Navigator.of(context).pushandremoveintil(materialpage(builder:(BuildContext context)=>UserPage(userId:userId)),(Route-Route)=>false);

当你想在UserPage中获取userId的值时,你可以按以下方式使用它:
widget.userId

非常感谢,你是上帝:D,但有一个问题,
widget.userId
,widget在这里如何?你能在上面的帖子中给出一些使用示例吗?“widget”这里是我们在state widget UserPageState中使用的对父widget UserPage的引用。非常感谢,你是上帝:D,但有一个问题,
widget.userId
,widget在这里是如何使用的?你能在上面的帖子中给出一些使用示例吗?“widget”这里,如果我们在state小部件UserPageState内部使用对父小部件UserPage的引用。