Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 检索列表<;字符串>;从Firestore进入Flatter页面_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

Flutter 检索列表<;字符串>;从Firestore进入Flatter页面

Flutter 检索列表<;字符串>;从Firestore进入Flatter页面,flutter,dart,google-cloud-firestore,Flutter,Dart,Google Cloud Firestore,我想在show movie Flatter页面上显示我的Cloud Firestore中的图像中显示的详细信息,但不知道如何从Firestore检索列表,以及如何在代码中实现的自定义卡中显示该列表。 我尝试过其他方法,但没有成功。 有人能帮助实现上述目标吗? 这是我在这方面的第一个问题,很抱歉犯了错误 class CustomCard extends StatelessWidget { CustomCard( {@required this.movie_n

我想在show movie Flatter页面上显示我的Cloud Firestore中的图像中显示的详细信息,但不知道如何从Firestore检索列表,以及如何在代码中实现的自定义卡中显示该列表。 我尝试过其他方法,但没有成功。 有人能帮助实现上述目标吗? 这是我在这方面的第一个问题,很抱歉犯了错误

    class CustomCard extends StatelessWidget {
      CustomCard(
          {@required this.movie_name,
          this.genre,
          this.famous_cast,
          this.rating,
          this.comment,
          this.free_link});

      final movie_name;
      final genre;
      final famous_cast;
      final rating;
      final comment;
      final free_link;

      @override
      Widget build(BuildContext context) {
        return Card(
          child: Container(
            padding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 10.0),
            child: Column(
              children: <Widget>[
                Text(movie_name),
                Text(genre),
                Text(famous_cast),
                Text(rating),
                Text(comment),
                Text(free_link),
              ],
            ),
          ),
        );
      }
    }

    class ShowPage extends StatefulWidget {
      @override
      _ShowPageState createState() => _ShowPageState();
    }

    class _ShowPageState extends State<ShowPage> {
      final db = Firestore.instance.collection('Movies');

      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          resizeToAvoidBottomPadding: false,
          appBar: AppBar(
            title: Text('Show Movies'),
            backgroundColor: Colors.blueGrey[900],
          ),
          backgroundColor: Colors.white,
          body: Container(
            padding: const EdgeInsets.all(20.0),
            child: StreamBuilder<QuerySnapshot>(
              stream: db.snapshots(),
              builder:
                  (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
                if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
                switch (snapshot.connectionState) {
                  case ConnectionState.waiting:
                    return new Text('Loading.....');
                  default:
                    return new ListView(children: getExpenseItems(snapshot));
                }
              },
            ),
          ),
        );
      }

      getExpenseItems(AsyncSnapshot<QuerySnapshot> snapshot) {
        return snapshot.data.documents
            .map(
              (doc) => new CustomCard(
                movie_name: new Text(doc["movie_n"]),
                genre: new Text(doc["genre"]),
                famous_cast: new Text(doc["famous_c"]),
                rating: new Text(doc["rating"].toString()),
                comment: new Text(doc["comments"]),
                free_link: new Text(doc["free_link"]),
              ),
            )
            .toList();
      }
    }
class CustomCard扩展了无状态小部件{
海关卡(
{@需要这个。电影名称,
这种类型,
这个著名的演员,
这个.评级,,
这句话,,
这个.free_link});
最终电影名称;
最终体裁;
最后的著名演员;
最终评级;
最后评论;
最终免费链接;
@凌驾
小部件构建(构建上下文){
回程卡(
子:容器(
填充:常量边集。对称(垂直:15.0,水平:10.0),
子:列(
儿童:[
文本(电影名称),
文本(体裁),
文本(著名演员),
文本(评级),
文本(注释),
文本(自由链接),
],
),
),
);
}
}
类ShowPage扩展StatefulWidget{
@凌驾
_ShowPageState createState()=>\u ShowPageState();
}
类_ShowPageState扩展状态{
final db=Firestore.instance.collection('Movies');
@凌驾
小部件构建(构建上下文){
归还新脚手架(
resizeToAvoidBottomPadding:false,
appBar:appBar(
标题:文本(“放映电影”),
背景颜色:颜色。蓝灰色[900],
),
背景颜色:Colors.white,
主体:容器(
填充:常数边集全部(20.0),
孩子:StreamBuilder(
流:db.snapshots(),
建设者:
(BuildContext上下文,异步快照){
if(snapshot.hasError)返回新文本('Error:${snapshot.Error}');
交换机(快照.连接状态){
案例连接状态。正在等待:
返回新文本(“加载…”);
违约:
返回新的ListView(子项:getExpenseItems(快照));
}
},
),
),
);
}
getExpenseItems(异步快照快照){
返回snapshot.data.documents
.地图(
(doc)=>新客户卡(
电影名称:新文本(文档[“电影”]),
类型:新文本(文档[“类型]),
著名演员:新文本(doc[“著名演员]),
评级:新文本(文档[“评级”].toString()),
注释:新文本(文件[“注释]),
自由链接:新文本(文档[“自由链接]),
),
)
.toList();
}
}

