Как вручную обновить или обновить флаттер firestore streambuilder? - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть это приложение, для которого требуется функция обновления, поэтому я поместил StreamBuilder Widget в RefreshIndicator Widget , но я не знаю, как вручную обновить StreamBuilder когда срабатывает событие onRefreshed .

1 Ответ

0 голосов
/ 02 сентября 2018

Наличие stream в качестве state 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"))
              ],
            )));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...