我正在创建一个演示,我已经使用列表视图构建器来显示所有可用的类别从一个列表,现在当我点击项目,它应该放在第一位...
我附上了一张图片,让它更清晰...
我尝试过滑动,但看起来不是一个适当的方式,因为它是影响原来的列表顺序;
这是我的编码
class _Stack17State extends State<Stack17> {
@override
List<String> names = ['Shoes','Trousers','Jeans','Jacket','Belt','Others'];
int selectedindex = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
Container(
height: 50,
color: Colors.white,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: names.length,
itemBuilder: (context, index) {
return InkWell(
onTap: (){
setState(() {
// I applied this logic, but looks like not proper way as it is spoiling or original list's order;
selectedindex=index;
swap(selectedindex);
selected index=0;
});
},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 4),
child: Container(
padding: EdgeInsets.symmetric(horizontal: 30,vertical: 10),
decoration: BoxDecoration(
color: selectedindex==index?Colors.blue:Colors.blue.shade100,
borderRadius: BorderRadius.circular(20)),
child: Center(child: Text(names[index])),
),
),
);
}),
),
SizedBox(height: 10,),
Center(child: Text('Selected Category : '+names[selectedindex]),)
],
),
);
}
void swapitems(int index)
{
String temp;
temp=names[index];
names[index]=names[0];
names[0]=temp;
}
}
1条答案
按热度按时间f87krz0w1#
试试这个:
names[0]=temp;
只是用选定的项目替换第一个项目。您需要使用插入来移动列表并将选定的项目插入到第一个位置。