我是 Flutter 新手,正在开发电子商务 Flutter 应用程序。当我尝试导航到搜索屏幕时,它给出了一些错误。请找到以下代码供您参考并帮助解决。
错误: 在为 SearchProvider 调度通知时抛出以下断言:构建期间调用了 setState() 或 markNeedsBuild()。此 _InheritedProviderScope<SearchProvider?> 小部件无法标记为需要构建,因为框架已经在构建小部件的过程中。仅当小部件的祖先之一当前正在构建时,才可以将其标记为需要在构建阶段构建。允许此异常,因为框架在子窗口之前构建父窗口小部件,这意味着将始终构建脏后代。否则,框架可能不会在此构建阶段访问此小部件。调用 setState() 或 markNeedsBuild() 的小部件是:_InheritedProviderScope<SearchProvider?> 进行有问题的调用时当前正在构建的小部件是:SearchScreen
代码 搜索屏幕
class SearchScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
Provider.of<SearchProvider>(context, listen: false).cleanSearchProduct();
Provider.of<SearchProvider>(context, listen: false).initHistoryList();
return Scaffold(
backgroundColor: ColorResources.getIconBg(context),
resizeToAvoidBottomInset: true,
body: Column(
children: [
// for tool bar
SearchWidget(
hintText: getTranslated('SEARCH_HINT', context),
onSubmit: (String text) {
Provider.of<SearchProvider>(context, listen: false)
.searchProduct(text, context);
Provider.of<SearchProvider>(context, listen: false)
.saveSearchAddress(text);
},
onClearPressed: () {
Provider.of<SearchProvider>(context, listen: false)
.cleanSearchProduct();
},
),
Consumer<SearchProvider>(
builder: …Run Code Online (Sandbox Code Playgroud)