Flutter:在一个简单的示例中,输入文本字段无法正常工作.....我哪里错了?

Flutter: input text field don't work properly in a simple example..... where am I wrong?

我用输入文本做了一个简单的例子,但是在我的 phone (nokia edge 6) 上,在旧平板电脑 (samsung) 上都不起作用....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'
          )
      )
    );
  }
}

据我了解,问题是每次用户编辑文本(或更改光标的位置)时,小部件的状态都会发生变化,因此需要重新构建。构建小部件时,您指定 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;
              });
            })));
  }
}

我在 flutter web 中遇到了同样的问题,但后来我注意到如果我添加 maxlines: 2 它确实有效。

TextFotmField() and TextField()