flutter_bloc
状態管理にパッケージを使用しています。検索画面を作成したいのですが、showSearch
Flutter 関数が見つかりました。実装で作成したBLoC
インスタンスにインスタンスを提供する際に問題が発生しています。私は最終的にそれを機能させましたが、これを行うための最良の方法は何ですか. コードは次のとおりです (内の に配置されたボタンから始まる抜粋):ListView
SearchDelegate
AppBar
Scaffold
class ItemSearchButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return IconButton(
icon: Icon(Icons.search),
onPressed: () {
final itemListBloc = context.bloc<ItemListBloc>();
showSearch(
context: context,
delegate: _ItemSearchDelegate(itemListBloc),
);
},
);
}
}
class _ItemSearchDelegate extends SearchDelegate<String> {
final ItemListBloc itemListBloc;
_ItemSearchDelegate(this.itemListBloc);
// other overridden methods
@override
Widget buildSuggestions(BuildContext context) {
return BlocProvider.value(
value: itemListBloc,
child: ItemListWidget(),
);
}
}
基本的に、showSearch
メソッドを呼び出すコンテキストには正しい BLoC インスタンスがありますが、.NET でSearchDelegate
明示的に再提供しない限り、実装内では使用できませんbuildSuggestions
。
BLoC がデフォルトで使用できないのはなぜですか? 関数はshowSearch
内部的に newNavigator
Route
をプッシュしますが、これは問題ですか?
このようなものに対処する標準的な方法は何ですか?