lock_screen.dart 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter/widgets.dart';
  3. import 'package:logging/logging.dart';
  4. import 'package:photos/ui/app_lock.dart';
  5. import 'package:photos/ui/loading_widget.dart';
  6. import 'package:photos/utils/auth_util.dart';
  7. class LockScreen extends StatefulWidget {
  8. LockScreen({Key key}) : super(key: key);
  9. @override
  10. _LockScreenState createState() => _LockScreenState();
  11. }
  12. class _LockScreenState extends State<LockScreen> {
  13. final _logger = Logger("LockScreen");
  14. bool _isUnlocking = true;
  15. @override
  16. void initState() {
  17. _showLockScreen();
  18. super.initState();
  19. }
  20. @override
  21. Widget build(BuildContext context) {
  22. return Scaffold(
  23. body: Center(
  24. child: Container(
  25. width: double.infinity,
  26. height: 64,
  27. padding: const EdgeInsets.fromLTRB(80, 0, 80, 0),
  28. child: _isUnlocking
  29. ? Padding(
  30. padding: const EdgeInsets.only(top: 24),
  31. child: loadWidget,
  32. )
  33. : RaisedButton(
  34. child: Text(
  35. "unlock",
  36. style: TextStyle(
  37. fontWeight: FontWeight.bold,
  38. fontSize: 18,
  39. letterSpacing: 1.0,
  40. ),
  41. textAlign: TextAlign.center,
  42. ),
  43. onPressed: () async {
  44. setState(() {
  45. _isUnlocking = true;
  46. });
  47. _showLockScreen();
  48. },
  49. shape: RoundedRectangleBorder(
  50. borderRadius: BorderRadius.circular(10.0),
  51. ),
  52. )),
  53. ),
  54. );
  55. }
  56. Future<void> _showLockScreen() async {
  57. _logger.info("Showing lockscreen");
  58. try {
  59. final result = await requestAuthentication();
  60. if (result) {
  61. AppLock.of(context).didUnlock();
  62. } else {
  63. setState(() {
  64. _isUnlocking = false;
  65. });
  66. }
  67. } catch (e) {
  68. _logger.severe(e);
  69. setState(() {
  70. _isUnlocking = false;
  71. });
  72. }
  73. }
  74. }