从其他类调用StreamBuilder

时间:2019-11-08 16:09:55

标签: class flutter dart

我在另一个类中构建了一个StreamBuilder,并在build()中将其称为。现在,我想在另一个实际上需要此Stream的类中使用该类。有人可以帮我吗?

谢谢

class ItemList extends StatefulWidget {

  final String documentId;
  final String userId;

  ItemList({
    Key key,
    this.documentId,
    this.userId
    }) : super(key: key);

  @override
  _ItemListState createState() => new _ItemListState();
}

在此类中,StreamBuilder被初始化。

class _ItemListState extends State<ItemList>{

  @override
  void initState(){
    super.initState();
  }

  StreamBuilder buildItemStream(BuildContext context)  {

    final databaseReference = Firestore.instance;

    return new StreamBuilder(
      stream: databaseReference.collection("events").
                                document(widget.documentId).
                                collection("itemList").
                                snapshots(),
      builder: (context, snapshot) {
        //if(snapshot.error) return const Center(child: Text("Your ItemList is empty"));
        return Container(
          child: ListView.builder(
            scrollDirection: Axis.vertical,
            shrinkWrap: true,
            padding: EdgeInsets.all(10.0),
            //itemExtent: 300.0,
            itemCount: snapshot.data.documents.length,
            itemBuilder: (context, index) =>
              buildItemList(context, snapshot.data.documents[index]),
          ),
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: buildItemStream(context),
    );
  }
}

0 个答案:

没有答案