首页 > 解决方案 > 如何在颤动中将变量 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;
    
  }

标签: flutterdart

解决方案


当您想使用 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;
    
  }

推荐阅读