由于我不确定
CustomCard
期望的是什么,我假设它是一个
列表
,所以您可能希望执行类似的操作

class CustomCard extends StatelessWidget {
  CustomCard(
      {@required this.movie_name,
      this.genres,
      this.famous_casts,
      this.rating,
      this.comment,
      this.free_link});

  final movie_name;
  final List<Object> genres;
  final List<Object> famous_casts;
  final rating;
  final comment;
  final free_link;

  @override
  Widget build(BuildContext context) {
   return Card(
      child: Container(
        padding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 10.0),
        child: Column(
          children: <Widget>[
            Text(movie_name),
            ...genres
                .map(
                  (genre) => Text(genre + ', '),
                )
                .toList(),
            ...famous_casts
                .map(
                  (famous_cast) => Text(famous_cast + ', '),
                )
                .toList(),
            Text(rating),
            Text(comment),
            Text(free_link),
          ],
        ),
      ),
    );
  }
}

getExpenseItems(AsyncSnapshot<QuerySnapshot> snapshot) {
        return snapshot.data.documents
            .map(
              (doc) =>  CustomCard(
                movie_name:  doc["movie_n"],
                genres:  doc["genre"],
                famous_casts:  doc["famous_c"],
                rating:  doc["rating"].toString(),
                comment: doc["comments"],
                free_link:  doc["free_link"],
              ),
            )
            .toList();
      }
class CustomCard扩展了无状态小部件{
海关卡(
{@需要这个。电影名称,
这是一种风格,
这位著名的演员,
这个.评级,,
这句话,,
这个.free_link});
最终电影名称;
最终列表类型;
著名演员的最终名单;
最终评级;
最后评论;
最终免费链接;
@凌驾
小部件构建(构建上下文){
回程卡(
子:容器(
填充:常量边集。对称(垂直:15.0,水平:10.0),
子:列(
儿童:[
文本(电影名称),
…体裁
.地图(
(体裁)=>文本(体裁+,),
)
.toList(),
…著名演员
.地图(
(著名演员)=>文本(著名演员+','),
)
.toList(),
文本(评级),
文本(注释),
文本(自由链接),
],
),
),
);
}
}
getExpenseItems(异步快照快照){
返回snapshot.data.documents
.地图(
(doc)=>客户卡(
电影名称:doc[“电影”],
类型:doc[“类型”],
著名演员:doc[“著名演员”],
评级:doc[“评级”].toString(),
注释:文件[“注释”],
自由链接:doc[“自由链接”],
),
)
.toList();
}

试试这个

因为我不确定
CustomCard
期望的是什么,所以我假设它是一个
列表
,所以您可能希望这样做

class CustomCard extends StatelessWidget {
  CustomCard(
      {@required this.movie_name,
      this.genres,
      this.famous_casts,
      this.rating,
      this.comment,
      this.free_link});

  final movie_name;
  final List<Object> genres;
  final List<Object> famous_casts;
  final rating;
  final comment;
  final free_link;

  @override
  Widget build(BuildContext context) {
   return Card(
      child: Container(
        padding: const EdgeInsets.symmetric(vertical: 15.0, horizontal: 10.0),
        child: Column(
          children: <Widget>[
            Text(movie_name),
            ...genres
                .map(
                  (genre) => Text(genre + ', '),
                )
                .toList(),
            ...famous_casts
                .map(
                  (famous_cast) => Text(famous_cast + ', '),
                )
                .toList(),
            Text(rating),
            Text(comment),
            Text(free_link),
          ],
        ),
      ),
    );
  }
}

getExpenseItems(AsyncSnapshot<QuerySnapshot> snapshot) {
        return snapshot.data.documents
            .map(
              (doc) =>  CustomCard(
                movie_name:  doc["movie_n"],
                genres:  doc["genre"],
                famous_casts:  doc["famous_c"],
                rating:  doc["rating"].toString(),
                comment: doc["comments"],
                free_link:  doc["free_link"],
              ),
            )
            .toList();
      }
class CustomCard扩展了无状态小部件{
海关卡(
{@需要这个。电影名称,
这是一种风格,
这位著名的演员,
这个.评级,,
这句话,,
这个.free_link});
最终电影名称;
最终列表类型;
著名演员的最终名单;
最终评级;
最后评论;
最终免费链接;
@凌驾
小部件构建(构建上下文){
回程卡(
子:容器(
填充:常量边集。对称(垂直:15.0,水平:10.0),
子:列(
儿童:[
文本(电影名称),
…体裁
.地图(
(体裁)=>文本(体裁+,),
)
.toList(),
…著名演员
.地图(
(著名演员)=>文本(著名演员+','),
)
.toList(),
文本(评级),
文本(注释),
文本(自由链接),
],
),
),
);
}
}
getExpenseItems(异步快照快照){
返回snapshot.data.documents
.地图(
(doc)=>客户卡(
电影名称:doc[“movi