扑扑的Firestore将文档数据推送到详细信息屏幕

时间:2019-12-08 13:54:33

标签: flutter google-cloud-firestore

我需要单击列表,然后打开一个新的详细信息页面。我到处都在寻找如何执行此操作的示例,但我发现了很多。但是,我的数据结构不同,即使我的代码没有错误,也不会填充详细信息页面。这是我正在使用的东西:

//page 1
child: ListView.builder(
                                itemCount:
                                    _documents == null ? 0 : _documents.length,
                                itemBuilder: (BuildContext context, int index) {
                                  return Card(
                                      child: Container(
                                          decoration: BoxDecoration(
                                            image: DecorationImage(
                                                image: AssetImage(
                                                    "assets/images/roomfield1.png"),
                                                fit: BoxFit.fitWidth,
                                                alignment: Alignment.topCenter),
                                            color:
                                                Theme.of(context).canvasColor,
                                          ),
                                          child: ListTile(
                                              title: Text(_documents[index]
                                                  ['title']),
                                              subtitle: Text(_documents[index]
                                                  ["description"]),
                                              trailing: Text(_documents[index]
                                                  ['citystate']),

                                              onTap: () {
                                              Navigator.push(
                                                  context,
                                                   MaterialPageRoute(
                                                      builder: (context) =>
                                                          DetailPage(_documents[index])));

                                              })));
                                },

这是详细信息页面:

// details page
import 'package:flutter/material.dart';

class DetailPage extends StatefulWidget {
  DetailPage(_documents,  {Key key,}) : super(key: key);
  @override
  _DetailPageState createState() => _DetailPageState();
}

class _DetailPageState extends State<DetailPage> {
  var _documents;
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar:  AppBar(
          title:  Text('Details Page'),
        ),
        body:  ListView.builder(
            itemCount: _documents == null ? 0 : _documents.length,
            itemBuilder: (BuildContext context,[index]) {
              return  ListTile(
                title: Text(_documents[index]['title']),
                );
}));}}

我的文档使用documentId。我尝试传递ID,然后在流生成器中使用它,但也没有用。我认为我的代码很接近,但是我不知道出什么问题了。我也无法更改数据的结构,因为该格式在整个地方都在使用它。我猜测它可能错过了一些简单的事情,也许是详细信息页面上的构造函数,但我不确定...任何见解都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

您在类的顶部创建了一个名为 function updaterecord(id) { $('#modalupdate').on('submit', function (e) { e.preventDefault(); $.ajax({ url: 'update/' + id, method: 'post', data: {'countryname' : 'India','sortname' : 'Sort Name', 'phonecode' : '022'}; success: function (res) { console.log(res); } }) }); } 的变量。但是,要检索_documents类中实际_documents变量的值,您需要使用DetailPage。我在下面提供了正确的代码供您使用。

此外,我不知道您为什么在widget.documents类中使用StatefulWidget,因为您似乎没有做任何需要状态管理的事情。您可以轻松地将其设置为DetailPage,但也许还有更多我看不到的代码。

StatelessWidget