start_backup_hook_widget.dart 2.0 KB

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