Flutter数字选择器插件numberpicker的使用
Flutter数字选择器插件numberpicker的使用
简介
NumberPicker 是一个自定义的小部件,旨在通过滚动选择器来选择整数或小数值。它具有直观的用户界面,并且易于集成到您的Flutter项目中。
安装
在pubspec.yaml
文件中添加依赖:
dependencies:
numberpicker: ^2.1.0
然后运行以下命令以安装包:
flutter pub get
示例代码
下面是一个完整的示例demo,展示了如何在Flutter应用程序中使用numberpicker
插件。
main.dart
import 'package:flutter/material.dart';
import 'package:numberpicker/numberpicker.dart';
void main() {
runApp(new ExampleApp());
}
class ExampleApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'NumberPicker Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 2,
child: Scaffold(
appBar: AppBar(
bottom: TabBar(
tabs: [
Tab(text: 'Integer'),
Tab(text: 'Decimal'),
],
),
title: Text('NumberPicker example'),
),
body: TabBarView(
children: [
_IntegerExample(),
_DecimalExample(),
],
),
),
);
}
}
class _IntegerExample extends StatefulWidget {
@override
__IntegerExampleState createState() => __IntegerExampleState();
}
class __IntegerExampleState extends State<_IntegerExample> {
int _currentIntValue = 10;
int _currentHorizontalIntValue = 10;
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
SizedBox(height: 16),
Text('Default', style: Theme.of(context).textTheme.headline6),
NumberPicker(
value: _currentIntValue,
minValue: 0,
maxValue: 100,
step: 10,
haptics: true,
onChanged: (value) => setState(() => _currentIntValue = value),
),
SizedBox(height: 32),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(
icon: Icon(Icons.remove),
onPressed: () => setState(() {
final newValue = _currentIntValue - 10;
_currentIntValue = newValue.clamp(0, 100);
}),
),
Text('Current int value: $_currentIntValue'),
IconButton(
icon: Icon(Icons.add),
onPressed: () => setState(() {
final newValue = _currentIntValue + 20;
_currentIntValue = newValue.clamp(0, 100);
}),
),
],
),
Divider(color: Colors.grey, height: 32),
SizedBox(height: 16),
Text('Horizontal', style: Theme.of(context).textTheme.headline6),
NumberPicker(
value: _currentHorizontalIntValue,
minValue: 0,
maxValue: 100,
step: 10,
itemHeight: 100,
axis: Axis.horizontal,
onChanged: (value) =>
setState(() => _currentHorizontalIntValue = value),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
border: Border.all(color: Colors.black26),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(
icon: Icon(Icons.remove),
onPressed: () => setState(() {
final newValue = _currentHorizontalIntValue - 10;
_currentHorizontalIntValue = newValue.clamp(0, 100);
}),
),
Text('Current horizontal int value: $_currentHorizontalIntValue'),
IconButton(
icon: Icon(Icons.add),
onPressed: () => setState(() {
final newValue = _currentHorizontalIntValue + 20;
_currentHorizontalIntValue = newValue.clamp(0, 100);
}),
),
],
),
],
);
}
}
class _DecimalExample extends StatefulWidget {
@override
__DecimalExampleState createState() => __DecimalExampleState();
}
class __DecimalExampleState extends State<_DecimalExample> {
double _currentDoubleValue = 3.0;
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
SizedBox(height: 16),
Text('Decimal', style: Theme.of(context).textTheme.headline6),
DecimalNumberPicker(
value: _currentDoubleValue,
minValue: 0,
maxValue: 10,
decimalPlaces: 2,
onChanged: (value) => setState(() => _currentDoubleValue = value),
),
SizedBox(height: 32),
],
);
}
}
运行效果
该示例包含两个选项卡:一个是用于整数的选择器,另一个是用于小数的选择器。每个选项卡都展示了默认和水平方向的数字选择器,并提供了增加和减少按钮来手动调整值。
希望这个详细的示例能帮助您更好地理解和使用numberpicker
插件!如果有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter数字选择器插件numberpicker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数字选择器插件numberpicker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter中使用number_picker
插件的示例代码。number_picker
是一个流行的Flutter插件,用于创建数字选择器。在使用之前,请确保您已经在pubspec.yaml
文件中添加了该插件的依赖项:
dependencies:
flutter:
sdk: flutter
number_picker: ^2.0.0 # 请检查最新版本号
添加依赖项后,运行flutter pub get
来安装插件。
下面是一个完整的示例代码,展示如何在Flutter应用中使用number_picker
插件:
import 'package:flutter/material.dart';
import 'package:number_picker/number_picker.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Number Picker Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: NumberPickerDemo(),
);
}
}
class NumberPickerDemo extends StatefulWidget {
@override
_NumberPickerDemoState createState() => _NumberPickerDemoState();
}
class _NumberPickerDemoState extends State<NumberPickerDemo> {
int selectedNumber = 0;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Number Picker Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
'Selected Number: $selectedNumber',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
NumberPicker(
value: selectedNumber,
minValue: 0,
maxValue: 100,
step: 1,
decimalPlaces: 0,
onValueChanged: (newValue) {
setState(() {
selectedNumber = newValue;
});
},
),
],
),
),
);
}
}
解释
-
依赖项添加: 在
pubspec.yaml
文件中添加number_picker
依赖项。 -
主应用结构:
MyApp
是一个无状态小部件,定义了应用的主题和主页。NumberPickerDemo
是一个有状态小部件,用于管理数字选择器的状态。
-
状态管理:
selectedNumber
变量用于存储当前选择的数字。- 使用
setState
方法在数字选择器值变化时更新UI。
-
数字选择器:
NumberPicker
小部件接受多个参数:value
:当前选择的数字。minValue
和maxValue
:可选数字的最小值和最大值。step
:每次变化的步长。decimalPlaces
:小数点位数(在此示例中为0,表示整数)。onValueChanged
:当选择的值变化时调用的回调函数。
这个示例展示了如何使用number_picker
插件在Flutter应用中创建一个简单的数字选择器。您可以根据需要调整最小值、最大值、步长和其他参数。