start_backup_hook_widget.dart 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import 'package:flutter/material.dart';
  2. import 'package:photo_manager/photo_manager.dart';
  3. import 'package:photos/services/local_sync_service.dart';
  4. import 'package:photos/ui/backup_folder_selection_page.dart';
  5. import 'package:photos/ui/common/gradient_button.dart';
  6. import 'package:photos/utils/navigation_util.dart';
  7. class StartBackupHookWidget extends StatelessWidget {
  8. final Widget headerWidget;
  9. const StartBackupHookWidget({super.key, required this.headerWidget});
  10. @override
  11. Widget build(BuildContext context) {
  12. return Column(
  13. mainAxisAlignment: MainAxisAlignment.spaceBetween,
  14. children: [
  15. headerWidget,
  16. Padding(
  17. padding: const EdgeInsets.only(top: 64),
  18. child: Image.asset(
  19. "assets/onboarding_safe.png",
  20. height: 206,
  21. ),
  22. ),
  23. Text(
  24. 'No photos are being backed up right now',
  25. style: Theme.of(context)
  26. .textTheme
  27. .caption!
  28. .copyWith(fontFamily: 'Inter-Medium', fontSize: 16),
  29. ),
  30. Center(
  31. child: Material(
  32. type: MaterialType.transparency,
  33. child: Container(
  34. width: double.infinity,
  35. height: 64,
  36. padding: const EdgeInsets.fromLTRB(20, 0, 20, 0),
  37. child: GradientButton(
  38. onTap: () async {
  39. if (LocalSyncService.instance
  40. .hasGrantedLimitedPermissions()) {
  41. PhotoManager.presentLimited();
  42. } else {
  43. routeToPage(
  44. context,
  45. const BackupFolderSelectionPage(
  46. buttonText: "Start backup",
  47. ),
  48. );
  49. }
  50. },
  51. text: "Start backup",
  52. ),
  53. ),
  54. ),
  55. ),
  56. const Padding(padding: EdgeInsets.all(50)),
  57. ],
  58. );
  59. }
  60. }