在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调用的“文本”。