Push to navigator without triggering a rebuild
This commit is contained in:
parent
2a37af87b4
commit
96465a56fa
|
@ -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));
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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());
|
||||
},
|
||||
),
|
||||
);
|
||||
|
|
|
@ -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));
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
23
lib/utils/navigation_util.dart
Normal file
23
lib/utils/navigation_util.dart
Normal 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,
|
||||
),
|
||||
);
|
||||
}
|
Loading…
Reference in a new issue