Refresh on exiting full screen memory view instead of refreshing each time a memory is viewerd
This commit is contained in:
parent
0dcd6c8da4
commit
242bd9ca5a
|
@ -1,6 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:photos/models/memory.dart';
|
||||
import 'package:photos/services/memories_service.dart';
|
||||
import 'package:photos/ui/blurred_file_backdrop.dart';
|
||||
|
@ -12,44 +11,11 @@ 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 {
|
||||
class MemoriesWidget extends StatelessWidget {
|
||||
const MemoriesWidget({Key key}) : super(key: key);
|
||||
@override
|
||||
_MemoriesWidgetState createState() => _MemoriesWidgetState();
|
||||
}
|
||||
|
||||
class _MemoriesWidgetState extends State<MemoriesWidget>
|
||||
with AutomaticKeepAliveClientMixin {
|
||||
final _logger = Logger("MemoriesWidget");
|
||||
|
||||
Function _listener;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
_listener = () {
|
||||
if (mounted) {
|
||||
setState(() {
|
||||
_logger.info("Building because memories listener fired");
|
||||
});
|
||||
}
|
||||
};
|
||||
MemoriesService.instance.addListener(_listener);
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
MemoriesService.instance.removeListener(_listener);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
bool get wantKeepAlive => true;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
_logger.info("Building memories");
|
||||
super.build(context);
|
||||
return FutureBuilder<List<Memory>>(
|
||||
future: MemoriesService.instance.getMemories(),
|
||||
builder: (context, snapshot) {
|
||||
|
@ -105,7 +71,7 @@ class _MemoriesWidgetState extends State<MemoriesWidget>
|
|||
}
|
||||
}
|
||||
|
||||
class MemoryWidget extends StatelessWidget {
|
||||
class MemoryWidget extends StatefulWidget {
|
||||
const MemoryWidget({
|
||||
Key key,
|
||||
@required this.memories,
|
||||
|
@ -113,13 +79,20 @@ class MemoryWidget extends StatelessWidget {
|
|||
|
||||
final List<Memory> memories;
|
||||
|
||||
@override
|
||||
State<MemoryWidget> createState() => _MemoryWidgetState();
|
||||
}
|
||||
|
||||
class _MemoryWidgetState extends State<MemoryWidget> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final index = _getNextMemoryIndex();
|
||||
final title = _getTitle(memories[index]);
|
||||
final title = _getTitle(widget.memories[index]);
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
routeToPage(context, FullScreenMemory(title, memories, index));
|
||||
onTap: () async {
|
||||
await routeToPage(
|
||||
context, FullScreenMemory(title, widget.memories, index));
|
||||
setState(() {});
|
||||
},
|
||||
child: SizedBox(
|
||||
width: 100,
|
||||
|
@ -152,7 +125,8 @@ class MemoryWidget extends StatelessWidget {
|
|||
}
|
||||
|
||||
Container _buildMemoryItem(BuildContext context, int index) {
|
||||
final isSeen = memories[index].isSeen();
|
||||
final memory = widget.memories[index];
|
||||
final isSeen = memory.isSeen();
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
border: isSeen
|
||||
|
@ -168,11 +142,11 @@ class MemoryWidget extends StatelessWidget {
|
|||
width: isSeen ? 76 : 72,
|
||||
height: isSeen ? 76 : 72,
|
||||
child: Hero(
|
||||
tag: "memories" + memories[index].file.tag(),
|
||||
tag: "memories" + memory.file.tag(),
|
||||
child: ThumbnailWidget(
|
||||
memories[index].file,
|
||||
memory.file,
|
||||
shouldShowSyncStatus: false,
|
||||
key: Key("memories" + memories[index].file.tag()),
|
||||
key: Key("memories" + memory.file.tag()),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
@ -182,8 +156,8 @@ class MemoryWidget extends StatelessWidget {
|
|||
|
||||
int _getNextMemoryIndex() {
|
||||
int lastSeenIndex = 0;
|
||||
for (var index = memories.length - 1; index >= 0; index--) {
|
||||
if (!memories[index].isSeen()) {
|
||||
for (var index = widget.memories.length - 1; index >= 0; index--) {
|
||||
if (!widget.memories[index].isSeen()) {
|
||||
lastSeenIndex = index;
|
||||
} else {
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue