我的第一個頁面包含一個平面按鈕。當我按下該按鈕時,導航到另一個頁面(MyApp)的速度太慢(它包含長資料)。如何解決這個問題呢?以下是我的代碼。
class MyApp extends StatefulWidget {
final List<String> items;
const MyApp({ this.items}) 。
@override
_MyAppState createState() => _MyAppState()。
}
class _MyAppState extends State< MyApp> {
@override>
final ScrollController scrollcontroller=ScrollController()。
var scaffoldkey=GlobalKey<ScaffoldState>()。
@override
Widget build(BuildContext context) {
const title = 'Long List'/span>;
return Scaffold(
appBar: AppBar(
標題。const Text(title)。
),
body:Stack(children: [Column(children:[ListView(shrinkWrap:true, children:[ Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center。
children: [
中心()
child: Padding(
padding: const EdgeInsets.symmetric(vertical:0.0)。
孩子。容器(
width: 300,
高度。70。
裝飾。BoxDecoration(border:Border.all(color:Colors.brown[100],),color: Colors.orange[50], borderRadius:BorderRadius.all(Radius.round(5.0) )。)
兒童。列(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children:<Widget> [
容器(高度。35。
裝飾。BoxDecoration(color: Colors.white,
邊界。border.all(color: Colors.brown[300],width: 1)。
borderRadius: borderRadius.circular(5),),],),),],)
]),Expanded(child:ListView(shrinkWrap:true,children:[ListView.buildinger(
shrinkWrap: true, physics: ScrollPhysics(), scrollDirection: Axis.vertical, itemCount:widget.items.length,
itemBuilder: (context, index) {
return ListTile(title: Text(widget.items[index]),);},),]))))};}} ```
uj5u.com熱心網友回復:
最好的方法可能是在用戶滾動時加載你的部分資料。
final ScrollController scrollcontroller=ScrollController()。
List<String> items;
int numberOfItemsLoadedPerScroll = 15;
List<String> loadedItems = items.sublist(0, 15)。
scrollcontroller.addListener(() {
setState(() {
loadedItems = items.sublist(0, loadedItems.Legth numberOfItemsLoadedPerScroll);
});
});
如果使用Bloc系統并更新Stream而不是呼叫setState,那會更好。但我認為像這樣的東西應該是可行的。
uj5u.com熱心網友回復:
你所使用的串列視圖效率極低,它需要一定的時間來構建和渲染里面的所有部件。我建議你使用一個串列視圖生成器,因為它可以更快地呈現你的視圖,而且它是最優化的串列視圖的方式。https://flutter.dev/docs/cookbook/lists/long-lists 如果你想查看的話,這里有相關的檔案,不用說,使用串列視圖生成器而不是普通的老式串列視圖是一種最佳的做法。 **編輯:為了進一步解釋,串列視圖生成器會在您向下或向上滾動串列時渲染專案(例如,需要15個專案才能填滿螢屏),而串列視圖則會一次性渲染整個串列,這可能會導致應用程式的速度很慢,如果時間過長,有時會導致管理作業系統(IOS或Android)無法回應。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/315726.html
標籤:
