Новое: введите '_InternalLinkedHashMap'не является подтипом типа' DocumentSnapshot ' - PullRequest
1 голос
/ 02 декабря 2019

Извините, я сейчас занимаюсь программированием, но я учусь, пожалуйста, помогите мне. Я застрял в этой проблеме. Это одно из моих первых приложений, и все, что мне было сделано, так это нужно в справке likke, чтобы это сделать.

Я получаю эту ошибку: тип '_InternalLinkedHashMap' не является подтипом типа 'DocumentSnapshot'

Код выглядит следующим образом:

    import 'package:flutter/material.dart';
    import 'package:brew_app/services/auth.dart';
    import 'package:cloud_firestore/cloud_firestore.dart';

    class Home extends StatelessWidget {

    final AuthService _auth = AuthService();
    @override
    Widget build(BuildContext context) {
     return Scaffold(
      backgroundColor : Colors.grey[50],
      appBar: AppBar(
        title: Text('Brew Crew'),
        backgroundColor: Colors.orange[400],
        elevation: 0.0,
        actions: <Widget>[
          FlatButton.icon(
            icon: Icon(Icons.person),
            label: Text('Logout'),
            onPressed:() async {
              await _auth.signOut();

           },

         )
       ],
     ),
     body: ListPage(),
   );
 }

}

  class ListPage extends StatefulWidget {



    @override
    _ListPageState createState() => _ListPageState();
  }

  class _ListPageState extends State<ListPage> {

 Future getPosts() async {
   var firestore = Firestore.instance;

QuerySnapshot qn = await firestore.collection("posts").getDocuments();

return qn.documents;


  }

  navigateToDetails(DocumentSnapshot post){
    Navigator.push(context, MaterialPageRoute(builder: (context) => DetailPage(post: post,)));
 } 

 @override
  Widget build(BuildContext context) {
    return Container(
     child: FutureBuilder(
       future: getPosts(),
         builder: (_, snapshot){
        if(snapshot.connectionState == ConnectionState.waiting) {
          return Center(
            child: Text("Loading..."),
          );
        } else {
          return ListView.builder(
              itemCount: snapshot.data.length,
              itemBuilder: (_, index){

                return ListTile(
                  title: Text(snapshot.data[index].data["title"]),
                  onTap: () => navigateToDetails(snapshot.data[index].data),
                );

          });


    }

  }),
);

}}

class DetailPage extends StatefulWidget {


  final DocumentSnapshot post;

  DetailPage({this.post});
  @override
  _DetailPageState createState() => _DetailPageState();
}

class _DetailPageState extends State<DetailPage> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Card(
        child: ListTile(
          title: Text(widget.post.data["title"]),
          subtitle: Text(widget.post.data["content"]),
        )
      )
    );
  }
}

1 Ответ

0 голосов
/ 02 декабря 2019

Используйте этот код:

snapshot.data[index].data // is of type Map<String,Dynamic>     
snapshot.data[index] // is the DocumentSnapshot
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...