在 Flutter App 中调用平板纸扫描仪

Posted

技术标签:

【中文标题】在 Flutter App 中调用平板纸扫描仪【英文标题】:invoke flatbed paper scanner in Flutter App 【发布时间】:2021-01-05 19:31:56 【问题描述】:

我想在我的颤振应用程序中使用纸质扫描仪,所以我可以使用现代平板扫描仪一次扫描大量文档,如果有任何可靠的包和插件可以帮助我调用扫描仪(不是 CAM),请让我知道,我会感谢你的帮助...

【问题讨论】:

【参考方案1】:

我认为这个 flutter_genius_scan 3.0.24 包对你有帮助。

所以首先在你的项目 pubspec.yaml 文件中添加这个 flutter_genius_scan 3.0.24 包:

(同时在你的项目 pubspec.yaml 文件中包含 open_file: ^3.0.1 包。)

就像:

dependencies:
  flutter_genius_scan: ^3.0.24
  open_file: ^3.0.1

然后创建新的 Dart 页面并命名为 Scanning_Page 并在其中添加以下代码。

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_genius_scan/flutter_genius_scan.dart';
import 'package:open_file/open_file.dart';

class Scanning_Page extends StatefulWidget 
  @override
  _Scanning_PageState createState() => _Scanning_PageState();


class _Scanning_PageState extends State<Scanning_Page> 
  @override
  Widget build(BuildContext context) 
    return Scaffold(
        appBar: AppBar(
          title: const Text('Scan Documents'),
        ),
        body: Center(
          child: RaisedButton.icon(
            onPressed: () 
              FlutterGeniusScan.scanWithConfiguration(
                'source': 'camera',
                'multiPage': true,
              ).then((result) 
                String pdfUrl = result['pdfUrl'];
                OpenFile.open(pdfUrl.replaceAll("file://", '')).then(
                        (result) => debugPrint(result.toString()),
                    onError: (error) => displayError(context, error));
              , onError: (error) => displayError(context, error));
            ,
            shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.all(Radius.circular(10.0))),
            label: Text('START SCANNING',
              style: TextStyle(color: Colors.white),),
            icon: Icon(Icons.scanner, color: Colors.white,),
            textColor: Colors.white,
            splashColor: Colors.red,
            color: Colors.lightBlue,),
        )
    );
  

  void displayError(BuildContext context, PlatformException error) 
    Scaffold.of(context).showSnackBar(SnackBar(content: Text(error.message)));
  

然后在您的 ma​​in.dart 文件中使用以下代码:

import 'package:flutter/material.dart';
import 'package:flutter_app/Scanning_Page.dart';

void main() 
  runApp(MyApp());


class MyApp extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Scan Documents',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home:Scanning_Page(),
    );
  

注意:您的 minSdkVersion 必须为 19minSdkVersion 19app -> build 中。 gradle 文件来支持这些包,如下所示:

 defaultConfig 
        .........
        .........
        minSdkVersion 19
        targetSdkVersion 28
        ........
        ........
    

【讨论】:

以上是关于在 Flutter App 中调用平板纸扫描仪的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter Web 中扫描二维条码?

Flutter之实现生成二维码,扫描二维码——Flutter基础系列

信用卡扫描仪 - 颤振

扫描二维码后自动打开链接flutter

使用虚拟场景在 Android 模拟器中扫描条码

Flutter_Blue 无法扫描我的设备。 (我的BT音箱)安卓