Update flutter_lints

This commit is contained in:
Ming Ming 2022-07-08 22:52:18 +08:00
parent f55f68b593
commit 1cab879cd6
20 changed files with 110 additions and 95 deletions

View file

@ -1 +1,8 @@
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

View file

@ -31,10 +31,10 @@ class Response {
class Api {
Api(this._account);
_Files files() => _Files(this);
_Ocs ocs() => _Ocs(this);
_Systemtags systemtags() => _Systemtags(this);
_SystemtagsRelations systemtagsRelations() => _SystemtagsRelations(this);
ApiFiles files() => ApiFiles(this);
ApiOcs ocs() => ApiOcs(this);
ApiSystemtags systemtags() => ApiSystemtags(this);
ApiSystemtagsRelations systemtagsRelations() => ApiSystemtagsRelations(this);
static String getAuthorizationHeaderValue(Account account) {
final auth =
@ -108,8 +108,8 @@ class Api {
bool _isHttpStatusGood(int status) => status ~/ 100 == 2;
class _Files {
_Files(this._api);
class ApiFiles {
ApiFiles(this._api);
final Api _api;
@ -447,26 +447,26 @@ class _Files {
static final _log = Logger("api.api._Files");
}
class _Ocs {
_Ocs(this._api);
class ApiOcs {
ApiOcs(this._api);
_OcsDav dav() => _OcsDav(this);
_OcsFacerecognition facerecognition() => _OcsFacerecognition(this);
_OcsFilesSharing filesSharing() => _OcsFilesSharing(this);
ApiOcsDav dav() => ApiOcsDav(this);
ApiOcsFacerecognition facerecognition() => ApiOcsFacerecognition(this);
ApiOcsFilesSharing filesSharing() => ApiOcsFilesSharing(this);
final Api _api;
}
class _OcsDav {
_OcsDav(this._ocs);
class ApiOcsDav {
ApiOcsDav(this._ocs);
_OcsDavDirect direct() => _OcsDavDirect(this);
ApiOcsDavDirect direct() => ApiOcsDavDirect(this);
final _Ocs _ocs;
final ApiOcs _ocs;
}
class _OcsDavDirect {
_OcsDavDirect(this._dav);
class ApiOcsDavDirect {
ApiOcsDavDirect(this._dav);
Future<Response> post({
required int fileId,
@ -490,23 +490,23 @@ class _OcsDavDirect {
}
}
final _OcsDav _dav;
final ApiOcsDav _dav;
static final _log = Logger("api.api._OcsDavDirect");
}
class _OcsFacerecognition {
_OcsFacerecognition(this._ocs);
class ApiOcsFacerecognition {
ApiOcsFacerecognition(this._ocs);
_OcsFacerecognitionPersons persons() => _OcsFacerecognitionPersons(this);
_OcsFacerecognitionPerson person(String name) =>
_OcsFacerecognitionPerson(this, name);
ApiOcsFacerecognitionPersons persons() => ApiOcsFacerecognitionPersons(this);
ApiOcsFacerecognitionPerson person(String name) =>
ApiOcsFacerecognitionPerson(this, name);
final _Ocs _ocs;
final ApiOcs _ocs;
}
class _OcsFacerecognitionPersons {
_OcsFacerecognitionPersons(this._facerecognition);
class ApiOcsFacerecognitionPersons {
ApiOcsFacerecognitionPersons(this._facerecognition);
Future<Response> get() async {
try {
@ -526,23 +526,23 @@ class _OcsFacerecognitionPersons {
}
}
final _OcsFacerecognition _facerecognition;
final ApiOcsFacerecognition _facerecognition;
static final _log = Logger("api.api._OcsFacerecognitionPersons");
}
class _OcsFacerecognitionPerson {
_OcsFacerecognitionPerson(this._facerecognition, this._name);
class ApiOcsFacerecognitionPerson {
ApiOcsFacerecognitionPerson(this._facerecognition, this._name);
_OcsFacerecognitionPersonFaces faces() =>
_OcsFacerecognitionPersonFaces(this);
ApiOcsFacerecognitionPersonFaces faces() =>
ApiOcsFacerecognitionPersonFaces(this);
final _OcsFacerecognition _facerecognition;
final ApiOcsFacerecognition _facerecognition;
final String _name;
}
class _OcsFacerecognitionPersonFaces {
_OcsFacerecognitionPersonFaces(this._person);
class ApiOcsFacerecognitionPersonFaces {
ApiOcsFacerecognitionPersonFaces(this._person);
Future<Response> get() async {
try {
@ -562,24 +562,24 @@ class _OcsFacerecognitionPersonFaces {
}
}
final _OcsFacerecognitionPerson _person;
final ApiOcsFacerecognitionPerson _person;
static final _log = Logger("api.api._OcsFacerecognitionPersonFaces");
}
class _OcsFilesSharing {
_OcsFilesSharing(this._ocs);
class ApiOcsFilesSharing {
ApiOcsFilesSharing(this._ocs);
_OcsFilesSharingShares shares() => _OcsFilesSharingShares(this);
_OcsFilesSharingShare share(String shareId) =>
_OcsFilesSharingShare(this, shareId);
_OcsFilesSharingSharees sharees() => _OcsFilesSharingSharees(this);
ApiOcsFilesSharingShares shares() => ApiOcsFilesSharingShares(this);
ApiOcsFilesSharingShare share(String shareId) =>
ApiOcsFilesSharingShare(this, shareId);
ApiOcsFilesSharingSharees sharees() => ApiOcsFilesSharingSharees(this);
final _Ocs _ocs;
final ApiOcs _ocs;
}
class _OcsFilesSharingShares {
_OcsFilesSharingShares(this._filesSharing);
class ApiOcsFilesSharingShares {
ApiOcsFilesSharingShares(this._filesSharing);
/// 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");
}
class _OcsFilesSharingShare {
_OcsFilesSharingShare(this._filesSharing, this._shareId);
class ApiOcsFilesSharingShare {
ApiOcsFilesSharingShare(this._filesSharing, this._shareId);
/// Remove the given 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
/// 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
Future<Response> delete() async {
try {
@ -681,14 +681,14 @@ class _OcsFilesSharingShare {
}
}
final _OcsFilesSharing _filesSharing;
final ApiOcsFilesSharing _filesSharing;
final String _shareId;
static final _log = Logger("api.api._OcsFilesSharingShare");
}
class _OcsFilesSharingSharees {
_OcsFilesSharingSharees(this._filesSharing);
class ApiOcsFilesSharingSharees {
ApiOcsFilesSharingSharees(this._filesSharing);
/// 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");
}
class _Systemtags {
const _Systemtags(this.api);
class ApiSystemtags {
const ApiSystemtags(this.api);
Future<Response> propfind({
id,
@ -791,17 +791,17 @@ class _Systemtags {
static final _log = Logger("api.api._Systemtags");
}
class _SystemtagsRelations {
const _SystemtagsRelations(this.api);
class ApiSystemtagsRelations {
const ApiSystemtagsRelations(this.api);
_SystemtagsRelationsFiles files(int fileId) =>
_SystemtagsRelationsFiles(this, fileId);
ApiSystemtagsRelationsFiles files(int fileId) =>
ApiSystemtagsRelationsFiles(this, fileId);
final Api api;
}
class _SystemtagsRelationsFiles {
const _SystemtagsRelationsFiles(this.systemtagsRelations, this.fileId);
class ApiSystemtagsRelationsFiles {
const ApiSystemtagsRelationsFiles(this.systemtagsRelations, this.fileId);
/// List systemtags associated with a file
///
@ -864,7 +864,7 @@ class _SystemtagsRelationsFiles {
}
}
final _SystemtagsRelations systemtagsRelations;
final ApiSystemtagsRelations systemtagsRelations;
final int fileId;
static final _log = Logger("api.api._SystemtagsRelationsFiles");

View file

@ -25,7 +25,7 @@ class NativeEventListener<T> {
_subscription = null;
}
static late final _mappedStream =
static final _mappedStream =
NativeEvent.stream.whereType<NativeEventObject>().map((ev) {
switch (ev.event) {
case FileExifUpdatedEvent._id:

View file

@ -12,7 +12,7 @@ class DownloadEvent {
static const _downloadCancelChannel = EventChannel(
"com.nkming.nc_photos/download_event/action_download_cancel");
static late final _cancelStream = _downloadCancelChannel
static final _cancelStream = _downloadCancelChannel
.receiveBroadcastStream()
.map((data) => DownloadCancelEvent(
data["notificationId"],

View file

@ -210,7 +210,7 @@ class _L10n {
}
}
static late final _inst = _L10n._();
static final _inst = _L10n._();
late AppLocalizations _l10n;
static final _log = Logger("service._L10n");

View file

@ -1,9 +1,9 @@
// ignore: avoid_web_libraries_in_flutter
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:nc_photos/mobile/ui_hack.dart' if (dart.library.html) 'dart:ui'
as ui;
import 'package:tuple/tuple.dart';
class GoogleGpsMap extends StatefulWidget {

View file

@ -231,11 +231,11 @@ mixin AlbumBrowserMixin<T extends StatefulWidget>
)();
} catch (e, stackTrace) {
_log.shout(
"[_onAddToCollectionPressed] Failed while ImportPendingSharedAlbum: ${logFilename(album.albumFile?.path)}",
"[_onAddToCollectionPressed] Failed while _onAddToCollectionPressed: ${logFilename(album.albumFile?.path)}",
e,
stackTrace);
}
if (newAlbum != null) {
if (newAlbum != null && mounted) {
album_browser_util.pushReplacement(context, account, newAlbum!);
}
}

View file

@ -178,7 +178,7 @@ class _AlbumImporterState extends State<AlbumImporter> {
icon: AnimatedSwitcher(
duration: k.animationDurationShort,
transitionBuilder: (child, animation) =>
ScaleTransition(child: child, scale: animation),
ScaleTransition(scale: animation, child: child),
child: Icon(
isPicked ? Icons.check_box : Icons.check_box_outline_blank,
key: ValueKey(isPicked),
@ -218,7 +218,9 @@ class _AlbumImporterState extends State<AlbumImporter> {
// make sure we dismiss the dialog in any cases
Navigator.of(context).pop();
}
Navigator.of(context).pop();
if (mounted) {
Navigator.of(context).pop();
}
}
Future<void> _createAllAlbums(BuildContext context) async {

View file

@ -95,11 +95,11 @@ class DirPickerState extends State<DirPicker> {
duration: k.animationDurationNormal,
// see AnimatedSwitcher.defaultLayoutBuilder
layoutBuilder: (currentChild, previousChildren) => Stack(
alignment: Alignment.topLeft,
children: <Widget>[
...previousChildren,
if (currentChild != null) currentChild,
],
alignment: Alignment.topLeft,
),
// needed to prevent background color overflowing the parent bound, see:
// https://github.com/flutter/flutter/issues/86584
@ -171,7 +171,7 @@ class DirPickerState extends State<DirPicker> {
icon: AnimatedSwitcher(
duration: k.animationDurationShort,
transitionBuilder: (child, animation) =>
ScaleTransition(child: child, scale: animation),
ScaleTransition(scale: animation, child: child),
child: Icon(
iconData,
key: ValueKey(pickState),

View file

@ -57,11 +57,11 @@ class Draggable<T extends Object> extends StatelessWidget {
),
),
),
child: child,
childWhenDragging: Opacity(
opacity: .25,
child: child,
),
child: child,
),
),
if (onDropBefore != null || onDropAfter != null)

View file

@ -44,13 +44,13 @@ mixin DraggableItemListMixin<T extends StatefulWidget> on State<T> {
final item = _items[index];
return my.Draggable(
data: item,
child: item.buildWidget(context),
feedback: item.buildDragFeedbackWidget(context),
onDropBefore: item.onDropBefore,
onDropAfter: item.onDropAfter,
onDragStarted: item.onDragStarted,
onDragEndedAny: item.onDragEndedAny,
feedbackSize: Size(_maxCrossAxisExtent * .65, _maxCrossAxisExtent * .65),
child: item.buildWidget(context),
);
}

View file

@ -33,6 +33,7 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
Row(
children: [
Flexible(
flex: 1,
child: TextFormField(
decoration: InputDecoration(
hintText: L10n.global().dateYearInputHint,
@ -51,10 +52,10 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
},
initialValue: "${widget.initialDateTime.year}",
),
flex: 1,
),
const SizedBox(width: 4),
Flexible(
flex: 1,
child: TextFormField(
decoration: InputDecoration(
hintText: L10n.global().dateMonthInputHint,
@ -72,10 +73,10 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
initialValue:
widget.initialDateTime.month.toString().padLeft(2, "0"),
),
flex: 1,
),
const SizedBox(width: 4),
Flexible(
flex: 1,
child: TextFormField(
decoration: InputDecoration(
hintText: L10n.global().dateDayInputHint,
@ -93,7 +94,6 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
initialValue:
widget.initialDateTime.day.toString().padLeft(2, "0"),
),
flex: 1,
),
],
),
@ -105,6 +105,7 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
Row(
children: [
Flexible(
flex: 1,
child: TextFormField(
decoration: InputDecoration(
hintText: L10n.global().timeHourInputHint,
@ -122,10 +123,10 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
initialValue:
widget.initialDateTime.hour.toString().padLeft(2, "0"),
),
flex: 1,
),
const SizedBox(width: 4),
Flexible(
flex: 1,
child: TextFormField(
decoration: InputDecoration(
hintText: L10n.global().timeMinuteInputHint,
@ -144,12 +145,11 @@ class _PhotoDateTimeEditDialogState extends State<PhotoDateTimeEditDialog> {
.toString()
.padLeft(2, "0"),
),
flex: 1,
),
const SizedBox(width: 4),
const Flexible(
child: SizedBox(),
flex: 1,
child: SizedBox(),
),
],
),

View file

@ -1504,6 +1504,6 @@ enum _Experiment {
sharedAlbum,
}
late final _enabledExperiments = [
final _enabledExperiments = [
_Experiment.sharedAlbum,
];

View file

@ -100,6 +100,7 @@ class _ShareAlbumDialogState extends State<ShareAlbumDialog> {
);
}
return SimpleDialogOption(
onPressed: isProcessing ? () {} : () => _onShareItemPressed(share),
child: ListTile(
title: Text(share.displayName),
subtitle: Text(share.shareWith.toString()),
@ -108,7 +109,6 @@ class _ShareAlbumDialogState extends State<ShareAlbumDialog> {
child: trailing,
),
),
onPressed: isProcessing ? () {} : () => _onShareItemPressed(share),
);
}

View file

@ -226,7 +226,9 @@ class _SharedFileViewerState extends State<SharedFileViewer> {
}
}
} finally {
Navigator.of(context).pop();
if (mounted) {
Navigator.of(context).pop();
}
}
} else {
setState(() {

View file

@ -73,6 +73,7 @@ class _SlideshowDialogState extends State<SlideshowDialog> {
Row(
children: [
Flexible(
flex: 1,
child: TextFormField(
decoration: InputDecoration(
hintText: L10n.global().timeMinuteInputHint,
@ -98,12 +99,12 @@ class _SlideshowDialogState extends State<SlideshowDialog> {
initialValue:
widget.duration.inMinutes.toString().padLeft(2, "0"),
),
flex: 1,
),
const SizedBox(width: 4),
const Text(":"),
const SizedBox(width: 4),
Flexible(
flex: 1,
child: TextFormField(
decoration: InputDecoration(
hintText: L10n.global().timeSecondInputHint,
@ -130,7 +131,6 @@ class _SlideshowDialogState extends State<SlideshowDialog> {
.toString()
.padLeft(2, "0"),
),
flex: 1,
),
],
),

View file

@ -172,7 +172,9 @@ class _TrashbinViewerState extends State<TrashbinViewer> {
content: Text(L10n.global().restoreSuccessNotification),
duration: k.snackBarDurationNormal,
));
Navigator.of(context).pop();
if (mounted) {
Navigator.of(context).pop();
}
} catch (e, stacktrace) {
_log.shout("Failed while restore trashbin: ${logFilename(file.path)}", e,
stacktrace);
@ -314,7 +316,7 @@ class _TrashbinViewerState extends State<TrashbinViewer> {
shouldCleanupAlbum: false,
isRemoveOpened: true,
);
if (count > 0) {
if (count > 0 && mounted) {
Navigator.of(context).pop();
}
}

View file

@ -599,7 +599,7 @@ class _ViewerState extends State<Viewer>
isRemoveOpened: true,
isMoveToTrash: true,
);
if (count > 0) {
if (count > 0 && mounted) {
Navigator.of(context).pop();
}
}

View file

@ -398,7 +398,7 @@ packages:
name: flutter_lints
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
version: "2.0.1"
flutter_localizations:
dependency: "direct main"
description: flutter
@ -571,7 +571,7 @@ packages:
name: lints
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "2.0.0"
lists:
dependency: transitive
description:
@ -839,12 +839,12 @@ packages:
source: hosted
version: "2.1.0"
quiver:
dependency: transitive
dependency: "direct main"
description:
name: quiver
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1+1"
version: "3.1.0"
rxdart:
dependency: transitive
description:
@ -1152,12 +1152,12 @@ packages:
source: hosted
version: "3.0.1"
uuid:
dependency: transitive
dependency: "direct main"
description:
name: uuid
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.5"
version: "3.0.6"
vector_math:
dependency: transitive
description:

View file

@ -84,6 +84,7 @@ dependencies:
page_view_indicators: ^2.0.0
path: ^1.8.0
path_provider: ^2.0.6
quiver: ^3.1.0
screen_brightness: ^0.1.1
shared_preferences: ^2.0.8
# android/ios only
@ -91,6 +92,7 @@ dependencies:
synchronized: ^3.0.0
tuple: ^2.0.0
url_launcher: ^6.0.3
uuid: ^3.0.6
video_player:
git:
url: https://gitlab.com/nc-photos/flutter-plugins
@ -104,7 +106,7 @@ dependencies:
dev_dependencies:
test: any
bloc_test: any
flutter_lints: ^1.0.4
flutter_lints: ^2.0.1
# flutter_test:
# sdk: flutter
# integration_test: