【问题标题】:Flutter Navigator - How to pass DocumentSnapshot<List> to Detail Page?Flutter Navigator - 如何将 DocumentSnapshot<List> 传递到详细信息页面?
【发布时间】:2020-12-09 03:16:58
【问题描述】:

我正在寻找一种解决方案,通过 Navigator 或其他方式将我的快照传递到我的详细信息页面。

   class SoccerList extends StatelessWidget {
 @override
 Widget build(BuildContext context) {
   final database = Provider.of<FirestoreDatabase>(context, listen: false);
   return StreamBuilder<List<Soccer>>(
     stream: database.soccerStream(),
     builder: (_, snapshot) {
       if (snapshot.connectionState == ConnectionState.active) {
         final soccer = snapshot.data;
         if (soccer == null) {
           return Scaffold(
             body: Center(
               child: Text('User list is empty',
                   style: Theme.of(context).textTheme.headline6),
             ),
           );
         }
         return ListView.builder(
           itemCount: soccer.length,
           itemBuilder: (context, index) {
             final item = soccer[index];

             return Container(
               margin: EdgeInsets.fromLTRB(15, 5, 15, 5),
               width: double.infinity,
               decoration: BoxDecoration(
                 borderRadius: BorderRadius.circular(20),
                 color: Colors.white,
                 boxShadow: [
                   BoxShadow(
                     color: Colors.grey.withOpacity(0.5), //color of shadow
                     spreadRadius: 5, //spread radius
                     blurRadius: 7, // blur radius
                     offset: Offset(0, 2), // changes position of shadow
                     //first paramerter of offset is left-right
                     //second parameter is top to down
                   ),
                   //you can set more BoxShadow() here
                 ],
               ),
               child: ListTile(
                 onTap: () {
                   Navigator.push(
                       context,
                       MaterialPageRoute(
                         builder: (context) => DetailBetScreen(soccer: soccer)
                           //[index],
                         )
                       );
                     
                 },
                 shape: RoundedRectangleBorder(
                   borderRadius: BorderRadius.circular(20.0),
                 ),
                 leading: IconButton(
                   iconSize: 24,
                   icon: new SvgPicture.asset('assets/ball/fussball7.svg'), onPressed: () {  },
                 ),
                   
                 
             
                 title: item.displayname != null? Text(item.displayname) : Text(item.sporttype),
                 subtitle: Text(item.sporttype),
               ),
             );
           },
         );
       }

错误信息是:

小部件库捕获的异常: “List”类型不是“DocumentSnapshot”类型的子类型 相关的导致错误的小部件是 材料应用

如何将此快照(足球)传递到详细信息页面?当然快照包含一个列表......我需要两者。如有任何想法,请提前致谢!

这是我的信息流:

Stream<List<Soccer>> soccerStream() => _service.soccerStream<Soccer>(
        path: FirestorePath.bets(),
        builder: (data, documentId) => Soccer.fromMap(data, documentId),
      );

这是我的详细信息屏幕:

class DetailBetScreen extends StatelessWidget {
  final DocumentSnapshot soccerBet;
  DetailBetScreen({Key key, @required this.soccerBet}) : super(key: key);

【问题讨论】:

    标签: list flutter snapshot navigator pass-data


    【解决方案1】:

    你可以试试这个:

    class DetailBetScreen extends StatelessWidget {
    final dynamic soccerBet;
    DetailBetScreen({Key key, @required this.soccerBet}) : super(key: key);
    

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 2020-03-04
      • 1970-01-01
      • 2021-08-30
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多