Push to navigator without triggering a rebuild

This commit is contained in:
Vishnu Mohandas 2021-05-08 23:44:18 +05:30
parent 2a37af87b4
commit 96465a56fa
6 changed files with 35 additions and 63 deletions

View file

@ -21,6 +21,7 @@ import 'package:photos/ui/common_elements.dart';
import 'package:photos/ui/device_folder_page.dart';
import 'package:photos/ui/loading_widget.dart';
import 'package:photos/ui/thumbnail_widget.dart';
import 'package:photos/utils/navigation_util.dart';
import 'package:photos/utils/toast_util.dart';
class CollectionsGalleryWidget extends StatefulWidget {
@ -281,13 +282,7 @@ class DeviceFolderIcon extends StatelessWidget {
),
),
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return DeviceFolderPage(folder);
},
),
);
routeToPage(context, DeviceFolderPage(folder));
},
);
}
@ -332,14 +327,7 @@ class CollectionItem extends StatelessWidget {
],
),
onTap: () {
final page = CollectionPage(c.collection);
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return page;
},
),
);
routeToPage(context, CollectionPage(c.collection));
},
);
}

View file

@ -13,6 +13,7 @@ import 'package:photos/ui/gallery.dart';
import 'package:photos/ui/huge_listview/place_holder_widget.dart';
import 'package:photos/ui/thumbnail_widget.dart';
import 'package:photos/utils/date_time_util.dart';
import 'package:photos/utils/navigation_util.dart';
import 'package:visibility_detector/visibility_detector.dart';
class LazyLoadingGallery extends StatefulWidget {
@ -340,24 +341,6 @@ class _LazyLoadingGridViewState extends State<LazyLoadingGridView> {
widget.files.indexOf(file),
widget.tag,
);
Navigator.of(context).push(
PageRouteBuilder(
pageBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation) {
return page;
},
transitionsBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation, Widget child) {
return Align(
child: FadeTransition(
opacity: animation,
child: child,
),
);
},
transitionDuration: Duration(milliseconds: 200),
opaque: false,
),
);
routeToPage(context, page);
}
}

View file

@ -12,6 +12,7 @@ import 'package:photos/ui/video_widget.dart';
import 'package:photos/ui/zoomable_image.dart';
import 'package:photos/utils/date_time_util.dart';
import 'package:photos/utils/file_util.dart';
import 'package:photos/utils/navigation_util.dart';
import 'package:photos/utils/share_util.dart';
class MemoriesWidget extends StatefulWidget {
@ -123,13 +124,7 @@ class MemoryWidget extends StatelessWidget {
final title = _getTitle(memories[index]);
return GestureDetector(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return FullScreenMemory(title, memories, index);
},
),
);
routeToPage(context, FullScreenMemory(title, memories, index));
},
child: Container(
width: 100,

View file

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:photos/ui/settings_page.dart';
import 'package:photos/utils/navigation_util.dart';
class SettingsButton extends StatelessWidget {
const SettingsButton({Key key}) : super(key: key);
@ -16,13 +17,7 @@ class SettingsButton extends StatelessWidget {
),
padding: EdgeInsets.fromLTRB(16, 4, 16, 18),
onPressed: () async {
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return SettingsPage();
},
),
);
routeToPage(context, SettingsPage());
},
),
);

View file

@ -17,6 +17,7 @@ import 'package:photos/ui/collections_gallery_widget.dart';
import 'package:photos/ui/loading_widget.dart';
import 'package:photos/ui/shared_collection_page.dart';
import 'package:photos/ui/thumbnail_widget.dart';
import 'package:photos/utils/navigation_util.dart';
import 'package:photos/utils/share_util.dart';
import 'package:photos/utils/toast_util.dart';
@ -348,13 +349,7 @@ class OutgoingCollectionItem extends StatelessWidget {
c.collection,
tagPrefix: "outgoing_collection",
);
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return page;
},
),
);
routeToPage(context, page);
},
);
}
@ -424,14 +419,7 @@ class IncomingCollectionItem extends StatelessWidget {
],
),
onTap: () {
final page = SharedCollectionPage(c.collection);
Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return page;
},
),
);
routeToPage(context, SharedCollectionPage(c.collection));
},
);
}

View file

@ -0,0 +1,23 @@
import 'package:flutter/material.dart';
void routeToPage(BuildContext context, Widget page) {
Navigator.of(context).push(
PageRouteBuilder(
pageBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation) {
return page;
},
transitionsBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation, Widget child) {
return Align(
child: FadeTransition(
opacity: animation,
child: child,
),
);
},
transitionDuration: Duration(milliseconds: 200),
opaque: false,
),
);
}