我想讓我的串列由箭頭按鈕控制,一個向前移動一項,一個向后移動一項,像這樣

我嘗試了許多軟體包和解決方案,但其中大多數都到串列的末尾或固定索引號我想要的是串列移動到串列中的下一個專案
uj5u.com熱心網友回復:
您可以使用提供的scroll_to_index包AutoScrollTag。
class ST extends StatefulWidget {
const ST({Key? key}) : super(key: key);
@override
_STState createState() => _STState();
}
class _STState extends State<ST> {
final AutoScrollController controller = AutoScrollController();
late List<Widget> items;
int _currentFocusedIndex = 0;
@override
void initState() {
items = List.generate(
33,
(index) => AutoScrollTag(
key: ValueKey(index),
controller: controller,
index: index,
child: Container(
height: 100,
width: 100,
alignment: Alignment.center,
color: index.isEven ? Colors.deepOrange : Colors.deepPurple,
child: Text(index.toString()),
),
),
);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Row(
children: [
IconButton(
onPressed: () {
_currentFocusedIndex--;
if (_currentFocusedIndex < 0) {
_currentFocusedIndex = items.length - 1;
}
controller.scrollToIndex(_currentFocusedIndex,
preferPosition: AutoScrollPosition.begin);
setState(() {});
},
icon: const Icon(Icons.arrow_back_ios_new_sharp),
),
Expanded(
child: ListView(
scrollDirection: Axis.horizontal,
controller: controller,
children: items,
),
),
IconButton(
onPressed: () {
_currentFocusedIndex ;
if (_currentFocusedIndex > items.length) {
_currentFocusedIndex = 0;
}
controller.scrollToIndex(_currentFocusedIndex,
preferPosition: AutoScrollPosition.begin);
setState(() {});
},
icon: const Icon(Icons.arrow_forward_ios_sharp),
),
],
),
);
}
}
uj5u.com熱心網友回復:
僅當您知道要滾動的確切寬度時才能完成。利用scrollController
ScrollController scrollController = ScrollController(
initialScrollOffset: 100, // or whatever offset you wish
keepScrollOffset: true,
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/415750.html
標籤:
上一篇:根據多列值從資料框中選擇值
下一篇:鍵盤突然消失的TextField
