'package:flutter/src/material/search_anchor.dart':断言失败:第 940 行 pos 12:'_anchor != null':不是 true

问题描述 投票:0回答:1

我在我的 Flutter 项目中使用了

Search bar
Search Anchor
,这是新引入的
material3

我从

search view
返回时遇到错误。

如果我们简单地转到

previous screen
并从那里返回,它就会移回到
search

但是如果我们尝试

rebuild
该小部件根据 searchController 中的文本刷新 UI。它给了我这个错误。

Failed assertion: line 940 pos 12: '_anchor != null': is not true.

也可以通过移至

search view
并执行
hot reload

来重现该错误

这是我的搜索锚点和搜索条码

                                 SearchAnchor(
                                      viewLeading: IconButton(
                                          onPressed: () {
                                            controller.closeView("");
                                            FocusScope.of(context)
                                                .requestFocus(FocusNode());
                                          },
                                          icon:
                                              const Icon(Icons.arrow_back)),
                                      searchController: controller,
                                      isFullScreen: true,
                                      builder: (BuildContext context,
                                          SearchController controller) {
                                        return SearchBar(
                                          key: searchBarKey,
                                          padding:
                                              const MaterialStatePropertyAll<
                                                  EdgeInsets>(
                                            EdgeInsets.only(
                                              left: 8.0,
                                              right: 8.0,
                                            ),
                                          ),
                                          hintText: "Search your notes",
                                          hintStyle:
                                              const MaterialStatePropertyAll(
                                                  TextStyle(
                                                      fontSize: 16,
                                                      fontWeight:
                                                          FontWeight.normal,
                                                      color:
                                                          Colors.black54)),
                                          leading: IconButton(
                                            icon: const Icon(Icons.menu),
                                            onPressed: () {
                                              _scaffoldKey.currentState!
                                                  .openDrawer();
                                            },
                                          ),
                                          focusNode: focusNode,
                                          shape: MaterialStatePropertyAll(
                                              RoundedRectangleBorder(
                                                  borderRadius:
                                                      BorderRadius.circular(
                                                          50))),
                                          controller: controller,
                                          onTap: () {
                                            controller.openView();
                                            FocusScope.of(context)
                                                .requestFocus(focusNode);
                                          },
                                          trailing: [],
                                        );
                                      },
                                      viewBuilder: (suggestions) {
                                        return Container(
                                          height: height,
                                          width: width,
                                          color: textFieldBackgoundColor,
                                          child: const Center(
                                              child: Icon(
                                            Icons.mood,
                                            color: Colors.black,
                                          )),
                                        );
                                      },
                                      suggestionsBuilder:
                                          (BuildContext context,
                                              SearchController controller) {
                                        return <Widget>[
                                          const Icon(Icons.abc)
                                        ];
                                      }),

我无法弄清楚。

请帮忙!!!

flutter dart searchbar material3
1个回答
0
投票

我通过将

StatelessWidget
转换为
StatefulWidget
解决了这个问题。

对于未来面临这个问题的人们

如果您正在使用

StatelessWidget
,请尝试将其转换为
StatefulWidget

© www.soinside.com 2019 - 2024. All rights reserved.