Flutter图像处理插件pix_bb的使用
Flutter图像处理插件pix_bb的使用
关于这个项目
本插件提供了一个简单易用的界面,用于在您的 Flutter 应用程序中集成 Banco do Brasil 的 Pix API。通过此插件,您可以快速高效地获取交易信息。
前置条件
- 已注册的 Pix 密钥
- 仅限法人实体使用
- 在 BB 开发者门户 注册
开始使用
要将此插件添加到您的项目中,请遵循以下步骤:
a) 在 pubspec.yaml
中添加依赖项
dependencies:
pix_bb: <最新版本>
b) 或使用命令行安装
dart pub add pix_bb
如何使用
此插件可以快速获取交易信息!
首先实例化类并传递适当的参数:
final pixBB = PixBB(
ambiente: Ambiente.homologacao,
basicKey: 'BASIC_KEY',
applicationDeveloperKey: 'APP_DEV_KEY',
);
然后发起请求以获取过去四天内的交易列表:
await pixBB.getToken().then((token) {
pixBB.fetchTransactions(token: token).then((response) {
print(response); // 返回一个 Pix 列表。
}).catchError((e) {
print(e);
// 这是一个 PixException。
// 此插件提供了几种处理可能发生的错误的方法。
// 请参阅文档!
});
});
示例代码
以下是完整的示例代码,展示了如何使用此插件来获取和展示交易信息:
import 'package:flutter/material.dart';
import 'package:pix_bb/pix_bb.dart';
void main() {
runApp(const ExampleApp());
}
class ExampleApp extends StatelessWidget {
const ExampleApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
useMaterial3: true,
),
debugShowCheckedModeBanner: false,
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
late PixBB pixBB;
@override
void initState() {
super.initState();
pixBB = PixBB(
ambiente: Ambiente.producao,
basicKey: '', // 请替换为您的实际密钥
developerApplicationKey: '', // 请替换为您的实际开发者密钥
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Pix API Banco do Brasil'),
),
body: FutureBuilder(
future: pixBB.getToken().then(
(token) => pixBB.fetchTransactions(
token: token,
dateTimeRange: DateTimeRange(
start: DateTime.now().subtract(const Duration(days: 4)),
end: DateTime.now(),
),
),
),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
case ConnectionState.active:
return const Center(child: CircularProgressIndicator());
case ConnectionState.done:
if (snapshot.hasData && snapshot.data!.isNotEmpty) {
int length = snapshot.data!.length;
return RefreshIndicator(
onRefresh: () {
return Future(() => setState(() {}));
},
child: ListView.builder(
itemCount: length,
itemBuilder: (context, index) {
var transaction = snapshot.data![index];
return ListTile(
title: Text(transaction.pagador.nome.split(' ')[0]),
subtitle: Text(transaction.valor),
trailing: Text(transaction.horario),
);
},
),
);
} else if (snapshot.hasError) {
if (snapshot.error is PixException) {
final error = snapshot.error;
final errorMessage = error is PixException
? error.error
: snapshot.error.toString();
return Center(
child: Text(errorMessage),
);
}
}
return const Center(
child: Text('未找到任何交易'),
);
}
},
),
);
}
}
功能特性
-
查询功能:
- 获取最近的交易
- 按日期获取交易
-
其他功能(当前正在进行开发):
- 动态二维码配置:创建具有唯一标识的 Pix 账单;
- 收据验证:验证生成账单的状态;
- 审查:允许更改生成的账单数据;
- 退款(请求和查询):允许部分或全额退还 Pix 给付款人,并可查询退款。
使用案例
请求访问令牌
请求令牌:
final token = await pixBB.getToken();
获取 Pix 交易
默认时间范围:
final listPix = await pixBB.fetchTransactions(
token: token,
);
// 返回过去四天的交易
自定义时间范围:
final listPix = await pixBB.fetchTransactions(
token: token,
dateTimeRange: DateTimeRange(
start: DateTime.now().subtract(Duration(days: 1)),
end: DateTime.now(),
),
);
// 返回指定日期范围内的交易
// 注意:日期差不能超过 4 天
更多关于Flutter图像处理插件pix_bb的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter图像处理插件pix_bb的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中使用pix_bb
图像处理插件的示例代码。pix_bb
插件通常用于图像裁剪、选择特定区域等操作。以下是一个基本的示例,展示了如何使用该插件进行图像选择和裁剪。
首先,确保在pubspec.yaml
文件中添加pix_bb
依赖:
dependencies:
flutter:
sdk: flutter
pix_bb: ^最新版本号 # 请替换为当前最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,我们编写一个Flutter应用来演示如何使用pix_bb
插件。
1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:pix_bb/pix_bb.dart';
import 'dart:ui' as ui;
import 'dart:typed_data';
2. 创建主应用
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: ImageCropScreen(),
);
}
}
3. 创建图像裁剪屏幕
class ImageCropScreen extends StatefulWidget {
@override
_ImageCropScreenState createState() => _ImageCropScreenState();
}
class _ImageCropScreenState extends State<ImageCropScreen> {
Uint8List? _imageBytes;
PixBBController? _pixBBController;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Image Crop with pix_bb'),
),
body: Column(
children: [
Expanded(
child: _imageBytes == null
? Center(child: Text('No Image Selected'))
: PixBBPicker(
controller: _pixBBController!,
imageProvider: MemoryImage(_imageBytes!),
onResult: (result) {
setState(() {
// 处理裁剪结果
final croppedImageBytes = result.imageBytes;
// 可以在这里显示或保存裁剪后的图像
});
},
),
),
ElevatedButton(
onPressed: _pickImage,
child: Text('Pick Image'),
),
],
),
);
}
Future<void> _pickImage() async {
final pickedFile = await ImagePicker().pickImage(source: ImageSource.gallery);
if (pickedFile != null) {
setState(() {
_imageBytes = pickedFile.readAsBytesSync();
_pixBBController = PixBBController(
imageBytes: _imageBytes!,
maxCropArea: Size(500, 500), // 设置最大裁剪区域大小
);
});
}
}
}
4. 添加ImagePicker依赖
由于我们从设备图库中选择图像,因此需要image_picker
插件。在pubspec.yaml
中添加以下依赖:
dependencies:
flutter:
sdk: flutter
pix_bb: ^最新版本号
image_picker: ^最新版本号 # 请替换为当前最新版本号
然后,运行flutter pub get
来安装新的依赖。
5. 处理ImagePicker权限
在AndroidManifest.xml
中添加必要的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
并在iOS的Info.plist
中添加权限描述(如果需要)。
总结
上述代码展示了如何在Flutter中使用pix_bb
插件进行图像选择和裁剪。你可以根据需求进一步定制裁剪区域的外观、行为等。确保在实际项目中处理图像数据时考虑到性能和内存管理。