繁体   English   中英

参数类型 SearchBar 不能分配给 flutter 中的参数类型 Widget

[英]The argument type SearchBar can't be assigned to the parameter type Widget in flutter

我正在尝试在 Flutter 中实现自动搜索栏。

编译时出现错误: The argument type 'SearchBar' can't be assigned to the parameter type 'Widget?'.

class Home extends StatelessWidget {
  Future<List<Post>> search(String search) async {
    await Future.delayed(Duration(seconds: 2));
    return List.generate(search.length, (int index) {
      return Post(
        "Title : $search $index",
        "Description :$search $index",
      );
    });
  }
 @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.symmetric(horizontal: 20),
          child: SearchBar<Post>(
            onSearch: search,
            onItemFound: (Post post, int index) {
              return ListTile(
                title: Text(post.title),
                subtitle: Text(post.description),
              );
            },
          ),
        ),
      ),
    );
  }
}

从官方文档中,您需要调用build方法来获取一个小部件。

但是,如果您在构造函数本身中创建SearchBar会更好,这样就不会每次都创建一个新的。

从官方文档来看,

class _MyHomePageState extends State<MyHomePage> {
    SearchBar searchBar;

    AppBar buildAppBar(BuildContext context) {
      return new AppBar(
        title: new Text('My Home Page'),
        actions: [searchBar.getSearchAction(context)]
      );
    }  

    _MyHomePageState() {
      searchBar = new SearchBar(
      inBar: false,
      setState: setState,
      onSubmitted: print,
      buildDefaultAppBar: buildAppBar
    );
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: searchBar.build(context)
    );
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM