在 Flutter 3.0 中,二维码扫描器出现错误

Diy*_*Dev 5 android dart kotlin flutter

我正在更新一个旧项目。该二维码扫描仪出现错误。该项目之前在 flutter 2.10 上运行。Flutter 3.0 存在错误。

\n
import 'package:flutter/material.dart';\nimport 'package:qr_code_scanner/qr_code_scanner.dart';\nimport 'dart:io';\nimport 'package:flutter/foundation.dart';\n\nvoid main() {\n  runApp(const MyApp());\n}\n\nclass MyApp extends StatelessWidget {\n  const MyApp({Key? key}) : super(key: key);\n\n  // This widget is the root of your application.\n  @override\n  Widget build(BuildContext context) {\n    return MaterialApp(\n      title: 'Flutter Demo',\n      theme: ThemeData(\n        \n        primarySwatch: Colors.blue,\n      ),\n      home: const MyHomePage(title: 'Flutter Demo Home Page'),\n    );\n  }\n}\n\nclass MyHomePage extends StatefulWidget {\n  const MyHomePage({Key? key, required this.title}) : super(key: key);\n\n\n  final String title;\n\n  @override\n  State<MyHomePage> createState() => _MyHomePageState();\n}\n\nclass _MyHomePageState extends State<MyHomePage> {\n  final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');\n  Barcode? result;\n  QRViewController? controller;\n\n  // In order to get hot reload to work we need to pause the camera if the platform\n  // is android, or resume the camera if the platform is iOS.\n  @override\n  void reassemble() {\n    super.reassemble();\n    if (Platform.isAndroid) {\n      controller!.pauseCamera();\n    } else if (Platform.isIOS) {\n      controller!.resumeCamera();\n    }\n  }\n\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      body: Column(\n        children: <Widget>[\n          Expanded(\n            flex: 5,\n            child: QRView(\n              key: qrKey,\n              onQRViewCreated: _onQRViewCreated,\n            ),\n          ),\n          Expanded(\n            flex: 1,\n            child: Center(\n              child: (result != null)\n                  ? Text(\n                  'Barcode Type: ${describeEnum(result!.format)}   Data: ${result!.code}')\n                  : Text('Scan a code'),\n            ),\n          )\n        ],\n      ),\n    );\n  }\n\n  void _onQRViewCreated(QRViewController controller) {\n    this.controller = controller;\n    controller.scannedDataStream.listen((scanData) {\n      setState(() {\n        result = scanData;\n      });\n    });\n  }\n\n  @override\n  void dispose() {\n    controller?.dispose();\n    super.dispose();\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

错误

\n
Warning: unexpected element (uri:"", local:"base-extension"). Expected elements are <{}codename>,<{}layoutlib>,<{}api-level>\n/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/qr_code_scanner-0.7.0/lib/src/qr_code_scanner.dart:68:20: Warning: Operand of null-aware operation '!' has type 'WidgetsBinding' which excludes null.\n - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('/C:/src/flutter/packages/flutter/lib/src/widgets/binding.dart').\n    WidgetsBinding.instance!.addObserver(_observer);\n                   ^\n/C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/qr_code_scanner-0.7.0/lib/src/qr_code_scanner.dart:86:20: Warning: Operand of null-aware operation '!' has type 'WidgetsBinding' which excludes null.\n - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('/C:/src/flutter/packages/flutter/lib/src/widgets/binding.dart').\n    WidgetsBinding.instance!.removeObserver(_observer);\n                   ^\ne: C:\\src\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\qr_code_scanner-0.7.0\\android\\src\\main\\kotlin\\net\\touchcapture\\qr\\flutterqr\\QRView.kt: (23, 1): Class 'QRView' is not abstract and does not implement abstract member public abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean defined in io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener\ne: C:\\src\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\qr_code_scanner-0.7.0\\android\\src\\main\\kotlin\\net\\touchcapture\\qr\\flutterqr\\QRView.kt: (216, 26): Null can not be a value of a non-null type String\ne: C:\\src\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\qr_code_scanner-0.7.0\\android\\src\\main\\kotlin\\net\\touchcapture\\qr\\flutterqr\\QRView.kt: (247, 26): Null can not be a value of a non-null type String\ne: C:\\src\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\qr_code_scanner-0.7.0\\android\\src\\main\\kotlin\\net\\touchcapture\\qr\\flutterqr\\QRView.kt: (310, 5): 'onRequestPermissionsResult' overrides nothing\ne: C:\\src\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\qr_code_scanner-0.7.0\\android\\src\\main\\kotlin\\net\\touchcapture\\qr\\flutterqr\\QRViewFactory.kt: (10, 1): Class 'QRViewFactory' is not abstract and does not implement abstract base class member public abstract fun create(p0: Context?, p1: Int, p2: Any?): PlatformView defined in io.flutter.plugin.platform.PlatformViewFactory\ne: C:\\src\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\qr_code_scanner-0.7.0\\android\\src\\main\\kotlin\\net\\touchcapture\\qr\\flutterqr\\QRViewFactory.kt: (13, 5): 'create' overrides nothing\n\nFAILURE: Build failed with an exception.\n\n* What went wrong:\nExecution failed for task ':qr_code_scanner:compileDebugKotlin'.\n> Compilation error. See log for more details\n\n* Try:\nRun with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.\n\n* Get more help at https://help.gradle.org\n\nBUILD FAILED in 21s\nRunning Gradle task 'assembleDebug'...                             22.5s\nException: Gradle task assembleDebug failed with exit code 1\n
Run Code Online (Sandbox Code Playgroud)\n

扑动医生-v

\n
[\xe2\x88\x9a] Flutter (Channel stable, 3.0.0, on Microsoft Windows [Version 10.0.19043.1645], locale en-US)\n    \xe2\x80\xa2 Flutter version 3.0.0 at C:\\src\\flutter\n    \xe2\x80\xa2 Upstream repository https://github.com/flutter/flutter.git\n    \xe2\x80\xa2 Framework revision ee4e09cce0 (2 days ago), 2022-05-09 16:45:18 -0700\n    \xe2\x80\xa2 Engine revision d1b9a6938a\n    \xe2\x80\xa2 Dart version 2.17.0\n    \xe2\x80\xa2 DevTools version 2.12.2\n\nChecking Android licenses is taking an unexpectedly long time...[\xe2\x88\x9a] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)\n    \xe2\x80\xa2 Android SDK at C:\\Users\\User\\AppData\\Local\\Android\\sdk\n    \xe2\x80\xa2 Platform android-32, build-tools 32.1.0-rc1\n    \xe2\x80\xa2 Java binary at: C:\\Program Files\\Android\\Android Studio\\jre\\bin\\java\n    \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)\n    \xe2\x80\xa2 All Android licenses accepted.\n\n[\xe2\x88\x9a] Chrome - develop for the web\n    \xe2\x80\xa2 Chrome at C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe\n\n[\xe2\x88\x9a] Visual Studio - develop for Windows (Visual Studio Professional 2022 17.1.3)\n    \xe2\x80\xa2 Visual Studio at C:\\Program Files\\Microsoft Visual Studio\\2022\\Professional\n    \xe2\x80\xa2 Visual Studio Professional 2022 version 17.1.32328.378\n    \xe2\x80\xa2 Windows 10 SDK version 10.0.19041.0\n\n[\xe2\x88\x9a] Android Studio (version 2021.1)\n    \xe2\x80\xa2 Android Studio at C:\\Program Files\\Android\\Android Studio\n    \xe2\x80\xa2 Flutter plugin can be installed from:\n       https://plugins.jetbrains.com/plugin/9212-flutter\n    \xe2\x80\xa2 Dart plugin can be installed from:\n       https://plugins.jetbrains.com/plugin/6351-dart\n    \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 11.0.11+9-b60-7590822)\n\n[\xe2\x88\x9a] VS Code (version 1.67.1)\n    \xe2\x80\xa2 VS Code at C:\\Users\\User\\AppData\\Local\\Programs\\Microsoft VS Code\n    \xe2\x80\xa2 Flutter extension version 3.40.0\n\n[\xe2\x88\x9a] Connected device (5 available)\n    \xe2\x80\xa2 SM T500 (mobile)        \xe2\x80\xa2 R9AR702P83X   \xe2\x80\xa2 android-arm64  \xe2\x80\xa2 Android 11 (API 30)\n    \xe2\x80\xa2 sdk gphone x86 (mobile) \xe2\x80\xa2 emulator-5554 \xe2\x80\xa2 android-x86    \xe2\x80\xa2 Android 11 (API 30) (emulator)\n    \xe2\x80\xa2 Windows (desktop)       \xe2\x80\xa2 windows       \xe2\x80\xa2 windows-x64    \xe2\x80\xa2 Microsoft Windows [Version 10.0.19043.1645]\n    \xe2\x80\xa2 Chrome (web)            \xe2\x80\xa2 chrome        \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Google Chrome 101.0.4951.54\n    \xe2\x80\xa2 Edge (web)              \xe2\x80\xa2 edge          \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Microsoft Edge 101.0.1210.39\n\n[\xe2\x88\x9a] HTTP Host Availability\n    \xe2\x80\xa2 All required HTTP hosts are available\n\n\xe2\x80\xa2 No issues found!\n
Run Code Online (Sandbox Code Playgroud)\n

我应该做什么才能让它发挥作用?在一切正常之前,我将项目更新到最新版本的 flutter,现在出现此错误。

\n

Par*_*ani 6

更新的答案

现在您可以使用qr_code_scanner 版本 1.0.0。与升级到 flutter 3.0 相关的错误现已修复。


您可以通过以下方式直接导入库:

 qr_code_scanner:
  git:
   url: https://github.com/xeinebiu/qr_code_scanner.git
   ref: fix_break_changes_platform
Run Code Online (Sandbox Code Playgroud)