Flutter数据库查询插件open_brewery_db的使用
Flutter数据库查询插件open_brewery_db的使用
特性
列表啤酒厂 | 获取啤酒厂 | 搜索啤酒厂 |
---|---|---|
![]() |
![]() |
![]() |
开始使用
安装
添加包
dependencies:
open_brewery_db: ^0.0.6
在项目目录中运行
$ flutter pub get
导入它
import 'package:open_brewery_db/open_brewery_db.dart';
使用
获取啤酒厂ID
用法
Future<Brewery> getBrewery({required String id})
示例
OpenBreweryDb.getBrewery(id: "sierra-nevada-brewing-co-chico")
列出啤酒厂
用法
Future<List<Brewery>> listBreweries({
String? byCity,
LatLng? byDist,
String? byName,
String? byState,
String? byPostal,
BreweryType? byType,
int? byPage,
int? perPage,
List<SortFieldType> sortFields = const [],
Sort? sortOrder,
})
示例
OpenBreweryDb.listBreweries(
byCity: "Sacramento",
sortFields: [SortFieldType.name],
sortOrder: Sort.asc,
),
OpenBreweryDb.listBreweries(
byState: "California",
byCity: "San Diego",
sortFields: [SortFieldType.street],
sortOrder: Sort.desc,
),
OpenBreweryDb.listBreweries(
byDist: LatLng(latitude: 38.5816, longitude: -121.4944), // Sacramento, CA
),
搜索啤酒厂
用法
Future<List<Brewery>> searchBreweries({
required String query,
})
示例
OpenBreweryDb.searchBreweries(query: "Sierra Nevada")
OpenBreweryDb.searchBreweries(query: "Chico California")
数据结构
Future<Brewery>
Future<List<Brewery>>
Brewery
final String? id;
final String? name;
final String? breweryType;
final String? street;
final String? address_2;
final String? address_3;
final String? city;
final String? state;
final String? countyProvince;
final String? postalCode;
final String? country;
final String? longitude;
final String? latitude;
final String? phone;
final String? websiteUrl;
final String? updatedAt;
final String? createdAt;
路线图
- ✅ 添加文档注释
- ❌ 添加自动完成端点
- ❌ 编写完整的
get brewery
测试(目前只实现了简单的测试) - ❌ 编写完整的
list breweries
测试(目前只实现了简单的测试) - ❌ 编写完整的
search breweries
测试(目前只实现了简单的测试)
额外信息
欢迎提交拉取请求!
示例代码
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:open_brewery_db_example/widget_examples.dart/get_brewery.dart';
import 'package:open_brewery_db_example/widget_examples.dart/list_breweries.dart';
import 'package:open_brewery_db_example/widget_examples.dart/search_breweries.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
home: Body(),
);
}
}
class Body extends StatefulWidget {
const Body({
Key? key,
}) : super(key: key);
[@override](/user/override)
State<Body> createState() => _BodyState();
}
class _BodyState extends State<Body> {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: const Color(0xffFFBB00),
title: const Text(
'Open Brewery DB Example',
style: TextStyle(color: Colors.black),
),
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
SizedBox(
width: MediaQuery.of(context).size.width,
child: OutlinedButton(
style: OutlinedButton.styleFrom(
primary: Colors.black,
),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const ListBreweries(),
),
);
},
child: const Text('List Breweries'),
),
),
SizedBox(
width: MediaQuery.of(context).size.width,
child: OutlinedButton(
style: OutlinedButton.styleFrom(
primary: Colors.black,
),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const GetBrewery(),
),
);
},
child: const Text('Get Brewery'),
),
),
SizedBox(
width: MediaQuery.of(context).size.width,
child: OutlinedButton(
style: OutlinedButton.styleFrom(
primary: Colors.black,
),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => const SearchBreweries(),
),
);
},
child: const Text('Search Breweries'),
),
),
],
),
),
);
}
}
更多关于Flutter数据库查询插件open_brewery_db的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter数据库查询插件open_brewery_db的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter项目中,使用open_brewery_db
插件可以让你方便地访问Open Brewery DB的API,从而获取全球啤酒厂的数据。尽管open_brewery_db
本身不是一个数据库插件,而是一个网络API客户端,但你可以使用它来获取数据并在本地存储或查询。
下面是一个简单的示例,展示了如何使用open_brewery_db
插件从API获取数据,并在Flutter应用中显示这些数据。为了简单起见,这里不会涉及到本地数据库的存储和查询,而是直接展示如何调用API和显示结果。
首先,确保你已经在pubspec.yaml
文件中添加了open_brewery_db
依赖:
dependencies:
flutter:
sdk: flutter
open_brewery_db: ^x.y.z # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中创建一个新的Dart文件,比如brewery_service.dart
,用于封装对open_brewery_db
的调用:
import 'package:open_brewery_db/open_brewery_db.dart';
import 'package:http/http.dart' as http;
class BreweryService {
final OpenBreweryDb _openBreweryDb;
BreweryService() : _openBreweryDb = OpenBreweryDb(client: http.Client());
Future<List<Brewery>> fetchBreweries() async {
try {
final response = await _openBreweryDb.fetchBreweries(by: 'name');
return response.breweries;
} catch (e) {
throw e;
} finally {
_openBreweryDb.client.close();
}
}
}
注意:在最新版本中,OpenBreweryDb
的构造方法可能有所变化,请根据实际情况调整代码。
然后,在你的主文件(比如main.dart
)中,使用这个服务来获取并显示啤酒厂数据:
import 'package:flutter/material.dart';
import 'brewery_service.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Open Brewery DB Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: BreweryListScreen(),
);
}
}
class BreweryListScreen extends StatefulWidget {
@override
_BreweryListScreenState createState() => _BreweryListScreenState();
}
class _BreweryListScreenState extends State<BreweryListScreen> {
List<Brewery> breweries = [];
bool isLoading = true;
@override
void initState() {
super.initState();
fetchBreweries();
}
Future<void> fetchBreweries() async {
setState(() {
isLoading = true;
});
try {
final service = BreweryService();
breweries = await service.fetchBreweries();
} catch (e) {
print('Error fetching breweries: $e');
}
setState(() {
isLoading = false;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Breweries'),
),
body: isLoading
? Center(child: CircularProgressIndicator())
: ListView.builder(
itemCount: breweries.length,
itemBuilder: (context, index) {
final brewery = breweries[index];
return ListTile(
title: Text(brewery.name),
subtitle: Text(brewery.city),
);
},
),
);
}
}
这个示例展示了如何使用open_brewery_db
插件从API获取啤酒厂列表,并在Flutter应用中显示这些列表。你可以根据需要对这个基础代码进行扩展,比如添加错误处理、分页加载、搜索功能等。
请注意,由于open_brewery_db
是一个网络API客户端,因此在实际应用中,你可能需要考虑网络请求的缓存、错误重试机制以及API速率限制等问题。此外,对于敏感数据或大量数据的存储和查询,你可能需要考虑使用Flutter的本地数据库插件,如sqflite
或floor
。