如何从Flutter中的BlocProvider更新TextField的文本值

时间:2020-10-22 13:32:36

标签: flutter dart bloc

在Flutter中,我有经典的反例。遵循BLoC模式,我已经获得了正确的工作方式示例。

class _MyHomePageState extends State<MyHomePage> {
  CounterBloc _counterBlockSink;

  @override
  void dispose() {
    super.dispose();
    _counterBlockSink?.close();
  }

  @override
  Widget build(BuildContext context) {
    _counterBlockSink = BlocProvider.of<CounterBloc>(context);
    TextEditingController txt = TextEditingController(text: ("asd"));

    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child:
            BlocBuilder<CounterBloc, CounterState>(builder: (context, state) {
          return Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'You have pushed the button this many times:',
              ),
              Text(
                '${(state as CounterUpdatedState).count}',
                style: Theme.of(context).textTheme.headline4,
              ),
            ],
          );
        }),
      ),
      floatingActionButton: Row(
        mainAxisAlignment: MainAxisAlignment.end,
        children: [
          FloatingActionButton(
            onPressed: () {
              _counterBlockSink.add(DecrementEvent());
            },
            tooltip: 'Decrement',
            child: Icon(Icons.remove),
          ),
          SizedBox(
            width: 10,
          ),
          FloatingActionButton(
            onPressed: () {
              _counterBlockSink.add(IncrementEvent());
            },
            tooltip: 'Increment',
            child: Icon(Icons.add),
          ),
        ],
      ),
    );
  }
}

下一步,我要使用TextField而不是Text,这样我就可以在TextField中编写自定义值并将其解析为int,但是我也可以可以按“增加”或“减少”按钮,然后我想看到TextField会增加/减少的文本。

在以前的逻辑中,我曾经使用TextEditingController并通过文本变量分配新值。

是否有一种聪明的方法可以直接通过Bloc封闭圈子?

0 个答案:

没有答案