Flutter 颤振/省道:在三元函数的Else子句之后使用扩展运算符时出现问题

Flutter 颤振/省道:在三元函数的Else子句之后使用扩展运算符时出现问题,flutter,dart,Flutter,Dart,在我的flatter应用程序中,我试图在我的一个小部件的build()方法中的三元操作符的else部分使用Dart spread操作符(即-…) 即- 如果我仅用spread语句替换整个三元语句,它将编译并运行(除非它不处理列表为空的边缘条件) 有什么想法吗 我目前使用的解决方法是将spread语句包装在另一列()中,该列可以工作,但很有用(“scuse my French”) 我已经搜索过类似的问题,我能找到的最接近的问题也是在三元结构中使用spread操作符的问题,但是在我假设是React的

在我的flatter应用程序中,我试图在我的一个小部件的build()方法中的三元操作符的else部分使用Dart spread操作符(即-…)

即-

如果我仅用spread语句替换整个三元语句,它将编译并运行(除非它不处理列表为空的边缘条件)

有什么想法吗

我目前使用的解决方法是将spread语句包装在另一列()中,该列可以工作,但很有用(“scuse my French”)

我已经搜索过类似的问题,我能找到的最接近的问题也是在三元结构中使用spread操作符的问题,但是在我假设是React的webpack上下文中

非常感谢所有建议


/约瑟利托

如果没有,请使用

import 'package:flutter/material.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final List<String> texts = <String>['1', '2', '3'];
    final bool test = false;

    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: [
            const Text('asdf'),
            if (test)
              const Text('test is TRUE')
            else
              ...texts.map((e) => Text(e)).toList(),
          ],
        ),
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
void main(){
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
最终列表文本=['1','2','3'];
最终布尔测试=假;
返回材料PP(
家:脚手架(
正文:专栏(
儿童:[
常量文本('asdf'),
如果(测试)
常量文本('测试为真')
其他的
…Text.map((e)=>Text(e)).toList(),
],
),
),
);
}
}

忘了提及我的环境:Flatter 1.22.5 Mac OS Catelina 10.15.7您忘了关闭文本小部件的支架。它应该是
listSearchParam.isEmpty?Text('Empty'):…
是的,这就是我的意思。这是我的错别字。fyi@rickimaru给出了一个有效的建议,就是用一个完整的if-else语句替换三元。谢谢rickimaru的建议,但是材料包的导入已经存在了,我只是在写文章时忘了包含它。即使使用import语句,问题仍然存在。@Jose问题不是
import
语句。请重读我的答案。请参阅第
行if(test)
。对不起,rickimaru,我误解了你的建议。我现在就试试看,虽然我不知道在这种情况下可以用“if-else”来代替三元数。@Jose没问题。希望它能解决你的问题。你的建议奏效了。谢谢我没有想到用if-else替换三元,因为我在过去尝试过,它不会编译。你知道这是不是1.22.5的新功能吗?
Expected to find ','.dart(expected_token)
import 'package:flutter/material.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final List<String> texts = <String>['1', '2', '3'];
    final bool test = false;

    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: [
            const Text('asdf'),
            if (test)
              const Text('test is TRUE')
            else
              ...texts.map((e) => Text(e)).toList(),
          ],
        ),
      ),
    );
  }
}