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