我在Windows上尝试Flutter开发。我有一个带有InputField的简单测试应用程序。我希望第一个键盘输入是一个大写字母,但是目前还无法看到实现这一目标的方法(例如,按下按键启动键盘)。有什么想法吗?
代码(稍微简化)是:
import 'package:flutter/material.dart';
void main() {
runApp(new MaterialApp(
theme: new ThemeData.dark(),
home: new MainScreen()
));
}
class MainScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
leading: new IconButton(
icon: new Icon(Icons.menu),
tooltip: 'Navigation menu',
onPressed: null,
),
title: new Text('Test'),
),
body: new NewTest(),
);
}
}
/// Widget
class NewTest extends StatefulWidget {
@override
_NewTestInputState createState() => new _NewTestInputState();
}
/// State
class _NewTestInputState extends State<NewTest> {
InputValue _currentInput;
void _handleInputChange(InputValue input) {
if (input != _currentInput){
setState(() {
_currentInput = input;
});
}
}
void _handleInputSubmitted(InputValue input) {
setState(() {
_currentInput = const InputValue();
});
}
@override
Widget build(BuildContext context) {
InputField _widget = new InputField(
value: _currentInput,
hintText: 'Enter text',
keyboardType: TextInputType.text,
autofocus: true,
onChanged: _handleInputChange,
onSubmitted: _handleInputSubmitted,
style: new TextStyle(fontSize: 20.0),
);
Container _container = new Container(
child: _widget,
decoration: new BoxDecoration(
border: new Border.all(
color: Colors.green[300],
width: 2.0,
),
),
padding: new EdgeInsets.all(16.0),
);
return _container;
}
}
答案 0 :(得分:3)
Flutter具有用于文本字段的 textCapitalization 属性。将此属性设置为 TextCapitalization.sentences 或任何可用值,例如 .characters或.words ,如下所示:
TextField(
keyboardType: TextInputType.text,
**textCapitalization: TextCapitalization.sentences,**
style: TextStyle(
fontSize: 30.0,
color: Colors.black,
fontWeight: FontWeight.bold
),
)
答案 1 :(得分:2)
起始小写是我们在Flutter的键盘包装器的iOS实现中的一个错误,从现在开始修复了!
我在此处提交了一个错误,可以将此配置文件设置为可配置(因此您可以禁用autocapitalize句子行为):https://github.com/flutter/flutter/issues/9363
如果这不能解决您的问题,请不要犹豫。
答案 2 :(得分:2)
这是TextInputAction
类的行为的完整列表
textCapitalization :TextField提供了用于大写用户输入的文本的选项。
TextCapitalization.sentences
:这是最常见的大写形式,每个句子的首字母都转换为大写。
TextField(
textCapitalization: TextCapitalization.sentences,
),
TextCapitalization.characters
:
大写句子中的所有字符。
TextField(
textCapitalization: TextCapitalization.characters,
),
TextCapitalization.words
:
每个单词的首字母大写。
TextField(
textCapitalization: TextCapitalization.words,
),
启用或禁用特定TextField的自动更正。使用自动更正字段进行设置。这也会禁用输入建议。
TextField(
autocorrect: false,
),
注意:仅支持文本键盘,其他键盘类型将忽略此配置。大写字母可识别语言环境。