我正在尝试使用 ListWheelScrollView 构建一个列表。我想将不同的容器显示为元素,但我也想更改所选项目的参数。
ListWheelScrollView.useDelegate(
itemExtent: 140,
perspective: 0.0005,
physics: FixedExtentScrollPhysics(),
diameterRatio: 1.3,
squeeze: 1.4,
onSelectedItemChanged: (index) => {
setState(() {
_selectedItemIndex = index;
}),
},
childDelegate: ListWheelChildLoopingListDelegate(
children: items
.map<Widget>((value) => Container(
child: BackdropFilter(
filter: ui.ImageFilter.blur(
sigmaX: _selectedItemIndex == items.indexOf(value)
? 0
: 0,
sigmaY: _selectedItemIndex == items.indexOf(value)
? 0
: 0,
),
child: Container(
margin: EdgeInsets.only(
left: _selectedItemIndex == items.indexOf(value)
? 40
: 60,
right:
_selectedItemIndex == items.indexOf(value)
? 40
: 60,
bottom:
_selectedItemIndex == items.indexOf(value)
? 15
: 25,
top: _selectedItemIndex == items.indexOf(value)
? 15
: 25),
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.5),
spreadRadius: 3,
blurRadius: 6,
offset: Offset(
0, 4), // changes position of shadow
),
],
gradient: LinearGradient(
colors: [
_selectedItemIndex == items.indexOf(value)
? trackGradient1
: trackGradient1.withOpacity(0.6),
_selectedItemIndex == items.indexOf(value)
? trackGradient2
: trackGradient2.withOpacity(0.6),
],
begin: Alignment.topLeft,
end: Alignment.bottomRight),
borderRadius:
BorderRadius.all(Radius.circular(35)),
),
child: Center(
child: Text(
'$value',
style: TextStyle(
color:
_selectedItemIndex == items.indexOf(value)
? Colors.white
: Colors.white.withOpacity(0.05),
fontSize:
_selectedItemIndex == items.indexOf(value)
? 25
: 20,
),
),
),
),
)))
.toList()),
),
我正在通过这种方法获取物品
List<Widget> getList() {
List<Widget> list = [];
for (int i = 0; i < 11; i++) {
list.add(ListElement());
}
return list;
}
}
ListElement 基本上是一个参数很少的容器。 我想显示这些容器,但应用将 ListElement() 显示为字符串。
这里发生了什么?请帮忙。