有谁知道我是怎么在慌乱中做到的吗?项目32 - 31之间的空间大于项目31 - 30之间的空间,并且项目30、29中的颜色是灰色的,而项目31是白色的。底部的项目也是如此。
ScrollTile是一个简单的中心小部件,它有一个子文本。
我试过了,但我被卡住了,我一开始很激动:
return Stack(
children: [
Positioned(
left: 0,
right: 0,
top: 0,
bottom: 0,
child: SizedBox(
height: 60,
width: 200,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
width: 70,
height: 4,
decoration: const BoxDecoration(
color: kPrimary500,
),
),
const SizedBox(
height: 100,
),
Container(
width: 70,
height: 4,
decoration: const BoxDecoration(
color: kPrimary500,
),
),
],
),
),
),
),
Container(
padding: EdgeInsets.only(top: 40, bottom: 40),
child: ListWheelScrollView.useDelegate(
controller: FixedExtentScrollController(
initialItem: 15,
),
itemExtent: 50,
perspective: 0.0000000001,
diameterRatio: 1.6,
physics: const FixedExtentScrollPhysics(),
squeeze: 0.6,
useMagnifier: true,
magnification: 1.6,
onSelectedItemChanged: (index) {
setState(() {
currentSelection = selection[index];
});
},
childDelegate: ListWheelChildLoopingListDelegate(
children: List<Widget>.generate(
selection.length,
(index) => ScrollTile(
selection: selection[index].toString(),
selectedColor: currentSelection == selection[index]
? kPrimary500
: kWhite,
),
),
),
),
),
],
);
1条答案
按热度按时间yizd12fk1#
你可以参考下面的代码:
这不是一个完美的方式来实现这一点,但将适用于您的用例。
您可以从SizedBox更改高度和宽度,如果您想编辑数字之间的间距,您可以增加/减少pageController的viewportFraction属性(1.0表示最大值,0.0表示最小值)。
看起来像这样: