Как создать поле ввода чисел в Flutter?
Я не могу найти способ создать поле ввода в Flutter, которое откроет цифровую клавиатуру. Возможно ли это с виджетами Flutter? Некоторые обсуждения github, похоже, указывают, что это поддерживаемая функция, но я не могу найти документацию об этом.
Ответы
Ответ 1
Вы можете указать число в качестве клавиатуры типа для TextField, используя:
keyboardType: TextInputType.number
Проверьте мой файл main.dart
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new MaterialApp(
home: new HomePage(),
theme: new ThemeData(primarySwatch: Colors.blue),
);
}
}
class HomePage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return new HomePageState();
}
}
class HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return new Scaffold(
backgroundColor: Colors.white,
body: new Container(
padding: const EdgeInsets.all(40.0),
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new TextField(
decoration: new InputDecoration(labelText: "Enter your number"),
keyboardType: TextInputType.number,
),
],
)),
);
}
}
Ответ 2
Установить клавиатуру и валидатор
String numberValidator(String value) {
if(value == null) {
return null;
}
final n = num.tryParse(value);
if(n == null) {
return '"$value" is not a valid number';
}
return null;
}
new TextFormField(
keyboardType: TextInputType.number,
validator: numberValidator,
textAlign: TextAlign.right
...
Ответ 3
для тех, кто ищет, чтобы сделать TextField или TextFormField принимать только цифры. попробуйте этот блок кода.
TextFormField(
controller: _controller,
keyboardType: TextInputType.number,
inputFormatters: <TextInputFormatter>[
WhitelistingTextInputFormatter.digitsOnly
],
decoration: InputDecoration(
labelText:"whatever you want",
hintText: "whatever you want",
icon: Icon(Icons.phone_iphone))
)
Ответ 4
Для тех, кому нужно работать с денежным форматом в текстовых полях:
Использовать только:, (запятая) и. (Период)
и заблокируйте символ: - (дефис, минус или тире)
а также: ⌴ (пробел)
В вашем TextField просто установите следующий код:
keyboardType: TextInputType.numberWithOptions(decimal: true),
inputFormatters: [BlacklistingTextInputFormatter(new RegExp('[\\-|\\ ]'))],
Символ дефиса и пробел по-прежнему будут отображаться на клавиатуре, но будут заблокированы.
Ответ 5
Вы можете легко изменить тип ввода с помощью параметра keyboardType и у вас есть много возможностей проверить документацию TextInputType, чтобы вы могли использовать номер или значение телефона
new TextField(keyboardType: TextInputType.number)
Ответ 6
Вы можете попробовать это:
TextFormField(
keyboardType: TextInputType.number,
decoration: InputDecoration(
prefixIcon: Text("Enter your number: ")
),
initialValue: "5",
onSaved: (input) => _value = num.tryParse(input),
),
Ответ 7
keyboardType: TextInputType.number
откроет цифровую клавиатуру в фокусе, я бы очистил текстовое поле, когда пользователь вводит/вставляет что-либо еще.
keyboardType: TextInputType.number,
onChanged: (String newVal) {
if(!isNumber(newVal)) {
editingController.clear();
}
}
// Function to validate the number
bool isNumber(String value) {
if(value == null) {
return true;
}
final n = num.tryParse(value);
return n!= null;
}