微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

小部件库-Flutter

如何解决小部件库-Flutter

正如我在标题中提到的,我遇到了这个错误

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引用了本教程。即使我做了所有相同的事情,但我无法处理。也许是公元前的版本。如果您能帮助我,我会很高兴。

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();
  }
}

解决方法

firebase插件发生了重大变化,并且发生了许多变化。例如,我看到您在做snapshot.data.docs[index].data['imageURL'],这已更改为snapshot.data.docs[index].data()['imageURL']。请检查文档以获取更新的API引用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。