flutter - 如何在颤动中将变量 id 传递到第二个屏幕?
问题描述
我有两个页面,我想在第二个屏幕中使用变量“id”从 API 获取数据。
我应该怎么办?
屏幕一:这是用户点击个人资料图片的产品屏幕,然后我在第二个屏幕中获得有关用户所有者的所有信息。
屏幕二:我通过 id 显示这个用户的数据
注意:我通过 API 获取所有数据
id 始终为 Null
画面一:
InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => UserProfile(
id: id,
)),
);
// do something here
},
),
画面二:
class UserProfile extends StatefulWidget {
final int id;
const UserProfile({Key key, @required this.id}) : super(key: key);
@override
_UserProfileState createState() => _UserProfileState();
}
class _UserProfileState extends State<UserProfile> {
@override
void initState() {
getprofile(id);
super.initState();
}
Future<List<dynamic>> getprofile(int id) async {
var response = await Network().getData('/auth/user/$id');
data = json.decode(response.body);
return data;
}
解决方案
当您想使用 StatefulWidget 中的属性时,您需要使用 widget.propertyName。在你的情况下widget.id
class _UserProfileState extends State<UserProfile> {
@override
void initState() {
getprofile(widget.id);
super.initState();
}
Future<List<dynamic>> getprofile(int id) async {
var response = await Network().getData('/auth/user/$id');
data = json.decode(response.body);
return data;
}
推荐阅读
- javascript - Angular 6 错误“NullInjectorError:没有路由器提供程序!”
- java - 无法在控制器的方法中使用带有附加参数的 HttpServletRequest
- terminal - What does [143x40] mean in the output of tmux list-sessions?
- haskell - 如何同时通过两个格式化程序记录 HSpec 测试输出?
- python - Parallelization with Numba
- html - bootstrap 3有两个按钮在同一行对齐
- python - 作为 api 循环的一部分,检查嵌套字典是否不为空
- python - 两次使用美丽的汤
- corda - 查询已在事务中消费的输入状态
- swift - Swift 通过添加百分比创建字符串