6

我想创建一个具有两个选项卡的 TabBarView 的应用程序。在第一个选项卡上有一个文本字段,在另一个选项卡上有一个文本小部件,它应该显示您在文本字段中输入的文本,但我总是收到错误,因为文本为空。(我是使用颤振编程的新手)

我试图在 TextOutput 类中初始化变量,但它不起作用,因为变量是最终的。

TabBarView(
      children: <Widget>[
        TextCreatePage(), TextOutput()
      ],




class TextCreatePageState extends State<TextCreatePage> {
String textvalue;
@override
Widget build(BuildContext context) {
  return Center(child: TextField(
    onChanged: (String value) {
    setState(() {
       textvalue = value;
       TextOutput(textvalue: textvalue,);
            });





class TextOutput extends StatelessWidget {
final String textvalue;

TextOutput({this.textvalue});
@override
Widget build(BuildContext context) {
    return Text(textvalue); 
}
}
4

4 回答 4

11

因此,对于任何搜索并到达这里的人,我正在使用它来管理空字符串变量。

1. 显示空文本

String nullText; //for null-safety change to: String? nullText;

//now, inside of your widget build
Text(nullText ?? '');

2.不显示文本小部件

String nullText;

//now, inside of your widget build
if(nullText != null)
 Text(nullText);

具有零安全性

String? nullText;

//now, inside of your widget build
if(nullText != null)
 Text(nullText!);

你也可以这样显示,但这显示的是

String nullText; //for null-safety change to String? nullText;

//now, inside of your widget build
Text('$nullText');

现场示例https://dartpad.dev/faab5bc3c2df9573c0a75a5ce3d4b4b9

于 2020-07-07T04:15:29.510 回答
3

从您在问题中提供的信息中不清楚是什么代码导致了错误,但我猜是这一行:

return Text(textvalue); 

如果您将其更改为

return textvalue != null ? Text(textvalue) : Container(); 

你的错误应该消失。

于 2019-01-27T13:21:20.040 回答
0

Hector Aguero's answer is what I've been doing to workaround the error.

I use this everywhere:

Text(nullText ?? '');

But I wonder what's stopping Flutter team to make Text() widget support null value?

// This should be acceptable and simply not rendering any text
// why they don't allow this is beyond me
Text(nullText);
于 2022-02-17T03:14:30.150 回答
0
于 2022-02-17T03:36:15.340 回答