我試圖在串列視圖的內容之前放置一個容器,但是當我運行應用程式時,容器沒有呈現出來。我的代碼
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http ;
class Home extends StatefulWidget {
const Home({Key? key}) : super(key: key);
@override
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> {
String url="https://randomuser.me/api/?results=10";
Future<List<dynamic>> fetchPlayers() async{
final result = await http.get(Uri.parse(url));
return json.decode(result.body)['results'];
}
String name(dynamic player){
return player['name']['first'] " " player['name']
['last'];
}
String position(dynamic player){
return player['name']['last'];
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
margin: const EdgeInsets.fromLTRB(35, 45, 30, 20),
child:
FutureBuilder<List<dynamic>>(
future: fetchPlayers(),
builder: (BuildContext context, AsyncSnapshot
snapshot) {
if (snapshot.hasData) {
return Column(
children: [
Container(
child: Text("I want a container here"),
),
ListView.builder(
padding: EdgeInsets.all(8),
itemCount: snapshot.data.length,
itemBuilder: (BuildContext context, int
index){
return
Card(
child: Column(
children: <Widget>[
ListTile(
leading: CircleAvatar(
radius: 30, backgroundImage:
NetworkImage(
snapshot.data[index]
['picture']['large'])),
title:
Text(name(snapshot.data[index])),
subtitle:
Text(position(snapshot.data[index])),
)
],
),
);
})
]
);
}
else{
return Center(child:
CircularProgressIndicator());
}
},
),)
);
}
當我運行我的應用程式時,看不到容器的內容。我不太熟悉顫振,我想我做錯了什么。有人可以幫忙嗎
更新:我希望在加載資料后顯示我的容器。按照下面顯示的方法后,現在可以看到容器但沒有資料ListView。
目標是這樣的

uj5u.com熱心網友回復:
由于您沒有在任何地方回傳該容器,因此如果您的意思是
- 我想在加載資料之前顯示容器(因此對于加載持續時間)嘗試
return Container(child: Text("...
我想在串列頂部顯示容器有幾個選項
一個。如果您希望在每種情況下都顯示容器,請將容器移到 FutureBuilder 之外,而不管 b。在 FutureBuilder 的構建器函式中創建一個
List<Widget> widgets = []并添加容器和任何其他應顯示的小部件并在構建器函式的末尾回傳串列
uj5u.com熱心網友回復:
只需在return前面添加關鍵字Container
uj5u.com熱心網友回復:
如果您想在加載資料之前查看 Container()。你需要做
Column(
children:[
Container(...),
FuturueBuilder<List<dynamic>>(...)
]
)
或者您希望它查看資料何時加載
return Column(
children: [
Container(...),
ListView.builder(...)
]
)
或者您想在資料加載時顯示它。
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return const Container(...);
default:
if (snapshot.hasError) {
return const Text('Error');
} else {
return ListView.builder(...);
}
}
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/506373.html
