info: null metadata handling
This commit is contained in:
parent
a3ac7d8f22
commit
e40136d646
5 changed files with 9 additions and 8 deletions
|
@ -1,5 +1,5 @@
|
||||||
import 'package:aves/model/image_decode_service.dart';
|
|
||||||
import 'package:aves/model/image_entry.dart';
|
import 'package:aves/model/image_entry.dart';
|
||||||
|
import 'package:aves/model/image_file_service.dart';
|
||||||
import 'package:aves/model/image_metadata.dart';
|
import 'package:aves/model/image_metadata.dart';
|
||||||
import 'package:aves/model/metadata_db.dart';
|
import 'package:aves/model/metadata_db.dart';
|
||||||
import 'package:aves/widgets/album/all_collection_page.dart';
|
import 'package:aves/widgets/album/all_collection_page.dart';
|
||||||
|
@ -59,7 +59,7 @@ class _HomePageState extends State<HomePage> {
|
||||||
},
|
},
|
||||||
onError: (error) => debugPrint('mediastore stream error=$error'),
|
onError: (error) => debugPrint('mediastore stream error=$error'),
|
||||||
);
|
);
|
||||||
await ImageDecodeService.getImageEntries();
|
await ImageFileService.getImageEntries();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import 'dart:collection';
|
import 'dart:collection';
|
||||||
|
|
||||||
import 'package:aves/model/image_decode_service.dart';
|
import 'package:aves/model/image_file_service.dart';
|
||||||
import 'package:aves/model/image_metadata.dart';
|
import 'package:aves/model/image_metadata.dart';
|
||||||
import 'package:aves/model/metadata_service.dart';
|
import 'package:aves/model/metadata_service.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
@ -191,7 +191,7 @@ class ImageEntry with ChangeNotifier {
|
||||||
Future<bool> rename(String newName) async {
|
Future<bool> rename(String newName) async {
|
||||||
if (newName == filename) return true;
|
if (newName == filename) return true;
|
||||||
|
|
||||||
final newFields = await ImageDecodeService.rename(this, '$newName${extension(this.path)}');
|
final newFields = await ImageFileService.rename(this, '$newName${extension(this.path)}');
|
||||||
if (newFields.isEmpty) return false;
|
if (newFields.isEmpty) return false;
|
||||||
|
|
||||||
final uri = newFields['uri'];
|
final uri = newFields['uri'];
|
||||||
|
|
|
@ -4,7 +4,7 @@ import 'package:aves/model/image_entry.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
class ImageDecodeService {
|
class ImageFileService {
|
||||||
static const platform = const MethodChannel('deckers.thibault/aves/image');
|
static const platform = const MethodChannel('deckers.thibault/aves/image');
|
||||||
|
|
||||||
static getImageEntries() async {
|
static getImageEntries() async {
|
|
@ -1,8 +1,8 @@
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:aves/model/image_decode_service.dart';
|
|
||||||
import 'package:aves/model/image_entry.dart';
|
import 'package:aves/model/image_entry.dart';
|
||||||
|
import 'package:aves/model/image_file_service.dart';
|
||||||
import 'package:aves/widgets/album/thumbnail_tags.dart';
|
import 'package:aves/widgets/album/thumbnail_tags.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:transparent_image/transparent_image.dart';
|
import 'package:transparent_image/transparent_image.dart';
|
||||||
|
@ -45,12 +45,12 @@ class ThumbnailState extends State<Thumbnail> {
|
||||||
|
|
||||||
initByteLoader() {
|
initByteLoader() {
|
||||||
final dim = (widget.extent * widget.devicePixelRatio).round();
|
final dim = (widget.extent * widget.devicePixelRatio).round();
|
||||||
_byteLoader = ImageDecodeService.getImageBytes(widget.entry, dim, dim);
|
_byteLoader = ImageFileService.getImageBytes(widget.entry, dim, dim);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
ImageDecodeService.cancelGetImageBytes(uri);
|
ImageFileService.cancelGetImageBytes(uri);
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,7 @@ class MetadataSectionState extends State<MetadataSection> {
|
||||||
),
|
),
|
||||||
...tagKeys.map((tagKey) {
|
...tagKeys.map((tagKey) {
|
||||||
final value = directory[tagKey] as String;
|
final value = directory[tagKey] as String;
|
||||||
|
if (value == null || value.isEmpty) return SizedBox.shrink();
|
||||||
return InfoRow(tagKey, value.length > maxValueLength ? '${value.substring(0, maxValueLength)}…' : value);
|
return InfoRow(tagKey, value.length > maxValueLength ? '${value.substring(0, maxValueLength)}…' : value);
|
||||||
}),
|
}),
|
||||||
SizedBox(height: 16),
|
SizedBox(height: 16),
|
||||||
|
|
Loading…
Reference in a new issue