mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-03-22 06:59:21 +01:00
Update flutter_lints
This commit is contained in:
parent
f55f68b593
commit
1cab879cd6
20 changed files with 110 additions and 95 deletions
|
@ -1 +1,8 @@
|
||||||
include: package:flutter_lints/flutter.yaml
|
include: package:flutter_lints/flutter.yaml
|
||||||
|
|
||||||
|
linter:
|
||||||
|
rules:
|
||||||
|
depend_on_referenced_packages: false
|
||||||
|
prefer_interpolation_to_compose_strings: false
|
||||||
|
no_leading_underscores_for_local_identifiers: false
|
||||||
|
use_build_context_synchronously: false
|
||||||
|
|
|
@ -31,10 +31,10 @@ class Response {
|
||||||
class Api {
|
class Api {
|
||||||
Api(this._account);
|
Api(this._account);
|
||||||
|
|
||||||
_Files files() => _Files(this);
|
ApiFiles files() => ApiFiles(this);
|
||||||
_Ocs ocs() => _Ocs(this);
|
ApiOcs ocs() => ApiOcs(this);
|
||||||
_Systemtags systemtags() => _Systemtags(this);
|
ApiSystemtags systemtags() => ApiSystemtags(this);
|
||||||
_SystemtagsRelations systemtagsRelations() => _SystemtagsRelations(this);
|
ApiSystemtagsRelations systemtagsRelations() => ApiSystemtagsRelations(this);
|
||||||
|
|
||||||
static String getAuthorizationHeaderValue(Account account) {
|
static String getAuthorizationHeaderValue(Account account) {
|
||||||
final auth =
|
final auth =
|
||||||
|
@ -108,8 +108,8 @@ class Api {
|
||||||
|
|
||||||
bool _isHttpStatusGood(int status) => status ~/ 100 == 2;
|
bool _isHttpStatusGood(int status) => status ~/ 100 == 2;
|
||||||
|
|
||||||
class _Files {
|
class ApiFiles {
|
||||||
_Files(this._api);
|
ApiFiles(this._api);
|
||||||
|
|
||||||
final Api _api;
|
final Api _api;
|
||||||
|
|
||||||
|
@ -447,26 +447,26 @@ class _Files {
|
||||||
static final _log = Logger("api.api._Files");
|
static final _log = Logger("api.api._Files");
|
||||||
}
|
}
|
||||||
|
|
||||||
class _Ocs {
|
class ApiOcs {
|
||||||
_Ocs(this._api);
|
ApiOcs(this._api);
|
||||||
|
|
||||||
_OcsDav dav() => _OcsDav(this);
|
ApiOcsDav dav() => ApiOcsDav(this);
|
||||||
_OcsFacerecognition facerecognition() => _OcsFacerecognition(this);
|
ApiOcsFacerecognition facerecognition() => ApiOcsFacerecognition(this);
|
||||||
_OcsFilesSharing filesSharing() => _OcsFilesSharing(this);
|
ApiOcsFilesSharing filesSharing() => ApiOcsFilesSharing(this);
|
||||||
|
|
||||||
final Api _api;
|
final Api _api;
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsDav {
|
class ApiOcsDav {
|
||||||
_OcsDav(this._ocs);
|
ApiOcsDav(this._ocs);
|
||||||
|
|
||||||
_OcsDavDirect direct() => _OcsDavDirect(this);
|
ApiOcsDavDirect direct() => ApiOcsDavDirect(this);
|
||||||
|
|
||||||
final _Ocs _ocs;
|
final ApiOcs _ocs;
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsDavDirect {
|
class ApiOcsDavDirect {
|
||||||
_OcsDavDirect(this._dav);
|
ApiOcsDavDirect(this._dav);
|
||||||
|
|
||||||
Future<Response> post({
|
Future<Response> post({
|
||||||
required int fileId,
|
required int fileId,
|
||||||
|
@ -490,23 +490,23 @@ class _OcsDavDirect {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final _OcsDav _dav;
|
final ApiOcsDav _dav;
|
||||||
|
|
||||||
static final _log = Logger("api.api._OcsDavDirect");
|
static final _log = Logger("api.api._OcsDavDirect");
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsFacerecognition {
|
class ApiOcsFacerecognition {
|
||||||
_OcsFacerecognition(this._ocs);
|
ApiOcsFacerecognition(this._ocs);
|
||||||
|
|
||||||
_OcsFacerecognitionPersons persons() => _OcsFacerecognitionPersons(this);
|
ApiOcsFacerecognitionPersons persons() => ApiOcsFacerecognitionPersons(this);
|
||||||
_OcsFacerecognitionPerson person(String name) =>
|
ApiOcsFacerecognitionPerson person(String name) =>
|
||||||
_OcsFacerecognitionPerson(this, name);
|
ApiOcsFacerecognitionPerson(this, name);
|
||||||
|
|
||||||
final _Ocs _ocs;
|
final ApiOcs _ocs;
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsFacerecognitionPersons {
|
class ApiOcsFacerecognitionPersons {
|
||||||
_OcsFacerecognitionPersons(this._facerecognition);
|
ApiOcsFacerecognitionPersons(this._facerecognition);
|
||||||
|
|
||||||
Future<Response> get() async {
|
Future<Response> get() async {
|
||||||
try {
|
try {
|
||||||
|
@ -526,23 +526,23 @@ class _OcsFacerecognitionPersons {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final _OcsFacerecognition _facerecognition;
|
final ApiOcsFacerecognition _facerecognition;
|
||||||
|
|
||||||
static final _log = Logger("api.api._OcsFacerecognitionPersons");
|
static final _log = Logger("api.api._OcsFacerecognitionPersons");
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsFacerecognitionPerson {
|
class ApiOcsFacerecognitionPerson {
|
||||||
_OcsFacerecognitionPerson(this._facerecognition, this._name);
|
ApiOcsFacerecognitionPerson(this._facerecognition, this._name);
|
||||||
|
|
||||||
_OcsFacerecognitionPersonFaces faces() =>
|
ApiOcsFacerecognitionPersonFaces faces() =>
|
||||||
_OcsFacerecognitionPersonFaces(this);
|
ApiOcsFacerecognitionPersonFaces(this);
|
||||||
|
|
||||||
final _OcsFacerecognition _facerecognition;
|
final ApiOcsFacerecognition _facerecognition;
|
||||||
final String _name;
|
final String _name;
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsFacerecognitionPersonFaces {
|
class ApiOcsFacerecognitionPersonFaces {
|
||||||
_OcsFacerecognitionPersonFaces(this._person);
|
ApiOcsFacerecognitionPersonFaces(this._person);
|
||||||
|
|
||||||
Future<Response> get() async {
|
Future<Response> get() async {
|
||||||
try {
|
try {
|
||||||
|
@ -562,24 +562,24 @@ class _OcsFacerecognitionPersonFaces {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final _OcsFacerecognitionPerson _person;
|
final ApiOcsFacerecognitionPerson _person;
|
||||||
|
|
||||||
static final _log = Logger("api.api._OcsFacerecognitionPersonFaces");
|
static final _log = Logger("api.api._OcsFacerecognitionPersonFaces");
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsFilesSharing {
|
class ApiOcsFilesSharing {
|
||||||
_OcsFilesSharing(this._ocs);
|
ApiOcsFilesSharing(this._ocs);
|
||||||
|
|
||||||
_OcsFilesSharingShares shares() => _OcsFilesSharingShares(this);
|
ApiOcsFilesSharingShares shares() => ApiOcsFilesSharingShares(this);
|
||||||
_OcsFilesSharingShare share(String shareId) =>
|
ApiOcsFilesSharingShare share(String shareId) =>
|
||||||
_OcsFilesSharingShare(this, shareId);
|
ApiOcsFilesSharingShare(this, shareId);
|
||||||
_OcsFilesSharingSharees sharees() => _OcsFilesSharingSharees(this);
|
ApiOcsFilesSharingSharees sharees() => ApiOcsFilesSharingSharees(this);
|
||||||
|
|
||||||
final _Ocs _ocs;
|
final ApiOcs _ocs;
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsFilesSharingShares {
|
class ApiOcsFilesSharingShares {
|
||||||
_OcsFilesSharingShares(this._filesSharing);
|
ApiOcsFilesSharingShares(this._filesSharing);
|
||||||
|
|
||||||
/// Get Shares from a specific file or folder
|
/// Get Shares from a specific file or folder
|
||||||
///
|
///
|
||||||
|
@ -652,19 +652,19 @@ class _OcsFilesSharingShares {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final _OcsFilesSharing _filesSharing;
|
final ApiOcsFilesSharing _filesSharing;
|
||||||
|
|
||||||
static final _log = Logger("api.api._OcsFilesSharingShares");
|
static final _log = Logger("api.api._OcsFilesSharingShares");
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsFilesSharingShare {
|
class ApiOcsFilesSharingShare {
|
||||||
_OcsFilesSharingShare(this._filesSharing, this._shareId);
|
ApiOcsFilesSharingShare(this._filesSharing, this._shareId);
|
||||||
|
|
||||||
/// Remove the given share
|
/// Remove the given share
|
||||||
///
|
///
|
||||||
/// See: https://docs.nextcloud.com/server/latest/developer_manual/client_apis/OCS/ocs-share-api.html#delete-share
|
/// See: https://docs.nextcloud.com/server/latest/developer_manual/client_apis/OCS/ocs-share-api.html#delete-share
|
||||||
/// * The type of share ID is listed as int in the document, however, the
|
/// * The type of share ID is listed as int in the document, however, the
|
||||||
/// share ID returned in [_OcsFilesSharingShares.get] is actually a string. To
|
/// share ID returned in [ApiOcsFilesSharingShares.get] is actually a string. To
|
||||||
/// keep it consistent, we'll use string instead
|
/// keep it consistent, we'll use string instead
|
||||||
Future<Response> delete() async {
|
Future<Response> delete() async {
|
||||||
try {
|
try {
|
||||||
|
@ -681,14 +681,14 @@ class _OcsFilesSharingShare {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final _OcsFilesSharing _filesSharing;
|
final ApiOcsFilesSharing _filesSharing;
|
||||||
final String _shareId;
|
final String _shareId;
|
||||||
|
|
||||||
static final _log = Logger("api.api._OcsFilesSharingShare");
|
static final _log = Logger("api.api._OcsFilesSharingShare");
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OcsFilesSharingSharees {
|
class ApiOcsFilesSharingSharees {
|
||||||
_OcsFilesSharingSharees(this._filesSharing);
|
ApiOcsFilesSharingSharees(this._filesSharing);
|
||||||
|
|
||||||
/// Get all sharees matching a search term
|
/// Get all sharees matching a search term
|
||||||
///
|
///
|
||||||
|
@ -720,13 +720,13 @@ class _OcsFilesSharingSharees {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final _OcsFilesSharing _filesSharing;
|
final ApiOcsFilesSharing _filesSharing;
|
||||||
|
|
||||||
static final _log = Logger("api.api._OcsFilesSharingSharees");
|
static final _log = Logger("api.api._OcsFilesSharingSharees");
|
||||||
}
|
}
|
||||||
|
|
||||||
class _Systemtags {
|
class ApiSystemtags {
|
||||||
const _Systemtags(this.api);
|
const ApiSystemtags(this.api);
|
||||||
|
|
||||||
Future<Response> propfind({
|
Future<Response> propfind({
|
||||||
id,
|
id,
|
||||||
|
@ -791,17 +791,17 @@ class _Systemtags {
|
||||||
static final _log = Logger("api.api._Systemtags");
|
static final _log = Logger("api.api._Systemtags");
|
||||||
}
|
}
|
||||||
|
|
||||||
class _SystemtagsRelations {
|
class ApiSystemtagsRelations {
|
||||||
const _SystemtagsRelations(this.api);
|
const ApiSystemtagsRelations(this.api);
|
||||||
|
|
||||||
_SystemtagsRelationsFiles files(int fileId) =>
|
ApiSystemtagsRelationsFiles files(int fileId) =>
|
||||||
_SystemtagsRelationsFiles(this, fileId);
|
ApiSystemtagsRelationsFiles(this, fileId);
|
||||||
|
|
||||||
final Api api;
|
final Api api;
|
||||||
}
|
}
|
||||||
|
|
||||||
class _SystemtagsRelationsFiles {
|
class ApiSystemtagsRelationsFiles {
|
||||||
const _SystemtagsRelationsFiles(this.systemtagsRelations, this.fileId);
|
const ApiSystemtagsRelationsFiles(this.systemtagsRelations, this.fileId);
|
||||||
|
|
||||||
/// List systemtags associated with a file
|
/// List systemtags associated with a file
|
||||||
///
|
///
|
||||||
|
@ -864,7 +864,7 @@ class _SystemtagsRelationsFiles {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final _SystemtagsRelations systemtagsRelations;
|
final ApiSystemtagsRelations systemtagsRelations;
|
||||||
final int fileId;
|
final int fileId;
|
||||||
|
|
||||||
static final _log = Logger("api.api._SystemtagsRelationsFiles");
|
static final _log = Logger("api.api._SystemtagsRelationsFiles");
|
||||||
|
|
|
@ -25,7 +25,7 @@ class NativeEventListener<T> {
|
||||||
_subscription = null;
|
_subscription = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
static late final _mappedStream =
|
static final _mappedStream =
|
||||||
NativeEvent.stream.whereType<NativeEventObject>().map((ev) {
|
NativeEvent.stream.whereType<NativeEventObject>().map((ev) {
|
||||||
switch (ev.event) {
|
switch (ev.event) {
|
||||||
case FileExifUpdatedEvent._id:
|
case FileExifUpdatedEvent._id:
|
||||||
|
|
|
@ -12,7 +12,7 @@ class DownloadEvent {
|
||||||
static const _downloadCancelChannel = EventChannel(
|
static const _downloadCancelChannel = EventChannel(
|
||||||
"com.nkming.nc_photos/download_event/action_download_cancel");
|
"com.nkming.nc_photos/download_event/action_download_cancel");
|
||||||
|
|
||||||
static late final _cancelStream = _downloadCancelChannel
|
static final _cancelStream = _downloadCancelChannel
|
||||||
.receiveBroadcastStream()
|
.receiveBroadcastStream()
|
||||||
.map((data) => DownloadCancelEvent(
|
.map((data) => DownloadCancelEvent(
|
||||||
data["notificationId"],
|
data["notificationId"],
|
||||||
|
|
|
@ -210,7 +210,7 @@ class _L10n {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static late final _inst = _L10n._();
|
static final _inst = _L10n._();
|
||||||
late AppLocalizations _l10n;
|
late AppLocalizations _l10n;
|
||||||
|
|
||||||
static final _log = Logger("service._L10n");
|
static final _log = Logger("service._L10n");
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
// ignore: avoid_web_libraries_in_flutter
|
// ignore: avoid_web_libraries_in_flutter
|
||||||
import 'dart:html';
|
import 'dart:html';
|
||||||
|
|
||||||
import 'package:/nc_photos/mobile/ui_hack.dart' if (dart.library.html) 'dart:ui'
|
|
||||||
as ui;
|
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:nc_photos/mobile/ui_hack.dart' if (dart.library.html) 'dart:ui'
|
||||||
|
as ui;
|
||||||
import 'package:tuple/tuple.dart';
|
import 'package:tuple/tuple.dart';
|
||||||
|
|
||||||
class GoogleGpsMap extends StatefulWidget {
|
class GoogleGpsMap extends StatefulWidget {
|
||||||
|
|
|
@ -231,11 +231,11 @@ mixin AlbumBrowserMixin<T extends StatefulWidget>
|
||||||
)();
|
)();
|
||||||
} catch (e, stackTrace) {
|
} catch (e, stackTrace) {
|
||||||
_log.shout(
|
_log.shout(
|
||||||
"[_onAddToCollectionPressed] Failed while ImportPendingSharedAlbum: ${logFilename(album.albumFile?.path)}",
|
"[_onAddToCollectionPressed] Failed while _onAddToCollectionPressed: ${logFilename(album.albumFile?.path)}",
|
||||||
e,
|
e,
|
||||||
stackTrace);
|
stackTrace);
|
||||||
}
|
}
|
||||||
if (newAlbum != null) {
|
if (newAlbum != null && mounted) {
|
||||||
album_browser_util.pushReplacement(context, account, newAlbum!);
|
album_browser_util.pushReplacement(context, account, newAlbum!);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,7 +178,7 @@ class _AlbumImporterState extends State<AlbumImporter> {
|
||||||
icon: AnimatedSwitcher(
|
icon: AnimatedSwitcher(
|
||||||
duration: k.animationDurationShort,
|
duration: k.animationDurationShort,
|
||||||
transitionBuilder: (child, animation) =>
|
transitionBuilder: (child, animation) =>
|
||||||
ScaleTransition(child: child, scale: animation),
|
ScaleTransition(scale: animation, child: child),
|
||||||
child: Icon(
|
child: Icon(
|
||||||
isPicked ? Icons.check_box : Icons.check_box_outline_blank,
|
isPicked ? Icons.check_box : Icons.check_box_outline_blank,
|
||||||
key: ValueKey(isPicked),
|
key: ValueKey(isPicked),
|
||||||
|
@ -218,7 +218,9 @@ class _AlbumImporterState extends State<AlbumImporter> {
|
||||||
// make sure we dismiss the dialog in any cases
|
// make sure we dismiss the dialog in any cases
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
}
|
}
|
||||||
Navigator.of(context).pop();
|
if (mounted) {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _createAllAlbums(BuildContext context) async {
|
Future<void> _createAllAlbums(BuildContext context) async {
|
||||||
|
|
|
@ -95,11 +95,11 @@ class DirPickerState extends State<DirPicker> {
|
||||||
duration: k.animationDurationNormal,
|
duration: k.animationDurationNormal,
|
||||||
// see AnimatedSwitcher.defaultLayoutBuilder
|
// see AnimatedSwitcher.defaultLayoutBuilder
|
||||||
layoutBuilder: (currentChild, previousChildren) => Stack(
|
layoutBuilder: (currentChild, previousChildren) => Stack(
|
||||||
|
alignment: Alignment.topLeft,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
...previousChildren,
|
...previousChildren,
|
||||||
if (currentChild != null) currentChild,
|
if (currentChild != null) currentChild,
|
||||||
],
|
],
|
||||||
alignment: Alignment.topLeft,
|
|
||||||
),
|
),
|
||||||
// needed to prevent background color overflowing the parent bound, see:
|
// needed to prevent background color overflowing the parent bound, see:
|
||||||
// https://github.com/flutter/flutter/issues/86584
|
// https://github.com/flutter/flutter/issues/86584
|
||||||
|
@ -171,7 +171,7 @@ class DirPickerState extends State<DirPicker> {
|
||||||
icon: AnimatedSwitcher(
|
icon: AnimatedSwitcher(
|
||||||
duration: k.animationDurationShort,
|
duration: k.animationDurationShort,
|
||||||
transitionBuilder: (child, animation) =>
|
transitionBuilder: (child, animation) =>
|
||||||
ScaleTransition(child: child, scale: animation),
|
ScaleTransition(scale: animation, child: child),
|
||||||
child: Icon(
|
child: Icon(
|
||||||
iconData,
|
iconData,
|
||||||
key: ValueKey(pickState),
|
key: ValueKey(pickState),
|
||||||
|
|
|
@ -57,11 +57,11 @@ class Draggable<T extends Object> extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: child,
|
|
||||||
childWhenDragging: Opacity(
|
childWhenDragging: Opacity(
|
||||||
opacity: .25,
|
opacity: .25,
|
||||||
child: child,
|
child: child,
|
||||||
),
|
),
|
||||||
|
child: child,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (onDropBefore != null || onDropAfter != null)
|
if (onDropBefore != null || onDropAfter != null)
|
||||||
|
|
|
@ -44,13 +44,13 @@ mixin DraggableItemListMixin<T extends StatefulWidget> on State<T> {
|
||||||
final item = _items[index];
|
final item = _items[index];
|
||||||
return my.Draggable(
|
return my.Draggable(
|
||||||
data: item,
|
data: item,
|
||||||
child: item.buildWidget(context),
|
|
||||||
feedback: item.buildDragFeedbackWidget(context),
|
feedback: item.buildDragFeedbackWidget(context),
|
||||||
onDropBefore: item.onDropBefore,
|
onDropBefore: item.onDropBefore,
|
||||||
onDropAfter: item.onDropAfter,
|
onDropAfter: item.onDropAfter,
|
||||||
onDragStarted: item.onDragStarted,
|
onDragStarted: item.onDragStarted,
|
||||||
onDragEndedAny: item.onDragEndedAny,
|
onDragEndedAny: item.onDragEndedAny,
|
||||||
feedbackSize: Size(_maxCrossAxisExtent * .65, _maxCrossAxisExtent * .65),
|
feedbackSize: Size(_maxCrossAxisExtent * .65, _maxCrossAxisExtent * .65),
|
||||||
|
child: item.buildWidget(context),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Flexible(
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: L10n.global().dateYearInputHint,
|
hintText: L10n.global().dateYearInputHint,
|
||||||
|
@ -51,10 +52,10 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
|
||||||
},
|
},
|
||||||
initialValue: "${widget.initialDateTime.year}",
|
initialValue: "${widget.initialDateTime.year}",
|
||||||
),
|
),
|
||||||
flex: 1,
|
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Flexible(
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: L10n.global().dateMonthInputHint,
|
hintText: L10n.global().dateMonthInputHint,
|
||||||
|
@ -72,10 +73,10 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
|
||||||
initialValue:
|
initialValue:
|
||||||
widget.initialDateTime.month.toString().padLeft(2, "0"),
|
widget.initialDateTime.month.toString().padLeft(2, "0"),
|
||||||
),
|
),
|
||||||
flex: 1,
|
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Flexible(
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: L10n.global().dateDayInputHint,
|
hintText: L10n.global().dateDayInputHint,
|
||||||
|
@ -93,7 +94,6 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
|
||||||
initialValue:
|
initialValue:
|
||||||
widget.initialDateTime.day.toString().padLeft(2, "0"),
|
widget.initialDateTime.day.toString().padLeft(2, "0"),
|
||||||
),
|
),
|
||||||
flex: 1,
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -105,6 +105,7 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Flexible(
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: L10n.global().timeHourInputHint,
|
hintText: L10n.global().timeHourInputHint,
|
||||||
|
@ -122,10 +123,10 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
|
||||||
initialValue:
|
initialValue:
|
||||||
widget.initialDateTime.hour.toString().padLeft(2, "0"),
|
widget.initialDateTime.hour.toString().padLeft(2, "0"),
|
||||||
),
|
),
|
||||||
flex: 1,
|
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Flexible(
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: L10n.global().timeMinuteInputHint,
|
hintText: L10n.global().timeMinuteInputHint,
|
||||||
|
@ -144,12 +145,11 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
|
||||||
.toString()
|
.toString()
|
||||||
.padLeft(2, "0"),
|
.padLeft(2, "0"),
|
||||||
),
|
),
|
||||||
flex: 1,
|
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
const Flexible(
|
const Flexible(
|
||||||
child: SizedBox(),
|
|
||||||
flex: 1,
|
flex: 1,
|
||||||
|
child: SizedBox(),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
@ -1504,6 +1504,6 @@ enum _Experiment {
|
||||||
sharedAlbum,
|
sharedAlbum,
|
||||||
}
|
}
|
||||||
|
|
||||||
late final _enabledExperiments = [
|
final _enabledExperiments = [
|
||||||
_Experiment.sharedAlbum,
|
_Experiment.sharedAlbum,
|
||||||
];
|
];
|
||||||
|
|
|
@ -100,6 +100,7 @@ class _ShareAlbumDialogState extends State<ShareAlbumDialog> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return SimpleDialogOption(
|
return SimpleDialogOption(
|
||||||
|
onPressed: isProcessing ? () {} : () => _onShareItemPressed(share),
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
title: Text(share.displayName),
|
title: Text(share.displayName),
|
||||||
subtitle: Text(share.shareWith.toString()),
|
subtitle: Text(share.shareWith.toString()),
|
||||||
|
@ -108,7 +109,6 @@ class _ShareAlbumDialogState extends State<ShareAlbumDialog> {
|
||||||
child: trailing,
|
child: trailing,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
onPressed: isProcessing ? () {} : () => _onShareItemPressed(share),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -226,7 +226,9 @@ class _SharedFileViewerState extends State<SharedFileViewer> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
Navigator.of(context).pop();
|
if (mounted) {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|
|
@ -73,6 +73,7 @@ class _SlideshowDialogState extends State<SlideshowDialog> {
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Flexible(
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: L10n.global().timeMinuteInputHint,
|
hintText: L10n.global().timeMinuteInputHint,
|
||||||
|
@ -98,12 +99,12 @@ class _SlideshowDialogState extends State<SlideshowDialog> {
|
||||||
initialValue:
|
initialValue:
|
||||||
widget.duration.inMinutes.toString().padLeft(2, "0"),
|
widget.duration.inMinutes.toString().padLeft(2, "0"),
|
||||||
),
|
),
|
||||||
flex: 1,
|
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
const Text(":"),
|
const Text(":"),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Flexible(
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText: L10n.global().timeSecondInputHint,
|
hintText: L10n.global().timeSecondInputHint,
|
||||||
|
@ -130,7 +131,6 @@ class _SlideshowDialogState extends State<SlideshowDialog> {
|
||||||
.toString()
|
.toString()
|
||||||
.padLeft(2, "0"),
|
.padLeft(2, "0"),
|
||||||
),
|
),
|
||||||
flex: 1,
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
@ -172,7 +172,9 @@ class _TrashbinViewerState extends State<TrashbinViewer> {
|
||||||
content: Text(L10n.global().restoreSuccessNotification),
|
content: Text(L10n.global().restoreSuccessNotification),
|
||||||
duration: k.snackBarDurationNormal,
|
duration: k.snackBarDurationNormal,
|
||||||
));
|
));
|
||||||
Navigator.of(context).pop();
|
if (mounted) {
|
||||||
|
Navigator.of(context).pop();
|
||||||
|
}
|
||||||
} catch (e, stacktrace) {
|
} catch (e, stacktrace) {
|
||||||
_log.shout("Failed while restore trashbin: ${logFilename(file.path)}", e,
|
_log.shout("Failed while restore trashbin: ${logFilename(file.path)}", e,
|
||||||
stacktrace);
|
stacktrace);
|
||||||
|
@ -314,7 +316,7 @@ class _TrashbinViewerState extends State<TrashbinViewer> {
|
||||||
shouldCleanupAlbum: false,
|
shouldCleanupAlbum: false,
|
||||||
isRemoveOpened: true,
|
isRemoveOpened: true,
|
||||||
);
|
);
|
||||||
if (count > 0) {
|
if (count > 0 && mounted) {
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -599,7 +599,7 @@ class _ViewerState extends State<Viewer>
|
||||||
isRemoveOpened: true,
|
isRemoveOpened: true,
|
||||||
isMoveToTrash: true,
|
isMoveToTrash: true,
|
||||||
);
|
);
|
||||||
if (count > 0) {
|
if (count > 0 && mounted) {
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -398,7 +398,7 @@ packages:
|
||||||
name: flutter_lints
|
name: flutter_lints
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "2.0.1"
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
|
@ -571,7 +571,7 @@ packages:
|
||||||
name: lints
|
name: lints
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.1"
|
version: "2.0.0"
|
||||||
lists:
|
lists:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -839,12 +839,12 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
quiver:
|
quiver:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: quiver
|
name: quiver
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1+1"
|
version: "3.1.0"
|
||||||
rxdart:
|
rxdart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
@ -1152,12 +1152,12 @@ packages:
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "3.0.1"
|
||||||
uuid:
|
uuid:
|
||||||
dependency: transitive
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: uuid
|
name: uuid
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.5"
|
version: "3.0.6"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -84,6 +84,7 @@ dependencies:
|
||||||
page_view_indicators: ^2.0.0
|
page_view_indicators: ^2.0.0
|
||||||
path: ^1.8.0
|
path: ^1.8.0
|
||||||
path_provider: ^2.0.6
|
path_provider: ^2.0.6
|
||||||
|
quiver: ^3.1.0
|
||||||
screen_brightness: ^0.1.1
|
screen_brightness: ^0.1.1
|
||||||
shared_preferences: ^2.0.8
|
shared_preferences: ^2.0.8
|
||||||
# android/ios only
|
# android/ios only
|
||||||
|
@ -91,6 +92,7 @@ dependencies:
|
||||||
synchronized: ^3.0.0
|
synchronized: ^3.0.0
|
||||||
tuple: ^2.0.0
|
tuple: ^2.0.0
|
||||||
url_launcher: ^6.0.3
|
url_launcher: ^6.0.3
|
||||||
|
uuid: ^3.0.6
|
||||||
video_player:
|
video_player:
|
||||||
git:
|
git:
|
||||||
url: https://gitlab.com/nc-photos/flutter-plugins
|
url: https://gitlab.com/nc-photos/flutter-plugins
|
||||||
|
@ -104,7 +106,7 @@ dependencies:
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
test: any
|
test: any
|
||||||
bloc_test: any
|
bloc_test: any
|
||||||
flutter_lints: ^1.0.4
|
flutter_lints: ^2.0.1
|
||||||
# flutter_test:
|
# flutter_test:
|
||||||
# sdk: flutter
|
# sdk: flutter
|
||||||
# integration_test:
|
# integration_test:
|
||||||
|
|
Loading…
Reference in a new issue