簡體   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