如何在Flutter中以Bloccc模式在流中传递两个或多个变量

时间:2019-05-04 17:20:58

标签: dart flutter bloc

基本上就是这样。例如我有这段代码。

我有这段代码,其中有一个文本字段和一个文本,文本根据文本字段的长度而变化,占据了我已实现其目的的整体模式,但是我还需要更改颜色文字。

Widget build(BuildContext context) {
return Scaffold(
  appBar: AppBar(
    title: Text("TextField Example"),
  ),
  body: Container(
    margin: EdgeInsets.all(20.0),
    child: Center(
        child: Stack(
      children: <Widget>[
        Column(
          children: <Widget>[
            Container(
              margin: EdgeInsets.only(top: 35.0),
              child: TextField(
                  controller: controller,
                  maxLines: 8,
                  decoration: InputDecoration(
                      hintText: "Escribe tu comentario",
                      border: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(10),
                      )),
                  onChanged: (value) {
                    _chatTextfieldBloc.changeText(value);
                  }),
            ),
            Container(
                margin: EdgeInsets.only(top: 5),
                alignment: Alignment(-1, 0),
                child: StreamBuilder(
                  stream: _chatTextfieldBloc.textObservable,
                  builder: (BuildContext context, AsyncSnapshot snapshot) {
                    return Text(
                      snapshot.data,
                    );
                  },
                ))
          ],
        ),
        Positioned(
          right: 5.0,
          child: FloatingActionButton(
            backgroundColor: Colors.blueGrey,
            onPressed: () {
            },
            child: Icon(Icons.keyboard_arrow_right),
          ),
        ),
      ],
    )),
  ),
);
  }
}

在集团中:

class ChatTextfieldBloc {
  String initialText = "";
  int number = 12;

  BehaviorSubject<String> _subjectText;

  ChatTextfieldBloc({this.initialText}) {
    _subjectText = BehaviorSubject<String>.seeded(initialText);
  }

  Observable<String> get textObservable => _subjectText.stream;

  void changeText(String text) {



    if (text.length <= number) {
      initialText = "Te quedan ${number - text.length} caracteres";
    } else {
      initialText = "Te pasaste por ${(number - text.length) * -1} caracteres";
    }
    print(initialText);
    _subjectText.sink.add(initialText);
  }

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

我的问题是如何传递两个变量,正如您目前在BeheaviorSubject中看到的那样,我已经定义了一个字符串,我是否必须定义一个同时具有两个变量作为属性的对象?它可以与Map对象一起使用吗?

0 个答案:

没有答案