如何手动刷新或重新加载 flutter firestore streambuilder?

Mon*_*uto 9 flutter google-cloud-firestore

我有这个需要拉动刷新功能的应用程序,所以我将StreamBuilder Widget放在RefreshIndicator Widget 中,但我不知道如何在触发onRefreshed事件时手动刷新 StreamBuilder 。

Din*_*ian 3

streamas astate variable并在刷新拉动时重置将解决该问题。

在下面的代码中,我在按下按钮时重置流。希望对您有帮助。

import 'dart:async';

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new _MyAppState();
  }
}

class _MyAppState extends State<MyApp> {
  var stream; // state variable

  @override
  void initState() {
    super.initState();
    stream = newStream(); // initial stream
  }

  Stream<String> newStream() =>
      Stream.periodic(Duration(seconds: 1), (i) => "$i");

  @override
  Widget build(BuildContext context) {
    var streamBuilder = StreamBuilder(
        initialData: "0",
        stream: stream,
        builder: (context, snapshot) {
          return new Text(snapshot.data);
        });
    return MaterialApp(
        title: 'Trial',
        home: Scaffold(
            appBar: AppBar(title: Text('Stream builder')),
            body: Column(
              children: <Widget>[
                streamBuilder,
                FlatButton(
                    onPressed: () {
                      setState(() {
                        stream = newStream(); //refresh/reset the stream
                      });
                    },
                    child: Text("Reset"))
              ],
            )));
  }
}
Run Code Online (Sandbox Code Playgroud)