Ver código fonte

Banner to add name to cluster

laurenspriem 1 ano atrás
pai
commit
af978e1e36
1 arquivos alterados com 53 adições e 27 exclusões
  1. 53 27
      mobile/lib/ui/viewer/people/cluster_page.dart

+ 53 - 27
mobile/lib/ui/viewer/people/cluster_page.dart

@@ -1,6 +1,7 @@
 import "dart:async";
 
 import 'package:flutter/material.dart';
+import "package:flutter_animate/flutter_animate.dart";
 import 'package:photos/core/event_bus.dart';
 import 'package:photos/events/files_updated_event.dart';
 import 'package:photos/events/local_photos_updated_event.dart';
@@ -9,6 +10,7 @@ import 'package:photos/models/file/file.dart';
 import 'package:photos/models/file_load_result.dart';
 import 'package:photos/models/gallery_type.dart';
 import 'package:photos/models/selected_files.dart';
+import "package:photos/ui/components/notification_widget.dart";
 import 'package:photos/ui/viewer/actions/file_selection_overlay_bar.dart';
 import 'package:photos/ui/viewer/gallery/gallery.dart';
 import 'package:photos/ui/viewer/gallery/gallery_app_bar_widget.dart';
@@ -102,36 +104,60 @@ class _ClusterPageState extends State<ClusterPage> {
     return Scaffold(
       appBar: PreferredSize(
         preferredSize: const Size.fromHeight(50.0),
-        child: GestureDetector(
-          onTap: () async {
-            if (widget.personID == null) {
-              final result = await showAssignPersonAction(
-                context,
-                clusterID: widget.cluserID,
-              );
-              if (result != null && result is Person) {
-                Navigator.pop(context);
-                // ignore: unawaited_futures
-                routeToPage(context, PeoplePage(person: result));
-              }
-            } else {
-              showShortToast(context, "11No personID or clusterID");
-            }
-          },
-          child: GalleryAppBarWidget(
-            SearchResultPage.appBarType,
-            widget.personID != null ? widget.personID!.attr.name : "Add name",
-            _selectedFiles,
-          ),
+        child: GalleryAppBarWidget(
+          SearchResultPage.appBarType,
+          widget.personID != null
+              ? widget.personID!.attr.name
+              : "${widget.searchResult.length} memories",
+          _selectedFiles,
         ),
       ),
-      body: Stack(
-        alignment: Alignment.bottomCenter,
+      body: Column(
         children: [
-          gallery,
-          FileSelectionOverlayBar(
-            ClusterPage.overlayType,
-            _selectedFiles,
+          const SizedBox(height: 12),
+          RepaintBoundary(
+            child: Padding(
+              padding: const EdgeInsets.symmetric(vertical: 8.0),
+              child: NotificationWidget(
+                startIcon: Icons.person_add_outlined,
+                actionIcon: Icons.add_outlined,
+                text: "Add a name",
+                subText: "Find persons quickly by searching by name",
+                type: NotificationType.notice,
+                onTap: () async {
+                  if (widget.personID == null) {
+                    final result = await showAssignPersonAction(
+                      context,
+                      clusterID: widget.cluserID,
+                    );
+                    if (result != null && result is Person) {
+                      Navigator.pop(context);
+                      // ignore: unawaited_futures
+                      routeToPage(context, PeoplePage(person: result));
+                    }
+                  } else {
+                    showShortToast(context, "No personID or clusterID");
+                  }
+                },
+              ),
+            ).animate(onPlay: (controller) => controller.repeat()).shimmer(
+                  duration: 1000.ms,
+                  delay: 3200.ms,
+                  size: 0.6,
+                ),
+          ),
+          const SizedBox(height: 12),
+          Expanded(
+            child: Stack(
+              alignment: Alignment.bottomCenter,
+              children: [
+                gallery,
+                FileSelectionOverlayBar(
+                  ClusterPage.overlayType,
+                  _selectedFiles,
+                ),
+              ],
+            ),
           ),
         ],
       ),