Flutter中对应Delphi SpinEdit、QT SpinBox的组件名称是什么?
Flutter 中的数值微调组件(对应 Delphi SpinEdit/QT SpinBox)
Flutter 可以通过两种方式实现你需要的「点击上下箭头增减数值」的功能:
1. 用官方组件手动组合
直接用 TextField 搭配 IconButton 就能快速构建,逻辑简单且支持完全自定义,示例代码如下:
class SpinBox extends StatefulWidget { final int initialValue; final int min; final int max; const SpinBox({ super.key, required this.initialValue, this.min = 0, this.max = 100, }); @override State<SpinBox> createState() => _SpinBoxState(); } class _SpinBoxState extends State<SpinBox> { late int _currentNum; @override void initState() { super.initState(); _currentNum = widget.initialValue; } void _addNum() { if (_currentNum < widget.max) setState(() => _currentNum++); } void _minusNum() { if (_currentNum > widget.min) setState(() => _currentNum--); } @override Widget build(BuildContext context) { return Row( mainAxisSize: MainAxisSize.min, children: [ IconButton(icon: const Icon(Icons.remove), onPressed: _minusNum), SizedBox( width: 60, child: TextField( controller: TextEditingController(text: '$_currentNum'), textAlign: TextAlign.center, keyboardType: TextInputType.number, onChanged: (val) { final num? newNum = int.tryParse(val); if (newNum != null && newNum >= widget.min && newNum <= widget.max) { setState(() => _currentNum = newNum); } }, ), ), IconButton(icon: const Icon(Icons.add), onPressed: _addNum), ], ); } }
2. 用第三方包快速实现
可以使用 numberpicker 第三方包,它提供了开箱即用的数值微调组件,外观和交互逻辑和你提到的 SpinEdit/SpinBox 完全匹配,支持点击箭头增减、直接输入数值,还能自定义数值范围和步长。
首先在 pubspec.yaml 中添加依赖:
dependencies: numberpicker: ^2.1.2
然后直接调用组件:
NumberPicker( value: _currentNum, minValue: 0, maxValue: 100, onChanged: (val) => setState(() => _currentNum = val), )
内容的提问来源于stack exchange,提问作者Don Su
相关产品推荐
相关产品推荐

