探索简单的小部件II:自动完成
#android #flutter #dart #widget

在当今快速不断变化的应用程序开发世界中,使用户友好且有效的接口至关重要。颤动的自动完成小部件是有可能改善用户体验的小部件之一。这种动态功能使输入和检索数据更加容易,同时增强用户参与。这篇文章将探索Flutter的自动完整小部件,并展示如何改善用户如何体验您的应用程序。

自动完成的小部件是Flutter库提供的功能强大的小部件,它使用户能够通过提供预测性建议有效地输入数据。这种功能大大减少了用户的努力并增强了他们的体验。电子商务应用程序中有一些用例,在搜索产品,旅行和预订应用程序时,用户可以在其中获得实时建议,以向用户提供建议。

如何使用自动完成的小部件

在您的脚手架主体中,我们创建了自动完成的小部件,并提供所需的 optionsBuilder 参数,该参数用于提供当焦点集中时应显示的建议列表。自动完成的小部件侵入一个扩展对象的T型T,因此应使用可以是int,string甚至自定义对象的类型创建。
自动完成小部件的剥离代码看起来像

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Autocomplete'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(18.0),
        child: Center(
          child: Autocomplete<int>(
            optionsBuilder: (val){
              return [1,2,3,4,5];
            },
          )
        ),
      )
       );
       }

Automplete<int>

 @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Autocomplete'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(18.0),
        child: Center(
          child: Autocomplete<String>(
            optionsBuilder: (val){
              return ['Cat', 'Dog', 'Fish', 'Goat', 'Sheep'];
            },
          )
        ),
      )
       );
       }

Autocomplete<String>

上面的实施一旦焦点就显示了建议,但这不是我们要实现的目标。还有其他参数可以为我们提供自定义,并允许我们根据需要调整小部件。
首先,我们可以自定义小部件,仅一旦用户开始键入并仅根据用户输入显示相关选项
才显示该选项。

class Home extends StatelessWidget {
  List<String> animals = ['Cat', 'Dog', 'Fish', 'Goat', 'Sheep'];
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Autocomplete'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(18.0),
        child: Center(
          child: Autocomplete<String>(
            optionsBuilder: (val){
              if(val.text.isEmpty){
                return [];
              }
              return animals.where((animal){
                return animal.toLowerCase().contains(val.text);
              });
            },
          )
        ),
      )
       );
       }
}

Autocomplete gif

自定义选项

使用 optionsViewBuilder 参数,我们可以自定义提出建议的方式以适合我们的应用程序的设计。

 Autocomplete<String>(
            optionsBuilder: (val){
              if(val.text.isEmpty){
                return [];
              }
              return animals.where((animal){
                return animal.toLowerCase().contains(val.text.toLowerCase());
              });
            },
            optionsViewBuilder: (context,onSelected, options){
             return ListView.builder(
                    itemCount: options.length,
                    itemBuilder: (context,index){
                            String x = options.elementAt(index);
                      return Card(child: ListTile(
                        onTap: () => onSelected(x),
                        title: Text(x, style: TextStyle(color: Colors.blue))));
                    },
                  );
            },
          )

Customized options

可以使用各种自定义列表来填充自动完成的小部件,甚至可以对使用的各种可能性进行各种可能性。也有各种包裹为您提供更多的自定义和灵活性,以节省您的压力。在Pub.dev

上找到它们

结论

自动完成小部件作为工具,不仅可以提高效率,而且有助于用户的整体满意度。从他们的无缝实施到各个行业的潜力,自动完成的小部件都使开发人员能够创建高度互动的顶级应用程序。
有关更多信息,请查看Flutter docs for the autocomplete class