4

我用输入文本做了一个简单的例子,但在我的手机(诺基亚 edge 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'
          )
      )
    );
  }
}
4

2 回答 2

8

据我了解,问题在于每次用户编辑文本(或更改光标的位置)时,小部件的状态都会发生变化,以便重新构建。构建小部件时,您指定 的文本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;
              });
            })));
  }
}
于 2016-06-18T14:41:25.113 回答
0

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

TextFotmField() and TextField()

于 2019-08-16T06:26:06.293 回答