Flutter文档扫描插件cuervo_document_scanner的使用
Flutter文档扫描插件cuervo_document_scanner的使用
cuervo_document_scanner
是一个具有自动裁剪功能的文档扫描插件,并且可以选择从相册或相机获取图像。
开始使用
iOS
在应用程序的 Info.plist
文件中添加以下字符串属性,键分别为 NSCameraUsageDescription
和 NSPhotoLibraryUsageDescription
,值为你的应用程序需要相机和相册访问权限的原因描述。
<key>NSCameraUsageDescription</key>
<string>Camera Permission Description</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Gallery Permission Description</string>
Android
确保 minSdkVersion
至少为 21。
如何使用?
你可以通过以下方式调用插件来获取图片:
final imagesPath = await CuervoDocumentScanner.getPictures(Source.CAMERA);
路径到裁剪后的图像将作为 List<String>
返回。如果你想要从相册获取图片,只需将源更改为 Source.GALLERY
。
示例代码
以下是完整的示例代码,展示了如何使用 cuervo_document_scanner
插件:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:cuervo_document_scanner/cuervo_document_scanner.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 这个小部件是你的应用的根。它是无状态的,意味着它没有会改变其外观的状态字段。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: '插件示例应用',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Cuervo 文档扫描器示例'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
// 这个小部件是你的应用的主页。它是有状态的,这意味着它有一个包含影响其外观的字段的状态对象。
// 这个类是状态的配置。它保留了由父级(在这个例子中是App小部件)提供的值(在这个例子中是标题),并用于State的小部件构建方法。
// 小部件子类中的字段总是被标记为“final”。
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<String> _pictures = [];
void onPressed(Source source) async {
List<String> pictures;
try {
// 调用方法以从所选源获取图片
pictures = await CuervoDocumentScanner.getPictures(source) ?? [];
if (!mounted) return;
setState(() {
// 更新图片列表
_pictures = pictures;
});
} catch (e) {
// 在这里处理异常
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
children: [
// 按钮以从相册获取图片
ElevatedButton.icon(
onPressed: () => onPressed(Source.GALLERY),
icon: const Icon(Icons.photo_size_select_actual_rounded),
label: const Text("相册"),
),
const SizedBox(
width: 10.0,
),
// 按钮以从相机获取图片
ElevatedButton.icon(
onPressed: () => onPressed(Source.CAMERA),
icon: const Icon(Icons.camera),
label: const Text("相机"),
),
],
),
// 显示裁剪后的图片
for (var picture in _pictures) Image.file(File(picture)),
],
),
),
);
}
}
更多关于Flutter文档扫描插件cuervo_document_scanner的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复