How to instantiate bloc in didChangeDependencies correctly?
我正在尝试从Google扑朔迷离的课程中创建的单位转换应用程序中使用Bloc架构。我的问题是实例化我的集团。我按照文档进行操作,并从上下文以及didChangeDependencies方法中的其他一些属性实例化了我的bloc。在
我尝试实例化处于初始化状态的块,但这是不允许的,因为它是继承的窗口小部件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | class _ConverterScreenState extends State<ConverterScreen> { ConversionBloc _conversionBloc; @override void didChangeDependencies() { // TODO: implement didChangeDependencies print("change dependencies ran"); super.didChangeDependencies(); _conversionBloc = ConversionProvider.of(context); _conversionBloc.setDefaultUnits(widget._category); } @override Widget build(BuildContext context) { print("converter screen - build widget"); // TODO: implement build _conversionBloc.currentCat.add(widget._category); return Scaffold( body: _buildConverterScreen(MediaQuery.of(context).orientation)); } } class ConversionBloc { void setDefaultUnits(Category category) { print("setting default units for ${category.name}"); _inputUnits = category.units[0]; _outputUnits = category.units[1]; _inputUnitSubject.sink.add(_inputUnits); _outputUnitSubject.add(_outputUnits); } } |
我希望将输入/输出单位更改为所需的值,并且当textinput字段聚焦或调用
您可以将初始化和
1 2 3 4 5 6 7 8 9 10 | @override void didChangeDependencies() { // TODO: implement didChangeDependencies print("change dependencies ran"); super.didChangeDependencies(); if (_conversionBloc == null) { _conversionBloc = ConversionProvider.of(context); _conversionBloc.setDefaultUnits(widget._category); } } |