我在Flutter应用中出现此错误:
NoSuchMethodError:在null上调用了getter'text'。接收者:null尝试致电:短信也可以看看:https://flutter.dev/docs/testing/errors
import 'package:flutter/material.dart';
void main() {
runApp(
NewApp()
);
}
class NewApp extends StatefulWidget {
NewApp({Key key}) : super(key: key);
@override
_NewAppState createState() => _NewAppState();
}
class _NewAppState extends State<NewApp> {
TextEditingController textController;
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: <Widget>[
TextField(
controller: textController,
),
Text(
textController.text
)
],
)
);
}
}
似乎您尚未初始化TextEditingController
。您可以在这样声明时进行初始化,
TextEditingController textController = TextEditingController();
在使用前必须对其进行初始化,否则实例textController
保持为空,而textController.text
被调用为空。
您在其中存在几个错误,因此我将仅发布整个工作代码。您缺少MaterialApp和Scaffold窗口小部件。这些是您的App运行所必需的(在每个屏幕上都需要Scaffold)。
对于TextController,您必须检查控制器是否存在,以及controller.text是否具有值,否则,当小部件需要字符串时,尝试尝试分配null。我在这里用半人马表情解决了。
condition ? if yes block : if no block
完整代码:
import 'package:flutter/material.dart';
void main() {
runApp(NewApp());
}
class NewApp extends StatefulWidget {
NewApp({Key key}) : super(key: key);
@override
_NewAppState createState() => _NewAppState();
}
class _NewAppState extends State<NewApp> {
TextEditingController textController;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container(
child: Column(
children: <Widget>[
TextField(
controller: textController,
),
Text(textController != null && textController.text != null
? textController.text
: "")
],
)),
),
);
}
}
由于出现错误,因为尚未实例化textController
,因此其值为null
。您可以使属性调用可感知null来跳过错误:
textController?.text
不过您还会收到其他错误。修复了其他错误后,该应用程序可以运行,但我怀疑它是否可以满足您的要求。