flutter - 为什么“.where”方法不能过滤我的 List 对象?
问题描述
我为正在开发的电影评论应用程序编写了以下代码。Movie 类有一些布尔属性来确认电影是否属于特定类型,例如 isRomantic。
但是,例如,以下代码无法仅显示浪漫电影,而是仅显示所有电影名称。
我有两个问题:
我做错了什么?
假设下面的代码和上面提到的预期功能是我想要应用程序做的所有事情,你会说我下面的代码有多高效/优化?我是 Dart 的新手,希望得到一些反馈。
谢谢你。
class MyApp extends StatelessWidget {
List<Movie> movieList = listOfMovieObjects().where((isRomantic) => true);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container(
child: ListView(
children: createListOfMovieItems(),
),
),
),
);
}
List<Widget> createListOfMovieItems() {
List<Widget> myList = [];
for (var i = 0; i < movieList.length; i++) {
myList.add(buildMovieItem(movieList[i], i));
}
return myList;
}
}
class Movie {
String movieName;
bool isRomantic;
bool isComedy;
bool isAction;
Movie({this.movieName, this.isRomantic, this.isComedy, this.isAction});
}
List<Movie> listOfMovieObjects() {
return <Movie>[
Movie(movieName: '1', isRomantic: true, isComedy: true, isAction: false),
Movie(movieName: '2', isRomantic: false, isComedy: false, isAction: true),
Movie(movieName: '3', isRomantic: false, isComedy: true, isAction: true),
Movie(movieName: '4', isRomantic: true, isComedy: true, isAction: true),
];
}
Widget buildMovieItem(Movie movie) {
return Center(
child: Container(
child: Text(
movie.movieName,
style: TextStyle(fontWeight: FontWeight.w800, fontSize: 80.0),
),
height: 100.0,
width: double.infinity,
),
);
}
解决方案
试试这个:
List<Movie> movieList = listOfMovieObjects().where((movie) => movie.isRomantic).toList();
推荐阅读
- android-studio - Pdfbox-Android 显示空白页面
- php - PHP - 第三方休息调用,等待响应,防止重新加载
- node.js - Linkeding Api v2 full profile socpe
- react-native - 在 React Native 中切换存储库
- nswag - 在 NSwag 生成的客户端中初始化列表
- java - 使用 Java 8 将 dto 列表生成到实体列表中
- javascript - 我需要将我的对象数组转换为一个具有特定键的对象
- java - 基于属性的动态bean验证
- bash - bash 中使用什么输出(使用 HTTPie)?
- java - 为什么 Collectors.toMap (在 JDK8 java.util.stream 中)不允许使用相同的密钥?