使用.text getter / setter时,TextEditingController抛出null

时间:2019-05-14 01:07:11

标签: flutter

在Flutter中,当我为TextField分配一个值或使用TextEditingController检查TextField小部件的值时,我收到一个NoMethodError,该消息指示getter / setter“ text”被调用为空。

我已经用以下代码尝试了Widget测试:

class TestTEC extends StatefulWidget {
  @override
  TestTECstate createState() => TestTECstate();
}

class TestTECstate extends State<TestTEC> {
  var textController = new TextEditingController();
  Widget build(context) {
    return Scaffold(
      body: Row(
        children: <Widget>[
          TextField(controller: textController),
          RaisedButton(onPressed: () {
            setState(() {
              textController.text = "New text";
            });
          }),
        ],
      ),
    );
  }
}

这是我使用的测试代码:

 testWidgets('smoke test', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    await tester.pumpWidget((TestTEC()));
    await tester.tap(find.byType(RaisedButton));
    await tester.pump();
    expect(find.text('New text'), findsOneWidget);
    await tester.enterText(find.byType(TextField), 'I am a text');
    await tester.pump();
    expect(find.text('I am a test'), findsOneWidget);
    await tester.tap(find.byType(RaisedButton));
    await tester.pump();
    expect(find.text('New text'), findsOneWidget);
  });

这是输出:

 NoSuchMethodError: The setter 'text=' was called on null.
  Receiver: null
  Tried calling: text="key"
  dart:core               Object.noSuchMethod
  widget_test.dart 91:11  textEditingControllerTest
  widget_test.dart 75:14  main.<fn>.<fn>

我尝试删除并重新安装flutter sdk。 我的另一台计算机也发生了同样的问题。

我以前使用过.text属性,但在1.5.4.hotfix2版本之前没有发生此问题。如果我做错了,请纠正我。我什至无法通过controller.text.isEmpty检查TextField是否为空,它还会引发对null调用的“文本”。

0 个答案:

没有答案