Dart 将listview放置到列中
我想将一个列表视图(1000多个项目)放到一列中,我尝试了Dart 将listview放置到列中,dart,flutter,flutter-layout,Dart,Flutter,Flutter Layout,我想将一个列表视图(1000多个项目)放到一列中,我尝试了展开,但没有成功。 在该列中,有一个swiper和一个listview 有什么解决办法吗? 这是我的密码: Widget build(BuildContext context) { return DefaultTabController( length: _list.length, child: Scaffold( appBar: AppBar( title: Text(
展开
,但没有成功。
在该列中,有一个swiper和一个listview
有什么解决办法吗?
这是我的密码:
Widget build(BuildContext context) {
return DefaultTabController(
length: _list.length,
child: Scaffold(
appBar: AppBar(
title: Text("ListView in Column"),
centerTitle: true,
bottom: TabBar(
isScrollable: false,
tabs: _list.map((String ss) {
return Tab(text: ss);
}).toList(),
),
),
body: Column(
children: <Widget>[
Container(
height: 200,
width: MediaQuery.of(context).size.width,
child: Swiper(
itemBuilder: (BuildContext context, int index) {
return _swiperImage[index];
},
itemCount: _swiperImage.length,
autoplay: true,
loop: true,
pagination: SwiperPagination(),
control: SwiperControl(),
onTap: (index) =>
Fluttertoast.showToast(msg: 'Clicked ${index + 1}'),
),
),
Expanded(
child: ListView.builder(
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return ListItemExamStrategyWidget(_listExamStrategy[index]);
},
itemCount: _listExamStrategy.length,
),
)
],
),
),
);
}
小部件构建(构建上下文){
返回DefaultTabController(
长度:_list.length,
孩子:脚手架(
appBar:appBar(
标题:文本(“列中的列表视图”),
标题:对,
底部:选项卡栏(
isScrollable:错误,
选项卡:_list.map((字符串ss){
返回选项卡(文本:ss);
}).toList(),
),
),
正文:专栏(
儿童:[
容器(
身高:200,
宽度:MediaQuery.of(context).size.width,
孩子:游泳运动员(
itemBuilder:(构建上下文,int索引){
返回_swiperImage[索引];
},
itemCount:_swiperImage.length,
自动播放:对,
循环:对,
分页:SwiperPagination(),
控件:SwipControl(),
onTap:(索引)=>
flatterToast.showtoos(消息:'Clicked${index+1}'),
),
),
扩大(
子项:ListView.builder(
收缩膜:对,
itemBuilder:(构建上下文,int索引){
返回ListItemExamStrategyWidget(_ListXamStrategy[index]);
},
itemCount:_listExamStrategy.length,
),
)
],
),
),
);
}
一些变化:
- 将您的
包装在列
中SingleChildScrollView
body: SingleChildScrollView( child: Column(
- 从
列表视图中删除
小部件父项扩展的
- 将
列表视图的物理设置为
NeverScrollableScrollPhysics
ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(),
- 将您的
包装在列
中SingleChildScrollView
body: SingleChildScrollView( child: Column(
- 从
列表视图中删除
小部件父项扩展的
- 将
列表视图的物理设置为
NeverScrollableScrollPhysics
ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(),
- 一些变化:
final List<String> _list = <String>['tab-1', 'tab-2'];
final List<String> _swiperImage = <String>[
'http://via.placeholder.com/350x150',
'http://via.placeholder.com/350x150'
];
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: _list.length,
child: Scaffold(
appBar: AppBar(
title: const Text('ListView in Column'),
centerTitle: true,
bottom: TabBar(
isScrollable: false,
tabs: _list.map((String ss) {
return Tab(text: ss);
}).toList(),
),
),
body: Column(
children: <Widget>[
Container(
height: 200,
width: MediaQuery.of(context).size.width,
child: Swiper(
itemBuilder: (BuildContext context, int index) {
return new Image.network(
_swiperImage[index],
fit: BoxFit.fill,
);
},
itemCount: _swiperImage.length,
autoplay: true,
loop: true,
pagination: const SwiperPagination(),
control: const SwiperControl(),
onTap: (int index) {
print('----------$index');
}),
),
new Expanded(
child: ListView.builder(
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return new Container(
padding: const EdgeInsets.all(15.0),
child: new Text('index ${index.toString()}'),
);
},
itemCount: 100,
),
)
],
),
),
);
}
final List _List=['tab-1','tab-2'];
最终列表_swiperImage=[
'http://via.placeholder.com/350x150',
'http://via.placeholder.com/350x150'
];
@凌驾
小部件构建(构建上下文){
返回DefaultTabController(
长度:_list.length,
孩子:脚手架(
appBar:appBar(
标题:常量文本(“列中的列表视图”),
标题:对,
底部:选项卡栏(
isScrollable:错误,
选项卡:_list.map((字符串ss){
返回选项卡(文本:ss);
}).toList(),
),
),
正文:专栏(
儿童:[
容器(
身高:200,
宽度:MediaQuery.of(context).size.width,
孩子:游泳运动员(
itemBuilder:(构建上下文,int索引){
返回新的Image.network(
_swiperImage[索引],
fit:BoxFit.fill,
);
},
itemCount:_swiperImage.length,
自动播放:对,
循环:对,
分页:常量SwiperPagination(),
控件:常量SwipControl(),
onTap:(int索引){
打印('-----------$index');
}),
),
新扩展(
子项:ListView.builder(
收缩膜:对,
itemBuilder:(构建上下文,int索引){
退回新货柜(
填充:常数边集全部(15.0),
子项:新文本('index${index.toString()}'),
);
},
物品计数:100,
),
)
],
),
),
);
}
它在一列中工作,带有swiper和扩展的小部件,其中包含1000个文本的listview 这是我的工作代码
final List<String> _list = <String>['tab-1', 'tab-2'];
final List<String> _swiperImage = <String>[
'http://via.placeholder.com/350x150',
'http://via.placeholder.com/350x150'
];
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: _list.length,
child: Scaffold(
appBar: AppBar(
title: const Text('ListView in Column'),
centerTitle: true,
bottom: TabBar(
isScrollable: false,
tabs: _list.map((String ss) {
return Tab(text: ss);
}).toList(),
),
),
body: Column(
children: <Widget>[
Container(
height: 200,
width: MediaQuery.of(context).size.width,
child: Swiper(
itemBuilder: (BuildContext context, int index) {
return new Image.network(
_swiperImage[index],
fit: BoxFit.fill,
);
},
itemCount: _swiperImage.length,
autoplay: true,
loop: true,
pagination: const SwiperPagination(),
control: const SwiperControl(),
onTap: (int index) {
print('----------$index');
}),
),
new Expanded(
child: ListView.builder(
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
return new Container(
padding: const EdgeInsets.all(15.0),
child: new Text('index ${index.toString()}'),
);
},
itemCount: 100,
),
)
],
),
),
);
}
final List _List=['tab-1','tab-2'];
最终列表_swiperImage=[
'http://via.placeholder.com/350x150',
'http://via.placeholder.com/350x150'
];
@凌驾
小部件构建(构建上下文){
返回DefaultTabController(
长度:_list.length,
孩子:脚手架(
appBar:appBar(
标题:常量文本(“列中的列表视图”),
标题:对,
底部:选项卡栏(
isScrollable:错误,
选项卡:_list.map((字符串ss){
返回选项卡(文本:ss);
}).toList(),
),
),
正文:专栏(
儿童:[
容器(
身高:200,
宽度:MediaQuery.of(context).size.width,
孩子:游泳运动员(
itemBuilder:(构建上下文,int索引){
返回新的Image.network(
_swiperImage[索引],
fit:BoxFit.fill,
);
},
itemCount:_swiperImage.length,
自动播放:对,
循环:对,
分页:常量SwiperPagination(),
控件:常量SwipControl(),
onTap:(int索引){
打印('-----------$index');
}),
),
新扩展(
孩子