在我的 Flutter 应用程序中,我尝试在我的一个小部件的 build() 方法中三元运算符的 else 部分使用 Dart 扩展运算符(即 -...)。
IE-
class SearchCriteriaState extends State<SearchCriteria> {
List<SearchParameters> listSearchParam = [];
Widget build(BuildContext context) {
return Column(
children: [
Text('hey there'),
listSearchParam.isEmpty
? Text ('Empty
: ...listSearchParam.map((param)=>Text(param.toString()).toList(),
],
);
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将无法编译,出现下面的错误,并且扩展语句用红色下划线表示。
Expected to find ','.dart(expected_token)
Run Code Online (Sandbox Code Playgroud)
如果我仅用扩展语句替换整个三元,它将编译并运行(除非它不处理列表为空的边缘条件)。
有任何想法吗?
我当前使用的解决方法是将扩展语句包装在另一个 Column() 中,该方法可以工作,但很丑陋('scuse my French)。
我已经搜索过类似的问题,我能找到的最接近的问题也是在三元中使用扩展运算符的问题,但在 webpack 的上下文中,我假设是使用 React。
非常感谢所有建议。
/何塞利托
ric*_*aru 10
请用if else。
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(),
],
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2253 次 |
| 最近记录: |