Flutter:在一个简单的例子中输入文本字段不能正常工作.....我哪里错了?

bbuxkriu  于 2023-02-25  发布在  Flutter
关注(0)|答案(2)|浏览(145)

我做了一个简单的例子,输入文本,但在我的手机(诺基亚边缘6)无论是在旧平板电脑(三星)不工作.... 2问题:
1)如果我点击输入,插入的字符串(只要我写了一些文本)不会出现在输入中
2)如果使用输入的初始值,如果我点击它,我无法写入文本,也无法将光标定位到我想要的位置(它只能在输入中的其他文本之前移动)
我该怎么办?非常感谢!
下面是我的代码:

import 'package:flutter/material.dart';

void main() {
  runApp(
    new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue
      ),
      home: new FlutterDemo()
    )
  );
}

class FlutterDemo extends StatefulWidget {
  FlutterDemo({ Key key }) : super(key: key);

  @override
  _FlutterDemoState createState() => new _FlutterDemoState();
}

class _FlutterDemoState extends State<FlutterDemo> {

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('Input Demo')
      ),
      body: new Center(
        child:
          new Input(
            value: new InputValue(text: 'via Dei Giacinti n° 8'),
            labelText: 'INDIRIZZO'
          )
      )
    );
  }
}
smdncfj3

smdncfj31#

据我所知,问题是每次用户编辑文本(或改变光标位置)时,小部件的状态都会改变,因此它会被重新构建。当小部件构建时,您指定Input的文本,因此它永远不会改变。
以下方法应该有效:

class _FlutterDemoState extends State<FlutterDemo> {
  InputValue inputValue = new InputValue(text: 'via Dei Giacinti n° 8');

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(title: new Text('Input Demo')),
        body: new Center(child: new Input(
            value: inputValue,
            labelText: 'INDIRIZZO',
            onChanged: (InputValue newInputValue) {
              setState(() {
                inputValue = newInputValue;
              });
            })));
  }
}
sqxo8psd

sqxo8psd2#

我在Flutter Web中也遇到了同样的问题,但后来我注意到,如果我添加maxlines: 2,它确实起作用了。
TextFotmField() and TextField()

相关问题