小编Kul*_*eep的帖子

抛出另一个异常:setState()或markNeedsBuild()在构建期间调用颤动中的错误

我是 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)

dart flutter flutter-layout

0
推荐指数
1
解决办法
2436
查看次数

标签 统计

dart ×1

flutter ×1

flutter-layout ×1