flutter - 带有 StreamBuilder 的 TextField 的初始值

标签 flutter bloc

我有一个 TextFieldStreamBuilder 的帮助下呈现,遵循带有接收器和流的 BLoC 模式。

Widget field(SignUpBloc signUpBloc) {
    return StreamBuilder(
      stream: signUpBloc.outFirstName,
      builder: (context, snapshot) {
        return TextField(
          style: TextStyle(fontSize: 15.0),
          onChanged: signUpBloc.inFirstName,
          decoration: InputDecoration(
            errorStyle: TextStyle(fontSize: 15.0),
            errorText: snapshot.error
          ),
        );
      },
    );
}

我的问题是如何设置初始值?我已尝试使用 StreamBuilderinitialData 属性,但 TextField 中没有显示文本。

最佳答案

TextEditingController _controller = TextEditingController(); // make a controller, 

Widget field(SignUpBloc signUpBloc) {
  return StreamBuilder(
    stream: signUpBloc.outFirstName,
    initialData: YourData, // provide initial data
    builder: (context, snapshot) {
      _controller.value = TextEditingValue(text: "${snapshot.data}"); // assign value to controller this way
      return TextField(
        controller: _controller,
        style: TextStyle(fontSize: 15.0),
        onChanged: signUpBloc.inFirstName,
        decoration: InputDecoration(
            errorStyle: TextStyle(fontSize: 15.0),
            errorText: snapshot.error
        ),
      );
    },
  );
}

编辑:要将光标放在行尾,可以使用

var cursorPos = _controller.selection;
if (cursorPos.start > _controller.text.length) {
  cursorPos = TextSelection.fromPosition(TextPosition(offset: _controller.text.length));
}
_controller.selection = cursorPos;

Source

关于flutter - 带有 StreamBuilder 的 TextField 的初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55639166/

相关文章:

android - 使用get_it时将flutter bloc丢弃

flutter - 使用不包含 CounterBloc 类型的 Cubit 的上下文调用 BlocProvider.of()

Flutter:在 Web、Android 和 ios 中使用相同的应用程序

list - 如何将唯一元素添加到列表?

Dart - 播放一个 Futures 循环

flutter - 父类(super class) 'Bloc<xxx, xxx>' 在 dart 中没有零参数构造函数

flutter - 如何在Flutter中使用flutter_bloc自动刷新上一页(第一页)

dart - 如何清除 block 中的数据?

ios - 如何在真实设备上运行/测试我的 Flutter 应用程序?

flutter - _$CustomClass 显示错误 `The return type ' Type' isn't a 'CustomClass' ,由匿名闭包定义。 `