首页 > 解决方案 > 输入'_ControllerSubscription' 不是类型 'Stream 的子类型'

问题描述

我正在使用 bloc 将数据输入到 textField 并将其存储在变量中。将侦听器添加到流后,我不断收到错误消息:“类型'_ControllerSubscription'不是类型'Stream'的子类型”。

用户界面:

/****/
   Widget build(BuildContext context) {
    Size size = MediaQuery.of(context).size;
    var bloc = Bloc();

    return Container(
      color: Colors.white,
      child: Column(children: <Widget>[
        SizedBox(height: size.height *.2 ,),
  StreamBuilder( stream: bloc.textStream,
     builder:    (context, snapshot ){
       return  Container(
          width: size.height * .5,
          height: size.height *.2,
          child: TextField(
 onChanged: bloc.changeText,
      textAlign: TextAlign.right,
      decoration: InputDecoration(
        hintStyle: TextStyle(
          fontSize: 14,
          color: Colors.black,
        ),),
 /****
   *****/   

集团:

import 'dart:async';

class Bloc {

var _text='';
final  _textFieldController = StreamController<String>();

 get textStream => _textFieldController.stream
                  .listen( (value){_text = value;});    

 Function(String) get changeText => _textFieldController.sink.add;

  void dispose() {
   _textFieldController.close();
  }

}

标签: flutterstreamlistenerbloc

解决方案


尝试更换

get textStream => _textFieldController.stream
                  .listen( (value){_text = value;});  

get textStream => _textFieldController.stream;

推荐阅读