73 lines
2.3 KiB
Dart
73 lines
2.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:qr_code_scanner/qr_code_scanner.dart';
|
|
import 'package:webview_flutter/webview_flutter.dart';
|
|
|
|
class XRWithQRScannerPage extends StatefulWidget {
|
|
@override
|
|
_XRWithQRScannerPageState createState() => _XRWithQRScannerPageState();
|
|
}
|
|
|
|
class _XRWithQRScannerPageState extends State<XRWithQRScannerPage> {
|
|
String qrCode = "";
|
|
late final WebViewController _webViewController;
|
|
final GlobalKey qrKey = GlobalKey(debugLabel: 'QR');
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_webViewController = WebViewController()
|
|
..setJavaScriptMode(JavaScriptMode.unrestricted)
|
|
..loadRequest(Uri.parse("https://immersive-web.github.io/webxr-samples/immersive-ar-session.html"))
|
|
;
|
|
//..loadFlutterAsset('assets/files/xr_environment.html'); // Charge le fichier local
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(title: Text("XR avec Scanner QR Code")),
|
|
body: Stack(
|
|
children: [
|
|
// La couche QR code scanner (superposée au-dessus de l'XR)
|
|
Positioned.fill(
|
|
child: QRView(
|
|
onQRViewCreated: (controller) {
|
|
controller.scannedDataStream.listen((scanData) {
|
|
setState(() {
|
|
qrCode = scanData.code!;
|
|
print('QR Code détecté : $qrCode');
|
|
fetchData(qrCode);
|
|
});
|
|
});
|
|
}, key: qrKey,
|
|
),
|
|
),
|
|
// La couche XR (WebXR avec Three.js ou autre moteur)
|
|
WebViewWidget(
|
|
controller: _webViewController
|
|
..setJavaScriptMode(JavaScriptMode.unrestricted)
|
|
..setBackgroundColor(Color(0x00000000))
|
|
..addJavaScriptChannel(
|
|
'WebViewChannel',
|
|
onMessageReceived: (message) {
|
|
// Message reçu de JavaScript
|
|
print(message.message);
|
|
showDialog(
|
|
context: context,
|
|
builder: (context) => AlertDialog(
|
|
content: Text(message.message),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
Future<void> fetchData(String? qrCode) async {
|
|
print('Fetching data for QR Code: $qrCode');
|
|
}
|
|
}
|