[英]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.