首先在pubspec.yaml中添加:
dependencies:
qrscan: ^0.3.2
在androd清單檔案中加入以下權限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--
路徑:E:\chen\android\app\src\main\AndroidManifest.xml
-->
import 'package:flutter/material.dart';
import 'package:qrscan/qrscan.dart' as scanner;
import 'package:event_bus/event_bus.dart';
void main() {
runApp(MyApp());
}
final eventBus = EventBus();
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(home: HomePage());
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("QRScan")),
body: BodyContent(),
);
}
}
class BodyContent extends StatelessWidget {
const BodyContent({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
child: Column(
children: [HYButton(), HYText()],
));
}
}
class HYButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ElevatedButton(
child: Text("掃一掃"),
onPressed: scan,
);
}
Future scan() async {
String? cameraScanResult = await scanner.scan(); //通過掃碼獲取二維碼中的資料
final info = QRInfo("${cameraScanResult}");
eventBus.fire(info);
print(cameraScanResult); //在控制臺列印
}
}
class HYText extends StatefulWidget {
@override
_HYTextState createState() => _HYTextState();
}
class _HYTextState extends State<HYText> {
String message = "Hello GalenWu";
@override
void initState() {
super.initState();
eventBus.on<QRInfo>().listen((data) {
setState(() {
message = "${data.qrcode}";
});
});
}
@override
Widget build(BuildContext context) {
return Text(
message,
style: TextStyle(fontSize: 30),
);
}
}
class QRInfo {
String? qrcode;
QRInfo(this.qrcode);
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/317964.html
標籤:其他
下一篇:微信網頁開發除錯的一些方法
