main_screen.dart 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /*
  2. * QR.Flutter
  3. * Copyright (c) 2019 the QR.Flutter authors.
  4. * See LICENSE for distribution and usage details.
  5. */
  6. import 'dart:async';
  7. import 'dart:ui' as ui;
  8. import 'package:flutter/material.dart';
  9. import 'package:flutter/services.dart';
  10. // ignore: directives_ordering
  11. import 'package:fis_lib_qrcode/qr_flutter.dart';
  12. /// This is the screen that you'll see when the app starts
  13. class MainScreen extends StatefulWidget {
  14. @override
  15. _MainScreenState createState() => _MainScreenState();
  16. }
  17. class _MainScreenState extends State<MainScreen> {
  18. @override
  19. Widget build(BuildContext context) {
  20. final message =
  21. // ignore: lines_longer_than_80_chars
  22. 'Hey this is a QR code. Change this value in the main_screen.dart file.';
  23. final qrFutureBuilder = FutureBuilder<ui.Image>(
  24. future: _loadOverlayImage(),
  25. builder: (ctx, snapshot) {
  26. final size = 280.0;
  27. if (!snapshot.hasData) {
  28. return Container(width: size, height: size);
  29. }
  30. return CustomPaint(
  31. size: Size.square(size),
  32. painter: QrPainter(
  33. data: message,
  34. version: QrVersions.auto,
  35. eyeStyle: const QrEyeStyle(
  36. eyeShape: QrEyeShape.square,
  37. color: Colors.black,
  38. ),
  39. dataModuleStyle: const QrDataModuleStyle(
  40. dataModuleShape: QrDataModuleShape.circle,
  41. color: Colors.black,
  42. ),
  43. // size: 320.0,
  44. embeddedImage: snapshot.data,
  45. embeddedImageStyle: QrEmbeddedImageStyle(
  46. size: Size.square(60),
  47. ),
  48. ),
  49. );
  50. },
  51. );
  52. return Material(
  53. color: Colors.white,
  54. child: SafeArea(
  55. top: true,
  56. bottom: true,
  57. child: Container(
  58. child: Column(
  59. children: <Widget>[
  60. Expanded(
  61. child: Center(
  62. child: Container(
  63. width: 280,
  64. child: qrFutureBuilder,
  65. ),
  66. ),
  67. ),
  68. Padding(
  69. padding: EdgeInsets.symmetric(vertical: 20, horizontal: 40)
  70. .copyWith(bottom: 40),
  71. child: Text(message),
  72. ),
  73. ],
  74. ),
  75. ),
  76. ),
  77. );
  78. }
  79. Future<ui.Image> _loadOverlayImage() async {
  80. final completer = Completer<ui.Image>();
  81. final byteData = await rootBundle.load('assets/images/4.0x/flyinsono.png');
  82. ui.decodeImageFromList(byteData.buffer.asUint8List(), completer.complete);
  83. return completer.future;
  84. }
  85. }