繁体   English   中英

如何将变量 id 传递到 flutter 中的第二个屏幕?

[英]How can I pass variable id to second screen in flutter?

我有两个页面,我想在第二个屏幕中使用变量“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;
    
  }

要么执行与之前相同的操作,因此将 id 作为参数传递给 _UserProfileState class,因此只需调用:

_UserProfileState(@required this.id) : super();

使变量可用的另一个选项是使用Provider 小部件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM