【发布时间】:2021-08-13 14:15:30
【问题描述】:
我的第一页包含一个平面按钮。当我按下该按钮时,导航到另一个页面(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';
return Scaffold(
appBar: AppBar(
title: const Text(title),
),
body:Stack(children: [Column(children:[ListView(shrinkWrap:true,children:[ Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Center(
child: Padding(
padding: const EdgeInsets.symmetric(vertical:0.0),
child: Container(
width: 300,
height: 70,
decoration: BoxDecoration(border:Border.all(color:Colors.brown[100],),color: Colors.orange[50], borderRadius:BorderRadius.all(Radius.circular(5.0))),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children:<Widget> [
Container(height: 35,
decoration: BoxDecoration(color: Colors.white,
border: Border.all(color: Colors.brown[300],width: 1),
borderRadius: BorderRadius.circular(5),),),],),),),),],)
]),Expanded(child:ListView(shrinkWrap:true,children:[ListView.builder(
shrinkWrap: true, physics: ScrollPhysics(), scrollDirection: Axis.vertical, itemCount:widget.items.length,
itemBuilder: (context, index) {
return ListTile(title: Text(widget.items[index]),);},),]))])]) );}} ```
【问题讨论】:
-
你能分享一个视频吗?
-
你能把你的代码格式化得更好一点吗?无论如何,我看到一个
ListView调用了这样的“长数据”。这迫使 Flutter 渲染内部的每个元素。为避免这种情况,请仅使用一个ListView.builder。您的代码中有两个,所以也许您想要SingleChildScrollView和ListView.builder的组合?