基本上就是这样。例如我有这段代码。
我有这段代码,其中有一个文本字段和一个文本,文本根据文本字段的长度而变化,占据了我已实现其目的的整体模式,但是我还需要更改颜色文字。
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对象一起使用吗?