Flutter 颤振:Card()/Firebase-(初学者问题)

Flutter 颤振:Card()/Firebase-(初学者问题),flutter,Flutter,我是个新手。我有一个小项目的问题。我从Firebase数据库收集数据并将其添加到listTile中。我试图添加2个静态ListTile,但每个循环都会将它们添加到主屏幕。我无法摆脱这个循环——那里的任何人都愿意帮忙 为每个循环添加“Datablade”和“Vejledning”列表互动程序 ''' 导入“包装:颤振/材料.省道”; 导入“包:flatter_app/services/auth.dart”; 导入“包:flatter_app/services/database.dart”; 导入“

我是个新手。我有一个小项目的问题。我从Firebase数据库收集数据并将其添加到listTile中。我试图添加2个静态ListTile,但每个循环都会将它们添加到主屏幕。我无法摆脱这个循环——那里的任何人都愿意帮忙

为每个循环添加“Datablade”和“Vejledning”列表互动程序

'''

导入“包装:颤振/材料.省道”;
导入“包:flatter_app/services/auth.dart”;
导入“包:flatter_app/services/database.dart”;
导入“包:provider/provider.dart”;
导入“包:cloud_firestore/cloud_firestore.dart”;
//导入“包:flatter_app/screens/home/brew_list.dart”;
导入“包:flatter_app/models/brew.dart”;
类Home扩展了无状态小部件{
最终AuthService_auth=AuthService();
@凌驾
小部件构建(构建上下文){
返回StreamProvider.value(
值:DatabaseService().filer,
孩子:脚手架(
背景颜色:Colors.white,
appBar:appBar(
标题:文本(“Arbejdsmiljø”),
背景颜色:颜色。橙色[400],
标高:0.0,
行动:[
FlatButton.icon(
图标:图标(Icons.person),
标签:文本(“日志ud”),
onPressed:()异步{
等待_auth.signOut();
},
),
],
),
正文:
ListPage(),
),
);
//ListPage(),
}
}
类ListPage扩展了StatefulWidget{
@凌驾
_ListPageState createState()=>\u ListPageState();
}
类_ListPageState扩展状态{
未来数据;
Future getPosts()异步{
var firestore=firestore.instance;
QuerySnapshot qn=await firestore.collection('filer').getDocuments();
返回qn文件;
}
导航详细信息(文档快照发布){
push(context,materialpage(builder:(context)=>DetailPage(post:post,));
}
void initState(){
super.initState();
_data=getPosts();
}
@凌驾
小部件构建(构建上下文){
返回容器(
孩子:未来建设者(
未来:_数据,
构建器:(\uux,快照){
if(snapshot.connectionState==connectionState.waiting){
返回中心(
子项:文本('Loading'),
);
}否则{
返回ListView.builder(
//返回ListView.builder(
itemCount:snapshot.data.length,
itemBuilder:(\ux,索引){
回程卡(
子:列(
儿童:[
列表砖(
前导:图标(Icons.star,颜色:Colors.orange,大小:26.0),
onTap:()=>navigateToDetail(快照.数据[索引]),
标题:文本(“数据叶片”),
尾随:图标(图标。键盘箭头右键),
),
分隔器(颜色:颜色。橙色,缩进:16.0),
列表砖(
标题:新中心(子项:新文本(“Vejledninger”),
样式:新文本样式(
颜色:颜色。橙色[400],
fontWeight:fontWeight.w500,fontSize:25.0),),
),
列表砖(
onTap:()=>navigateToDetail(快照.数据[索引]),
标题:文本(快照.数据[索引].数据[“名称]),
领先:CircleAvatar(
背景颜色:颜色。橙色[400],
前底色:颜色。白色,
子项:文本(快照.数据[索引].数据[“名称”][0])
)
)
],
),
);
//返回列表块(
//标题:文本(快照.数据[索引].数据[“名称]),
//onTap:()=>navigateToDetail(快照.数据[索引]),
//);
});
}
}),
);
}
}
类DetailPage扩展StatefulWidget{
最后文件快照后;
DetailPage({this.post});
@凌驾
_DetailPageState createState()=>\u DetailPageState();
}
类_DetailPageState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.post.data[“name”]),
),
主体:容器(
孩子:卡片(
孩子:ListTile(
标题:文本(widget.post.data[“name”]),
字幕:文本(widget.post.data['beskrivelse']),
),
),
),
);
}
}
'''

问题的屏幕截图您有硬编码值
Text('Datablade)
Text(“Vejledninger”)
在您的构建器中。当您迭代文档时,这些值将填充您的列表。您只需从构建器中删除它们,并在构建器知道问题之前将它们放置在一行/列中-但无论我在哪里编写,它都不起作用。我的最佳猜测是在这里,然后是ListPage()没有被绘制到问题的页面屏幕截图,您有硬编码值
Text('Datablade)
Text(“Vejledninger”),)
在您的构建器中。当您迭代文档时,这些值将填充您的列表。您只需将它们从构建器中删除,并在构建器知道问题之前将它们放置在一行/列中-但这就像是无论我在哪里编写它,它都不起作用。我的最佳猜测是在这里,但是ListPage()不会被绘制到页面上
import 'package:flutter/material.dart';
import 'package:flutter_app/services/auth.dart';
import 'package:flutter_app/services/database.dart';
import 'package:provider/provider.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

//import 'package:flutter_app/screens/home/brew_list.dart';
import 'package:flutter_app/models/brew.dart';

class Home extends StatelessWidget {

  final AuthService _auth = AuthService();

  @override
  Widget build(BuildContext context) {
    return StreamProvider<List<Brew>>.value(
      value: DatabaseService().filer,
      child: Scaffold(
        backgroundColor: Colors.white,

        appBar: AppBar(
          title: Text('Arbejdsmiljø'),
          backgroundColor: Colors.orange[400],
          elevation: 0.0,
          actions: <Widget>[
            FlatButton.icon(
              icon: Icon(Icons.person),
              label: Text('Log ud'),
              onPressed: () async {
                await _auth.signOut();

              },
            ),
          ],

        ),

        body:


              ListPage(),

            ),


          );








      //ListPage(),



  }
}

class ListPage extends StatefulWidget {
  @override
  _ListPageState createState() => _ListPageState();
}

class _ListPageState extends State<ListPage> {

  Future _data;

  Future getPosts() async{

    var firestore = Firestore.instance;

    QuerySnapshot qn = await firestore.collection('filer').getDocuments();
    return qn.documents;

  }

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

  void initState() {
    super.initState();
    _data = getPosts();
  }



  @override
  Widget build(BuildContext context) {
    return Container(



      child: FutureBuilder(
          future: _data,
          builder: (_, snapshot){

            if(snapshot.connectionState == ConnectionState.waiting){
              return Center(
                child: Text('Loading'),
              );
            } else {

              return ListView.builder(




                //return ListView.builder(
                  itemCount: snapshot.data.length,
                  itemBuilder: (_, index){
                    return Card(

                      child: Column(
                        children: <Widget> [
                          ListTile(
                            leading: Icon(Icons.star, color: Colors.orange, size: 26.0),
                            onTap: () => navigateToDetail(snapshot.data[index]),
                            title: Text('Datablade'),
                            trailing: Icon(Icons.keyboard_arrow_right),

                          ),
                          Divider(color: Colors.orange,indent: 16.0),


                          ListTile(
                            title: new Center(child: new Text("Vejledninger",
                              style: new TextStyle(
                                  color: Colors.orange[400],
                                  fontWeight: FontWeight.w500, fontSize: 25.0),)),

                          ),




                          ListTile(
                              onTap: () => navigateToDetail(snapshot.data[index]),
                              title: Text(snapshot.data[index].data["name"]),
                              leading: CircleAvatar(
                                  backgroundColor: Colors.orange[400],
                                  foregroundColor: Colors.white,
                                  child: Text(snapshot.data[index].data["name"][0])
                              )

                          )
                        ],
                      ),
                    );

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


                  });

            }

          }),


    );
  }
}



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 Scaffold(
      appBar: AppBar(
        title: Text(widget.post.data["name"]),
      ),
      body: Container(
        child: Card(
          child: ListTile(
            title: Text(widget.post.data["name"]),
            subtitle: Text(widget.post.data['beskrivelse']),
          ),
        ),
      ),
    );
  }
}

'''