flutter 如何从StreamController获得价值?

fnatzsnv  于 2022-12-14  发布在  Flutter
关注(0)|答案(3)|浏览(159)

如何从StreamController获取值“data”
stream.listen((data) {print('$data');}) ;
//全局.dart

final StreamController ctrl = StreamController();

//父亲.dart

onSubmitted: (value) {
    debugPrint('Send Data: '+areaNameTextController.text);
    ctrl.sink.add('Receive Data: '+areaNameTextController.text);},

//children.dart

GoogleMap(
...
onTap: (LatLng latlng){
 ctrl.stream.listen((data) {
  print('$data');} ) ;
  
  Marker(
  ...
  infoWindow:InfoWindow(title:'///Where I want use data///'),
  );
   
  }
)
x0fgdtte

x0fgdtte1#

你说StreamController,在你的问题中你写了Stream。应该这样修正。

streamController.stream.listen(
  (event) => print('Event: $event'),
  onDone: () => print('Done'),
  onError: (error) => print(error),
);
wko9yo5t

wko9yo5t2#

在我的代码中,我像这样使用pull来执行pull to refresh。侦听的目的只是为了侦听来自未来的数据,而不是操作。如果你想检查来自BLOC控制器的东西,首先在init状态下侦听,然后使用来自检查数据的操作。

void initState() {
    _houseVisitBloc.listAppHouseVisitStream().listen((ResponseOb res) {
      if (res.message == MsgState.data) {
        List<HouseVisitAppData> listenList = res.data;
        mainPullList = listenList;
        print(listenList.toString());
        if (mainPullList == listenList) {
          _refreshController.refreshCompleted();
        }
        if (res.data == MsgState.data) {
          _refreshController.loadComplete();
        }
      }
      if (res.data != MsgState.data) {
        _refreshController.loadNoData();
      }
    });
    super.initState();
  }
umuewwlo

umuewwlo3#

在我的项目中,我使用了一个 Package 器来 Package StreamController,它允许我从StreamController中获取最后一个值。
代码如下:

class SimpleStream<T> {
  final StreamController<T> _stream = StreamController<T>();

  Sink<T> get _input => _stream.sink;

  Stream<T> get output => _stream.stream;

  T? _currentValue;

  T? get current => _currentValue;

  void update(T value) {
    _currentValue = value;
    _input.add(value);
  }

  void close() {
    _stream.close();
  }
}

相关问题