flutter-autoComplete by flutter_typeahead

本文介绍如何使用flutter_typeahead插件在Flutter应用中实现AutoComplete功能。通过在pubspec.yaml中添加依赖,导入包,定义数据源并设置TypeAheadField组件,即可创建自动完成输入框。文中提供了一个示例,展示了如何将此功能应用于学校选择框。

flutter 里面的 autoComplete 是通过插件 flutter_typeahead 实现。

开源地址: https://github.com/AbdulRahmanAlHamali/flutter_typeahead

1.首先在pubspec.yaml里添加配置:

flutter_typeahead: 0.4.1

2.在dart 文件头导入:

import 'package:flutter_typeahead/flutter_typeahead.dart';

3.接上一篇登录页面,修改第一个学校选择框为autoComplete:
定义数据,也可以是通过后台查询进行匹配,或者通过方法处理后返回数据。

var SerVerConfig  = [ 
  {
    "name": "学校一",
    "code": "one",
  },
  {
    "name": "学校二",
    "code": "two",
  },
  {
    "name": "学校三",
    "code": "three",
  }
];

/*****
 * login page school input
 * ***/
Widget loginSchoolInput(BuildContext context){
  return new Padding(
      padding: EdgeInsets.fromLTRB(20.0, 0.0 ,20.0, 0.0),
      child: new Stack(
        alignment: Alignment(1.0, 1.0),
        children: <Widget>[
          new Row(
            children: <Widget>[
              new Padding(
                 padding: EdgeInsets.all(5.0),
                 child: new Image.asset(
                   "images/icon_username.png",
                   width: 40.0,
                   height: 40.0,
                   fit: BoxFit.fill,
                 ),
              ),
              new Expanded(
                /*************修改的地方**********************/
                  child:  new TypeAheadField(
                    textFieldConfiguration: TextFieldConfiguration(
                        autofocus: true,
                        style: DefaultTextStyle.of(context).style.copyWith(
                            fontStyle: FontStyle.italic
                        ),
                        decoration: InputDecoration(
                            border: OutlineInputBorder()
                        )
                    ),
                    suggestionsCallback: (pattern) async {
                      return SerVerConfig;   //静态数据
                     // return await BackendService.getSuggestions(pattern);   //查询返回数据
                    },
                    itemBuilder: (context, suggestion) {
                      return ListTile(
                        leading: Icon(Icons.shopping_cart),
                        title: Text(suggestion['name']),   //返回数据里的属性名
                      );
                    },
                    onSuggestionSelected: (suggestion) {
                      Navigator.of(context).push(MaterialPageRoute(
    //                      builder: (context) => ProductPage(product: suggestion)
                      ));
                    },
              )),
            ],
          ),
          new IconButton(
              icon: new Icon(Icons.clear),
              onPressed: (){
                schoolController.clear();
              } ,
          )
        ],
      ),
  );
}

根据官方说明,需要修改的地方就这两处,基本就满足需求了,有其他需求可以自行在研究。

4.效果ok

 

### 设置Flutter环境变量中的 `PUB_HOSTED_URL` 和 `FLUTTER_STORAGE_BASE_URL` 在配置Flutter环境变量时,为了加速访问Flutter的包和资源,可以设置 `PUB_HOSTED_URL` 和 `FLUTTER_STORAGE_BASE_URL` 这两个环境变量,以使用国内镜像。以下是具体步骤: #### 1. 设置环境变量 在终端中执行以下命令,将这两个环境变量添加到系统中: ```bash export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn ``` 这些命令会将 `PUB_HOSTED_URL` 设置为 `https://pub.flutter-io.cn`,将 `FLUTTER_STORAGE_BASE_URL` 设置为 `https://storage.flutter-io.cn` [^2]。 #### 2. 持久化环境变量 上述命令仅在当前终端会话中生效,如果希望永久生效,需要将这些命令添加到系统的环境变量配置文件中。 - **对于 macOS 和 Linux 用户**,可以编辑 `~/.bash_profile` 或 `~/.zshrc` 文件(根据你使用的shell决定): ```bash nano ~/.bash_profile ``` 然后添加以下内容: ```bash export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn ``` 保存文件并执行以下命令使配置生效: ```bash source ~/.bash_profile ``` - **对于 Windows 用户**,可以通过以下步骤设置环境变量: 1. 右键点击“此电脑”或“我的电脑”,选择“属性”。 2. 点击“高级系统设置”。 3. 在“系统属性”窗口中,点击“环境变量”。 4. 在“用户变量”或“系统变量”部分,点击“新建”按钮,添加以下两个变量: - 变量名:`PUB_HOSTED_URL`,变量值:`https://pub.flutter-io.cn` - 变量名:`FLUTTER_STORAGE_BASE_URL`,变量值:`https://storage.flutter-io.cn` #### 3. 验证环境变量 在终端或命令行工具中执行以下命令,验证环境变量是否设置成功: ```bash echo $PUB_HOSTED_URL echo $FLUTTER_STORAGE_BASE_URL ``` 如果输出与设置的值一致,则表示设置成功。 #### 4. 配置Flutter路径 除了设置镜像变量外,还需要将Flutter SDK的路径添加到系统 `PATH` 中。例如: ```bash export FLUTTER_HOME=/Users/your_username/development/flutter export PATH=$PATH:$FLUTTER_HOME/bin ``` 同样,这些命令也需要添加到 `~/.bash_profile` 或 `~/.zshrc` 文件中以持久化设置 [^3]。 #### 5. 检查Flutter安装 完成环境变量配置后,运行以下命令检查Flutter是否正确安装,并确保没有依赖项缺失: ```bash flutter doctor ``` 该命令会检查Flutter的安装环境,并提供相应的建议和修复提示 [^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值