【问题标题】:Flutter Provider hook to close Streams?Flutter Provider钩子关闭Streams?
【发布时间】:2019-10-22 05:33:14
【问题描述】:

我目前正在检查 Flutter Provider 包。我只想向小部件公开一些流,以便我可以收听它们。像这样的:

class OtherBloc {
  BehaviorSubject<String> sub = new BehaviorSubject();

  OtherBloc() {
    sub.add('my value');
  }

  add(String value) {
    sub.add(value);
  }
}

然后像这样使用它

class CounterPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final OtherBloc otherBloc = Provider.of<OtherBloc>(context);

    return Scaffold(
      body: new Container(
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              StreamBuilder<Object>(
                stream: otherBloc.sub,
                builder: (context, snapshot) {
                  return Text(snapshot.data);
                }
              ),
              RaisedButton(
                child: Text('____'),
                onPressed: () => {
                  otherBloc.add('lol')
                },
              )
            ],
          ),
        ),
      ),
    );
  }
}

所以我会像这样提供它

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Provider<OtherBloc>.value(
      value: OtherBloc(),
      child: MaterialApp(home: CounterPage()),
    );
  }
}

现在我的BehaivorSubject 永远不会是close()。如何调用调度类型的钩子,以便我可以从一个块中关闭我的流?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    我不知道您使用的是哪个提供商,但是, 您可以使用此Provider 的 dispose 属性。

    你的情况是:

    class MyApp extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
           return Provider<OtherBloc>.value(
              builder: (context) => OtherBloc(),
              dispose: (_, otherBloc) => otherBloc.dispose(),
              child: MaterialApp(home: CounterPage()),
           );
        }
     }
    

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 1970-01-01
      • 2020-12-17
      • 2014-12-27
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      相关资源
      最近更新 更多