我在我的 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)
];
}),
我无法弄清楚。
请帮忙!!!
我通过将
StatelessWidget
转换为 StatefulWidget
解决了这个问题。
对于未来面临这个问题的人们
如果您正在使用
StatelessWidget
,请尝试将其转换为 StatefulWidget
。