我正在尝试在Windows上开发Flutter。我有一个简单的测试应用程序与一个InputField。我希望第一个键盘输入是一个大写字母,但看不到实现这一点的方法(例如。按下Shift键启动键盘)。有什么想法吗?
代码(稍微简化)是:
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;
}
}
3条答案
按热度按时间6ioyuze21#
Flutter为文本字段提供了一个textCapitalization属性。将此属性设置为TextCapitalization.sentences或任何可用值,例如**.characters或.words**如下所示:
btqmn9zl2#
启动错误是Flutter的键盘 Package 器的iOS实现中的一个错误,该错误已于今天修复!
我在这里提交了一个可配置的bug(这样你就可以禁用自动大写的句子行为):https://github.com/flutter/flutter/issues/9363
如果这不能解决您的问题,请不要犹豫,与我们联系。
67up9zun3#
最常见的问题是,由于某种原因:
keyboardType: TextInputType.name
不大写第一个字母,尽管你会认为一个“名字”应该大写。所以一个典型的用户会添加:
但这并不起作用,除非你删除
keyboardType: TextInputType.name
,然后它的工作如预期。这种令人沮丧的行为还有其他组合。删除键盘类型,但保留文本大写:
TextCapitalization.words