0

タイトルで述べたように、次のエラーが発生しました。

Exception caught by widgets library 
Closure call with mismatched arguments: function '[]'
Receiver: Closure: () => Map<String, dynamic> from Function 'data':.
Tried calling: []("imageURL")
Found: []() => Map<String, dynamic>

私はそれを使用してfirestoreからデータを取得し、アプリページに表示しようとしています。しかし、特に画像の場合、コレクションからデータを取得できません。このチュートリアルを youtube から参照しました。私はすべて同じことをしましたが、それを処理できませんでした。たぶんバージョンのbc。お役に立てば幸いです。

class _HomeState extends State<Home> {
  PostService postService = new PostService();
  Stream postStream;


  //Stream postsStream;
  Widget postsList() {
    return SingleChildScrollView(
      child: postStream != null
        ? Column(
          children: <Widget>[
         StreamBuilder(
           //stream: postStream,
           stream: postStream,
           builder: (context, snapshot)
           {
             if(snapshot.data == null) return CircularProgressIndicator();
        
             return ListView.builder(
                 padding: EdgeInsets.symmetric(horizontal:16.0),
                 itemCount: snapshot.data.docs.length,
                 shrinkWrap: true,
                 itemBuilder: (context, index) {
                   return PostTile(
                     imgUrl: snapshot.data.docs[index].data['imageURL'],
                     title: snapshot.data.docs[index].data['postTitle'],
                     desc: snapshot.data.docs[index].data['postDesc'],
                     city: snapshot.data.docs[index].data['cityName'],

                   );
                 });
           }),
        ],
        ): Container(
    alignment: Alignment.center,
    child: CircularProgressIndicator(),
    ),
    );
  }

  @override
  void initState() {

    postService.getPostData().then((result) {
        setState(() {
        postStream = result;
      });
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        title: Text('Ana Sayfa'),
        backgroundColor: Colors.amber,
        elevation: 0.0,
        actions: <Widget>[
          FlatButton.icon(
            icon: Icon(Icons.group_rounded),
            label: Text(''),
            onPressed: () {
              Navigator.push(
                  context,
                  MaterialPageRoute(
                      builder: (context) => KullaniciSayfasi()));
            },
          ),
        ],
      ),
      body: postsList(),
      floatingActionButton: Container(
        padding: EdgeInsets.symmetric(vertical: 10.0),
        child: Row(
          mainAxisAlignment: MainAxisAlignment.center,
     

 children: <Widget>[
        FloatingActionButton(
          onPressed: () {
            //Ekleme butonuna basıldığında
            Navigator.push(context,
                MaterialPageRoute(builder: (context) => CreatePost()));
          },
          child: Icon(Icons.add),
        )
      ],
    ),
  ),
);

} }

郵便サービスのコード

import 'package:cloud_firestore/cloud_firestore.dart';


class PostService{

  Future<void> addData(postData) async{
  FirebaseFirestore.instance.collection("posts").add(postData).catchError((e){
     print(e);
    });
  }

  getPostData() async{

    return await FirebaseFirestore.instance.collection("posts").snapshots();
  }
}
4

1 に答える 1

0

firebase プラグインに重大な変更があり、多くのことが変更されました。たとえば、snapshot.data.docs[index].data['imageURL']これは に変更されていsnapshot.data.docs[index].data()['imageURL']ます。更新された API リファレンスについては、ドキュメントをご確認ください。

于 2020-10-29T13:41:58.780 に答える