Ver código fonte

Added onResume listener and updateDimensions call (#250)

flutter-beta
Julian Steenbakker 5 anos atrás
pai
commit
ba67e47b7d
2 arquivos alterados com 42 adições e 0 exclusões
  1. +30
    -0
      lib/src/lifecycle_event_handler.dart
  2. +12
    -0
      lib/src/qr_code_scanner.dart

+ 30
- 0
lib/src/lifecycle_event_handler.dart Ver arquivo

@@ -0,0 +1,30 @@
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';

class LifecycleEventHandler extends WidgetsBindingObserver {
LifecycleEventHandler({
this.resumeCallBack,
this.suspendingCallBack,
});

final AsyncCallback resumeCallBack;
final AsyncCallback suspendingCallBack;

@override
Future<void> didChangeAppLifecycleState(AppLifecycleState state) async {
switch (state) {
case AppLifecycleState.resumed:
if (resumeCallBack != null) {
await resumeCallBack();
}
break;
case AppLifecycleState.inactive:
case AppLifecycleState.paused:
case AppLifecycleState.detached:
if (suspendingCallBack != null) {
await suspendingCallBack();
}
break;
}
}
}

+ 12
- 0
lib/src/qr_code_scanner.dart Ver arquivo

@@ -4,6 +4,7 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import 'lifecycle_event_handler.dart';
import 'qr_scanner_overlay_shape.dart';
import 'types/barcode.dart';
import 'types/barcode_format.dart';
@@ -58,6 +59,17 @@ class QRView extends StatefulWidget {
class _QRViewState extends State<QRView> {
var _channel;

@override
void initState() {
super.initState();

WidgetsBinding.instance.addObserver(
LifecycleEventHandler(resumeCallBack: () async =>
QRViewController.updateDimensions(widget.key, _channel,
overlay: widget.overlay)
));
}

@override
Widget build(BuildContext context) {
return NotificationListener(


Carregando…
Cancelar
Salvar