Flutter地点搜索建议插件google_places_suggestions_autocomplete_field的使用
Flutter地点搜索建议插件google_places_suggestions_autocomplete_field的使用
示例在macOS上
google_places_suggestions_autocomplete_field
是一个为 Flutter 应用提供的表单文本字段插件,用于通过 Google Places API 进行地点搜索和自动补全。该组件不仅会将文本返回到提供的控制器中,还会通过回调函数提供详细的地点信息。返回的地点详情包括:
- 完整地址
- 城市
- 邮政/邮政编码
- 国家
- 经纬度坐标
- 省份
- 郊区
该库高度可定制,允许你指定地点搜索应限制的国家,并且可以自定义UI属性,如提示文本、背景颜色和文本样式。
特性
- 根据用户输入提供地点建议。
- 从 Google Places API 获取详细地点信息。
- 返回完整的地址详情,包括城市、邮政编码、国家、纬度、经度、省份和地区。
- 支持对搜索结果进行自定义国家限制。
- 可以自定义UI组件,如文本样式、提示文本和建议列表的背景颜色。
安装
在 pubspec.yaml
文件中添加以下依赖项:
dependencies:
google_places_suggestions_autocomplete_field: [最新版本]
然后运行:
flutter pub get
使用
基本用法示例
下面是如何将 GooglePlacesSuggestionsAutoCompleteField
小部件集成到你的 Flutter 应用中的示例:
class LocationPicker extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Google Places 自动补全'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: GooglePlacesSuggestionsAutoCompleteField(
controller: TextEditingController(), // 控制器管理文本输入
googleAPIKey: "YOUR_GOOGLE_API_KEY_HERE", // 你的 Google Places API 密钥
countries: "za", // 将搜索限制到南非(使用 ISO 3166-1 alpha-2 代码)
onPlaceSelected: (place) {
debugPrint("Selected place: ${jsonEncode(place.toJson())}");
},
),
),
);
}
}
参数解释
-
controller
(必需):TextEditingController
控制文本字段中的输入,并可用于检索选中的地址作为字符串。 -
googleAPIKey
(必需):你的 Google Places API 密钥,用于认证并获取地点建议。确保此 API 密钥已设置适当的计费和权限以使用 Google Places API。 -
onPlaceSelected
(必需):当从建议列表中选择一个地点时触发的回调函数。这会返回一个包含详细位置数据(地址、城市、邮政编码、国家、经纬度、省份和地区)的Place
对象。 -
countries
(可选):逗号分隔的国家代码(ISO 3166-1 alpha-2),用于将地点搜索结果限制在特定国家。默认值为 “za”(南非)。 -
hint
(可选):在文本字段中显示的提示文本(默认为 “Address”)。 -
decoration
(可选):用于文本字段的自定义InputDecoration
。如果没有提供,则会使用带有位置图标和边框的默认装饰。 -
suggestionBackgroundColor
(可选):建议列表的背景颜色。默认颜色为白色(Colors.white
)。 -
suggestionDividerColor
(可选):建议之间的分隔线颜色。默认颜色为深黑色(Colors.black87
)。 -
suggestionTextStyle
(可选):建议下拉列表中显示的自定义文本样式。如果没有提供,则会使用默认字体样式。
包含可选字段的示例
下面是一个演示如何使用可选字段来自定义小部件外观的示例:
class LocationPicker extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Google Places 自动补全'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: GooglePlacesSuggestionsAutoCompleteField(
controller: TextEditingController(), // 管理输入文本字段
googleAPIKey: "YOUR_GOOGLE_API_KEY_HERE", // 你的 Google API 密钥
hint: "搜索地点", // 输入字段的自定义提示文本
decoration: InputDecoration(
labelText: "输入地址",
border: OutlineInputBorder(),
prefixIcon: Icon(Icons.search),
), // 文本字段的自定义装饰
suggestionBackgroundColor: Colors.lightBlue.shade50, // 建议列表的背景颜色
suggestionDividerColor: Colors.blueAccent, // 建议之间的分隔线颜色
suggestionTextStyle: TextStyle(
fontSize: 16,
color: Colors.blueAccent,
), // 建议的自定义文本样式
countries: "us,ca,mx", // 将地点搜索限制在美国、加拿大和墨西哥
locationType: "geocode", // 使用地理编码以返回地理坐标
onPlaceSelected: (place) {
debugPrint("Selected place: ${jsonEncode(place.toJson())}");
}, // 处理所选地点数据的回调函数
),
),
);
}
}
更多关于Flutter地点搜索建议插件google_places_suggestions_autocomplete_field的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter地点搜索建议插件google_places_suggestions_autocomplete_field的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
google_places_suggestions_autocomplete_field
是一个用于 Flutter 的插件,它提供了一个带有自动完成功能的文本字段,可以用于搜索地点并获取 Google Places 的搜索建议。使用这个插件可以方便地在应用中集成 Google Places 的自动完成功能。
以下是使用 google_places_suggestions_autocomplete_field
插件的详细步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 google_places_suggestions_autocomplete_field
插件的依赖:
dependencies:
flutter:
sdk: flutter
google_places_suggestions_autocomplete_field: ^0.0.7
然后运行 flutter pub get
来获取依赖。
2. 获取 Google Places API 密钥
要使用这个插件,你需要一个 Google Places API 密钥。你可以在 Google Cloud Platform 上启用 Places API 并生成 API 密钥。
3. 使用 GooglePlacesSuggestionsAutocompleteField
组件
在你的 Flutter 应用中使用 GooglePlacesSuggestionsAutocompleteField
组件来实现地点搜索建议功能。
import 'package:flutter/material.dart';
import 'package:google_places_suggestions_autocomplete_field/google_places_suggestions_autocomplete_field.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Google Places Autocomplete',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomeScreen(),
);
}
}
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Google Places Autocomplete'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: GooglePlacesSuggestionsAutocompleteField(
apiKey: 'YOUR_GOOGLE_PLACES_API_KEY',
hintText: 'Search for a location',
onSelect: (place) {
// 当用户选择一个地点时执行的回调
print('Selected place: ${place.description}');
},
),
),
);
}
}
4. 处理选择的地点
在 onSelect
回调中,你可以处理用户选择的地点。place
参数是一个 Prediction
对象,包含地点的详细信息,如描述、位置 ID 等。
5. 运行应用
运行你的 Flutter 应用,你应该会看到一个带有自动完成功能的文本字段。当用户输入地点时,会自动显示 Google Places 的搜索建议。用户选择一个地点后,onSelect
回调会触发,你可以在回调中处理选择的地点。
6. 自定义和高级用法
你可以根据需要自定义 GooglePlacesSuggestionsAutocompleteField
的样式和行为。例如,你可以设置 debounce
参数来控制搜索建议的延迟时间,或者使用 onError
回调来处理错误。
GooglePlacesSuggestionsAutocompleteField(
apiKey: 'YOUR_GOOGLE_PLACES_API_KEY',
hintText: 'Search for a location',
debounce: Duration(milliseconds: 500),
onSelect: (place) {
print('Selected place: ${place.description}');
},
onError: (error) {
print('Error: $error');
},
);