Ich habe eine Liste von Filmen. Das enthält alle animierten und nicht animierten Filme. Um festzustellen, ob es animiert ist oder nicht, gibt es ein Flag namens isAnimated .
Ich möchte nur Animationsfilme zeigen. Ich habe Code geschrieben, um nur Animationsfilme herauszufiltern, aber es wurde ein Fehler angezeigt.
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new HomePage(),
);
}
}
class Movie {
Movie({this.movieName, this.isAnimated, this.rating});
final String movieName;
final bool isAnimated;
final double rating;
}
List<Movie> AllMovies = [
new Movie(movieName: "Toy Story",isAnimated: true,rating: 4.0),
new Movie(movieName: "How to Train Your Dragon",isAnimated: true,rating: 4.0),
new Movie(movieName: "Hate Story",isAnimated: false,rating: 1.0),
new Movie(movieName: "Minions",isAnimated: true,rating: 4.0),
];
class HomePage extends StatefulWidget{
@override
_homePageState createState() => new _homePageState();
}
class _homePageState extends State<HomePage> {
List<Movie> _AnimatedMovies = null;
@override
void initState() {
super.initState();
_AnimatedMovies = AllMovies.where((i) => i.isAnimated);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Container(
child: new Text(
"All Animated Movies here"
),
),
);
}
}
List
Ergänzung benötigen.toList()
Dabei gibt die Funktion in einer Liste Iterable zurück. Sie müssen es mit der Funktion List.from (Iterable) in List konvertieren.
Im obigen Szenario sollten Sie also das folgende Codefragment verwenden.
Iterable _AnimatedMoviesIterable = AllMovies.where ((i) => i.isAnimated);
_AnimatedMovies = List.from (_AnimatedMoviesIterable);
quelle
toList()
Methode, die meiner Meinung nach viel einfacher zu lesen ist.Sie können die toList () -Methode verwenden, um Ihre gewünschte Ausgabe wie folgt zu erhalten
toList()
Sammelt alle Elemente dieses Streams in aList
.So beheben Sie das oben genannte Problem:
Add a
toList()
(Dieser Code erstellt aList<dynamic>
)Anstatt von
quelle