首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Flutter的文本输入字段中配置自动大小写行为?

如何在Flutter的文本输入字段中配置自动大小写行为?
EN

Stack Overflow用户
提问于 2017-03-12 20:29:22
回答 3查看 17.6K关注 0票数 26

我正在Windows上试验Flutter开发。我有一个带有InputField的简单测试应用程序。我希望第一个键盘输入是大写字母,但目前看不到实现这一点的方法(例如,在按住shift键的情况下启动键盘)。有什么想法吗?

代码(有点简化)是:

代码语言:javascript
复制
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;
  }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-13 12:28:58

开头的小写字母是Flutter键盘包装器的iOS实现中的一个错误,这个问题到今天为止已经被修复了!

我在这里提交了一个使其可配置的错误(这样你就可以禁用自动大写句子的行为):https://github.com/flutter/flutter/issues/9363

如果这不能解决您的问题,请不要犹豫。

票数 4
EN

Stack Overflow用户

发布于 2019-01-22 22:16:21

Flutter具有文本字段的textCapitalization属性。将此属性设置为TextCapitalization.sentences或任何可用值,例如.characters或.words,如下所示:

代码语言:javascript
复制
TextField(
   keyboardType: TextInputType.text,
   **textCapitalization: TextCapitalization.sentences,**
   style: TextStyle(
      fontSize: 30.0,
      color: Colors.black,
      fontWeight: FontWeight.bold
   ),
)
票数 55
EN

Stack Overflow用户

发布于 2020-11-04 11:44:43

下面是TextInputAction类行为的完整列表

textCapitalization:TextField提供了将用户输入的文本大写的选项。

  1. TextCapitalization.sentences:这是最常见的大写类型,每个句子的第一个字母都转换为大写。

TextField( textCapitalization: TextCapitalization.sentences,),

  1. TextCapitalization.characters:将句子中的所有字符大写。

TextField( textCapitalization: TextCapitalization.characters,),

  1. TextCapitalization.words:将每个单词的第一个字母大写。

TextField( textCapitalization: TextCapitalization.words,),

  1. 启用或禁用特定TextField的自动更正。使用AutoCorrect字段对其进行设置。这也会禁用输入建议。

TextField(自动更正: false,),(

:false,)

备注:仅支持文本键盘,其他键盘类型将忽略此配置。大小写是地区感知的。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42747394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档