fixes, upgrades

This commit is contained in:
Thibault Deckers 2023-10-22 23:51:05 +03:00
parent 0a482e6ccf
commit 7b9213e82e
50 changed files with 216 additions and 232 deletions

View file

@ -725,12 +725,19 @@ class MediaStoreImageProvider : ImageProvider() {
val df = StorageUtils.getDocumentFile(activity, oldPath, oldMediaUri)
df ?: throw Exception("failed to get document at path=$oldPath")
val requestedName = newFile.name
val renamed = df.renameTo(newFile.name)
if (!renamed) {
throw Exception("failed to rename document at path=$oldPath")
}
val effectiveName = df.name
if (requestedName != effectiveName) {
Log.w(LOG_TAG, "requested renaming document at uri=$oldMediaUri path=$oldPath with name=${requestedName} but got name=$effectiveName")
}
val newPath = File(newFile.parentFile, df.name).path
scanObsoletePath(activity, oldMediaUri, oldPath, mimeType)
return scanNewPathByMediaStore(activity, newFile.path, mimeType)
return scanNewPathByMediaStore(activity, newPath, mimeType)
}
private suspend fun renameSingleByFile(

View file

@ -55,7 +55,7 @@ class Topology extends TopologyJsonObject {
final List<List<List<num>>> arcs;
final Transform? transform;
Topology.parse(Map<String, dynamic> data)
Topology.parse(super.data)
: objects = Map.fromEntries((data['objects'] as Map).cast<String, dynamic>().entries.map((kv) {
final name = kv.key;
final geometry = Geometry.build(kv.value);
@ -63,7 +63,7 @@ class Topology extends TopologyJsonObject {
}).whereNotNull()),
arcs = (data['arcs'] as List).cast<List>().map((arc) => arc.cast<List>().map((position) => position.cast<num>()).toList()).toList(),
transform = data.containsKey('transform') ? Transform.parse((data['transform'] as Map).cast<String, dynamic>()) : null,
super.parse(data);
super.parse();
List<List<num>> _arcAt(int index) {
var arc = arcs[index < 0 ? ~index : index];
@ -131,10 +131,10 @@ abstract class Geometry extends TopologyJsonObject {
final dynamic id;
final Map<String, dynamic>? properties;
Geometry.parse(Map<String, dynamic> data)
Geometry.parse(super.data)
: id = data.containsKey('id') ? data['id'] : null,
properties = data.containsKey('properties') ? data['properties'] as Map<String, dynamic>? : null,
super.parse(data);
super.parse();
static Geometry? build(Map<String, dynamic> data) {
final type = _parseTopoJsonObjectType(data['type'] as String?);
@ -165,41 +165,41 @@ abstract class Geometry extends TopologyJsonObject {
class Point extends Geometry {
final List<num> coordinates;
Point.parse(Map<String, dynamic> data)
Point.parse(super.data)
: coordinates = (data['coordinates'] as List).cast<num>(),
super.parse(data);
super.parse();
}
class MultiPoint extends Geometry {
final List<List<num>> coordinates;
MultiPoint.parse(Map<String, dynamic> data)
MultiPoint.parse(super.data)
: coordinates = (data['coordinates'] as List).cast<List>().map((position) => position.cast<num>()).toList(),
super.parse(data);
super.parse();
}
class LineString extends Geometry {
final List<int> arcs;
LineString.parse(Map<String, dynamic> data)
LineString.parse(super.data)
: arcs = (data['arcs'] as List).cast<int>(),
super.parse(data);
super.parse();
}
class MultiLineString extends Geometry {
final List<List<int>> arcs;
MultiLineString.parse(Map<String, dynamic> data)
MultiLineString.parse(super.data)
: arcs = (data['arcs'] as List).cast<List>().map((arc) => arc.cast<int>()).toList(),
super.parse(data);
super.parse();
}
class Polygon extends Geometry {
final List<List<int>> arcs;
Polygon.parse(Map<String, dynamic> data)
Polygon.parse(super.data)
: arcs = (data['arcs'] as List).cast<List>().map((arc) => arc.cast<int>()).toList(),
super.parse(data);
super.parse();
List<List<List<num>>>? _rings;
@ -217,9 +217,9 @@ class Polygon extends Geometry {
class MultiPolygon extends Geometry {
final List<List<List<int>>> arcs;
MultiPolygon.parse(Map<String, dynamic> data)
MultiPolygon.parse(super.data)
: arcs = (data['arcs'] as List).cast<List>().map((polygon) => polygon.cast<List>().map((arc) => arc.cast<int>()).toList()).toList(),
super.parse(data);
super.parse();
List<List<List<List<num>>>>? _polygons;
@ -237,9 +237,9 @@ class MultiPolygon extends Geometry {
class GeometryCollection extends Geometry {
final List<Geometry> geometries;
GeometryCollection.parse(Map<String, dynamic> data)
GeometryCollection.parse(super.data)
: geometries = (data['geometries'] as List).cast<Map<String, dynamic>>().map(Geometry.build).whereNotNull().toList(),
super.parse(data);
super.parse();
@override
bool containsPoint(Topology topology, List<num> point) {

View file

@ -13,10 +13,10 @@ class ActionEvent<T> extends Equatable {
@immutable
class ActionStartedEvent<T> extends ActionEvent<T> {
const ActionStartedEvent(T action) : super(action);
const ActionStartedEvent(super.action);
}
@immutable
class ActionEndedEvent<T> extends ActionEvent<T> {
const ActionEndedEvent(T action) : super(action);
const ActionEndedEvent(super.action);
}

View file

@ -61,7 +61,7 @@ class AboutTvPage extends StatelessWidget {
}
class _Content extends StatefulWidget {
const _Content({Key? key}) : super(key: key);
const _Content();
@override
State<_Content> createState() => _ContentState();

View file

@ -219,9 +219,7 @@ class _PackageLicensePageState extends State<_PackageLicensePage> {
return true;
}());
for (final LicenseEntry license in widget.licenseEntries) {
if (!mounted) {
return;
}
if (!mounted) return;
assert(() {
Timeline.timeSync('_initLicenses()', () {}, flow: Flow.step(debugFlowId));
return true;
@ -231,9 +229,7 @@ class _PackageLicensePageState extends State<_PackageLicensePage> {
Priority.animation,
debugLabel: 'License',
);
if (!mounted) {
return;
}
if (!mounted) return;
setState(() {
_licenses.add(const Padding(
padding: EdgeInsets.all(18.0),

View file

@ -122,7 +122,7 @@ class BottomPaddingSliver extends StatelessWidget {
}
class TvTileGridBottomPaddingSliver extends StatelessWidget {
const TvTileGridBottomPaddingSliver({Key? key}) : super(key: key);
const TvTileGridBottomPaddingSliver({super.key});
@override
Widget build(BuildContext context) {

View file

@ -7,11 +7,11 @@ class LabeledCheckbox extends StatefulWidget {
final String text;
const LabeledCheckbox({
Key? key,
super.key,
required this.value,
required this.onChanged,
required this.text,
}) : super(key: key);
});
@override
State<LabeledCheckbox> createState() => _LabeledCheckboxState();

View file

@ -9,8 +9,8 @@ class KnownExtentScrollPhysics extends ScrollPhysics {
const KnownExtentScrollPhysics({
required this.indexToScrollOffset,
required this.scrollOffsetToIndex,
ScrollPhysics? parent,
}) : super(parent: parent);
super.parent,
});
@override
KnownExtentScrollPhysics applyTo(ScrollPhysics? ancestor) {

View file

@ -16,10 +16,9 @@ class DirectPageTransitionsTheme extends PageTransitionsTheme {
class DirectMaterialPageRoute<T> extends PageRouteBuilder<T> {
DirectMaterialPageRoute({
RouteSettings? settings,
super.settings,
required WidgetBuilder builder,
}) : super(
settings: settings,
transitionDuration: Duration.zero,
pageBuilder: (context, a, sa) => builder(context),
);
@ -32,9 +31,9 @@ class DirectMaterialPageRoute<T> extends PageRouteBuilder<T> {
class TransparentMaterialPageRoute<T> extends PageRouteBuilder<T> {
TransparentMaterialPageRoute({
RouteSettings? settings,
required RoutePageBuilder pageBuilder,
}) : super(settings: settings, pageBuilder: pageBuilder);
super.settings,
required super.pageBuilder,
});
@override
bool get opaque => false;

View file

@ -13,8 +13,8 @@ class SloppyScrollPhysics extends ScrollPhysics {
const SloppyScrollPhysics({
required this.gestureSettings,
this.touchSlopFactor = 1,
ScrollPhysics? parent,
}) : super(parent: parent);
super.parent,
});
@override
SloppyScrollPhysics applyTo(ScrollPhysics? ancestor) {

View file

@ -114,15 +114,13 @@ class _SweeperState extends State<Sweeper> with SingleTickerProviderStateMixin {
setState(() {});
await Future.delayed(ADurations.sweeperOpacityAnimation * timeDilation);
_isAppearing = false;
if (mounted) {
if (!mounted) return;
_angleAnimationController.reset();
unawaited(_angleAnimationController.forward());
}
}
if (mounted) {
if (!mounted) return;
setState(() {});
}
}
}
class _SweepClipPath extends CustomClipper<Path> {

View file

@ -135,12 +135,10 @@ class _GridItemTrackerState<T> extends State<GridItemTracker<T>> with WidgetsBin
// so that we can handle window orientation change with the previous metrics,
// regardless of the `View`/`WidgetsBindingObserver` order uncertainty
await Future.delayed(const Duration(milliseconds: 500));
if (mounted) {
if (!mounted) return;
_lastSectionedListLayout = context.read<SectionedListLayout<T>>();
_lastScrollableSize = scrollableSize;
}
}
void _onLayoutChanged() {
if (scrollController.positions.length != 1) return;

View file

@ -11,8 +11,8 @@ class FixedExtentGridRow extends MultiChildRenderObjectWidget {
required this.height,
required this.spacing,
required this.textDirection,
required List<Widget> children,
}) : super(children: children);
required super.children,
});
@override
RenderObject createRenderObject(BuildContext context) {

View file

@ -13,8 +13,8 @@ class MosaicGridRow extends MultiChildRenderObjectWidget {
required this.rowLayout,
required this.spacing,
required this.textDirection,
required List<Widget> children,
}) : super(children: children);
required super.children,
});
@override
RenderObject createRenderObject(BuildContext context) {

View file

@ -41,9 +41,9 @@ class _SliverKnownExtentList extends SliverMultiBoxAdaptorWidget {
final List<SectionLayout> sectionLayouts;
const _SliverKnownExtentList({
required SliverChildDelegate delegate,
required super.delegate,
required this.sectionLayouts,
}) : super(delegate: delegate);
});
@override
_RenderSliverKnownExtentBoxAdaptor createRenderObject(BuildContext context) {
@ -69,10 +69,9 @@ class _RenderSliverKnownExtentBoxAdaptor extends RenderSliverMultiBoxAdaptor {
}
_RenderSliverKnownExtentBoxAdaptor({
required RenderSliverBoxChildManager childManager,
required super.childManager,
required List<SectionLayout> sectionLayouts,
}) : _sectionLayouts = sectionLayouts,
super(childManager: childManager);
}) : _sectionLayouts = sectionLayouts;
SectionLayout? sectionAtIndex(int index) => sectionLayouts.firstWhereOrNull((section) => section.hasChild(index));

View file

@ -4,12 +4,9 @@ import 'package:latlong2/latlong.dart';
class LatLngTween extends Tween<LatLng?> {
LatLngTween({
required LatLng? begin,
required LatLng? end,
}) : super(
begin: begin,
end: end,
);
required super.begin,
required super.end,
});
@override
LatLng? lerp(double t) => LatLngUtils.lerp(begin, end, t);

View file

@ -91,10 +91,9 @@ class _SearchPageState extends State<SearchPage> {
void _onQueryChanged() {
_debouncer(() {
if (mounted) {
if (!mounted) return;
// rebuild ourselves because query changed.
setState(() {});
}
});
}

View file

@ -161,10 +161,9 @@ class _ThumbnailImageState extends State<ThumbnailImage> {
}
void _onError(Object exception, StackTrace? stackTrace) {
if (mounted) {
if (!mounted) return;
setState(() => _lastException = exception);
}
}
bool _needSizedProvider(ImageInfo? currentImageInfo) {
if (currentImageInfo == null) return true;

View file

@ -296,7 +296,8 @@ class _AddressRowState extends State<_AddressRow> {
Future<void> _updateAddress() async {
final location = widget.location;
final addressLine = await _getAddressLine(location);
if (mounted && location == widget.location) {
if (!mounted) return;
if (location == widget.location) {
_addressLineNotifier.value = addressLine;
}
}

View file

@ -68,26 +68,26 @@ class CoveredFilterChip<T extends CollectionFilter> extends StatelessWidget {
stream: covers.entryChangeStream.where((event) => event == null || event.contains(filter)),
builder: (context, snapshot) => Consumer<CollectionSource>(
builder: (context, source, child) {
switch (T) {
case AlbumFilter:
switch (filter) {
case AlbumFilter filter:
{
final album = (filter as AlbumFilter).album;
final album = filter.album;
return StreamBuilder<AlbumSummaryInvalidatedEvent>(
stream: source.eventBus.on<AlbumSummaryInvalidatedEvent>().where((event) => event.directories == null || event.directories!.contains(album)),
builder: (context, snapshot) => _buildChip(context, source),
);
}
case LocationFilter:
case LocationFilter filter:
{
final countryCode = (filter as LocationFilter).code;
final countryCode = filter.code;
return StreamBuilder<CountrySummaryInvalidatedEvent>(
stream: source.eventBus.on<CountrySummaryInvalidatedEvent>().where((event) => event.countryCodes == null || event.countryCodes!.contains(countryCode)),
builder: (context, snapshot) => _buildChip(context, source),
);
}
case TagFilter:
case TagFilter filter:
{
final tag = (filter as TagFilter).tag;
final tag = filter.tag;
return StreamBuilder<TagSummaryInvalidatedEvent>(
stream: source.eventBus.on<TagSummaryInvalidatedEvent>().where((event) => event.tags == null || event.tags!.contains(tag)),
builder: (context, snapshot) => _buildChip(context, source),

View file

@ -92,7 +92,8 @@ class _MapAddressRowState extends State<MapAddressRow> {
Future<void> _updateAddress() async {
final entry = widget.entry;
final addressLine = await _getAddressLine(entry);
if (mounted && entry == widget.entry) {
if (!mounted) return;
if (entry == widget.entry) {
_addressLineNotifier.value = addressLine;
}
}

View file

@ -44,9 +44,8 @@ class _FloatingNavBarState extends State<FloatingNavBar> with SingleTickerProvid
curve: Curves.linear,
))
..addListener(() {
if (mounted) {
if (!mounted) return;
setState(() {});
}
});
_registerWidget(widget);
}

View file

@ -358,20 +358,17 @@ class _ViewerVerticalPageViewState extends State<ViewerVerticalPageView> {
} else {
Navigator.maybeOf(context)?.pop();
}
if (!mounted) return;
// needed to refresh when entry changes but the page does not (e.g. on page deletion)
if (mounted) {
setState(() {});
}
}
// when the entry image itself changed (e.g. after rotation)
void _onVisualChanged() async {
// rebuild to refresh the Image inside ImagePage
if (mounted) {
if (!mounted) return;
// rebuild to refresh the `Image` inside `ImagePage`
setState(() {});
}
}
void _onPlayPauseIntent(PlayPauseIntent intent) {
// address `TV-PP` requirement from https://developer.android.com/docs/quality-guidelines/tv-app-quality

View file

@ -144,7 +144,6 @@ class _MetadataSectionSliverState extends State<MetadataSectionSliver> {
Future<void> _getMetadata() async {
if (!mounted) return;
final titledDirectories = await entry.getMetadataDirectories(context);
metadataNotifier.value = Map.fromEntries(titledDirectories);
_expandedDirectoryNotifier.value = null;

View file

@ -80,10 +80,9 @@ class _ImageHistogramState extends State<ImageHistogram> {
final targetEntry = entry;
final forceUpdate = targetEntry.isAnimated;
final newLevels = await viewStateController.getHistogramLevels(info, forceUpdate);
if (mounted) {
if (!mounted) return;
setState(() => _levels = targetEntry == entry ? newLevels : {});
}
}
}
class _HistogramPainter extends CustomPainter {

View file

@ -65,8 +65,7 @@ class _ViewerThumbnailPreviewState extends State<ViewerThumbnailPreview> {
}
void _onScrollerIndexChanged() => _debouncer(() {
if (mounted) {
if (!mounted) return;
ShowEntryNotification(animate: false, index: _entryIndexNotifier.value).dispatch(context);
}
});
}

View file

@ -279,9 +279,9 @@ class _ViewerButtonRowContentState extends State<ViewerButtonRowContent> {
icon: AIcons.export,
title: context.l10n.entryActionExport,
items: [
...exportInternalActions.map((action) => _buildPopupMenuItem(context, action, videoController)).toList(),
...exportInternalActions.map((action) => _buildPopupMenuItem(context, action, videoController)),
if (exportInternalActions.isNotEmpty && exportExternalActions.isNotEmpty) const PopupMenuDivider(height: 0),
...exportExternalActions.map((action) => _buildPopupMenuItem(context, action, videoController)).toList(),
...exportExternalActions.map((action) => _buildPopupMenuItem(context, action, videoController)),
],
),
if (videoActions.isNotEmpty)
@ -291,7 +291,7 @@ class _ViewerButtonRowContentState extends State<ViewerButtonRowContent> {
icon: AIcons.video,
title: context.l10n.settingsVideoSectionTitle,
items: [
...videoActions.map((action) => _buildPopupMenuItem(context, action, videoController)).toList(),
...videoActions.map((action) => _buildPopupMenuItem(context, action, videoController)),
],
),
if (!kReleaseMode) ...[

View file

@ -268,14 +268,14 @@ class _EntryPageViewState extends State<EntryPageView> with SingleTickerProvider
var move = Offset.zero;
var dropped = false;
double? startValue;
final valueNotifier = ValueNotifier<double?>(null);
ValueNotifier<double?>? valueNotifier;
onScaleStart = (details, doubleTap, boundaries) {
dropped = details.pointerCount > 1 || doubleTap;
if (dropped) return;
startValue = null;
valueNotifier.value = null;
valueNotifier = ValueNotifier<double?>(null);
final alignmentX = details.focalPoint.dx / boundaries.viewportSize.width;
final action = alignmentX > .5 ? SwipeAction.volume : SwipeAction.brightness;
action.get().then((v) => startValue = v);
@ -284,15 +284,17 @@ class _EntryPageViewState extends State<EntryPageView> with SingleTickerProvider
_actionFeedbackOverlayEntry = OverlayEntry(
builder: (context) => SwipeActionFeedback(
action: action,
valueNotifier: valueNotifier,
valueNotifier: valueNotifier!,
),
);
Overlay.of(context).insert(_actionFeedbackOverlayEntry!);
};
onScaleUpdate = (details) {
if (valueNotifier == null) return false;
move += details.focalPointDelta;
dropped |= details.pointerCount > 1;
if (valueNotifier.value == null) {
if (valueNotifier!.value == null) {
dropped |= MagnifierGestureRecognizer.isXPan(move);
}
if (dropped) return false;
@ -300,12 +302,14 @@ class _EntryPageViewState extends State<EntryPageView> with SingleTickerProvider
final _startValue = startValue;
if (_startValue != null) {
final double value = (_startValue - move.dy / SwipeActionFeedback.height).clamp(0, 1);
valueNotifier.value = value;
valueNotifier!.value = value;
swipeAction?.set(value);
}
return true;
};
onScaleEnd = (details) {
valueNotifier?.dispose();
final overlayEntry = _actionFeedbackOverlayEntry;
_actionFeedbackOverlayEntry = null;
if (overlayEntry != null) {
@ -482,6 +486,7 @@ class _EntryPageViewState extends State<EntryPageView> with SingleTickerProvider
}
double? _getSideRatio() {
if (!mounted) return null;
final isPortrait = MediaQuery.orientationOf(context) == Orientation.portrait;
return isPortrait ? 1 / 5 : 1 / 8;
}

View file

@ -31,9 +31,9 @@ class WallpaperPage extends StatelessWidget {
final AvesEntry? entry;
const WallpaperPage({
Key? key,
super.key,
required this.entry,
}) : super(key: key);
});
@override
Widget build(BuildContext context) {
@ -60,9 +60,9 @@ class EntryEditor extends StatefulWidget {
final AvesEntry entry;
const EntryEditor({
Key? key,
super.key,
required this.entry,
}) : super(key: key);
});
@override
State<EntryEditor> createState() => _EntryEditorState();

View file

@ -27,8 +27,8 @@ class MagnifierGestureDetectorScope extends InheritedWidget {
this.touchSlopFactor = .8,
this.escapeByFling = true,
this.acceptPointerEvent,
required Widget child,
}) : super(child: child);
required super.child,
});
static MagnifierGestureDetectorScope? maybeOf(BuildContext context) {
return context.dependOnInheritedWidgetOfExactType<MagnifierGestureDetectorScope>();

View file

@ -41,18 +41,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -6,22 +6,14 @@ class GeoEntry<T> extends Clusterable {
GeoEntry({
this.entry,
double? latitude,
double? longitude,
bool? isCluster = false,
int? clusterId,
int? pointsSize,
String? markerId,
String? childMarkerId,
}) : super(
latitude: latitude,
longitude: longitude,
isCluster: isCluster,
clusterId: clusterId,
pointsSize: pointsSize,
markerId: markerId,
childMarkerId: childMarkerId,
);
super.latitude,
super.longitude,
super.isCluster = false,
super.clusterId,
super.pointsSize,
super.markerId,
super.childMarkerId,
});
factory GeoEntry.createCluster(BaseCluster cluster, double longitude, double latitude) {
return GeoEntry(

View file

@ -73,10 +73,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
flutter_map:
dependency: "direct main"
description:
@ -121,10 +121,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
lists:
dependency: transitive
description:

View file

@ -34,18 +34,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -26,18 +26,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -26,18 +26,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -33,18 +33,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -5,10 +5,10 @@ packages:
dependency: transitive
description:
name: _flutterfire_internals
sha256: "2e3a565cdd40b32df6ff9a0d1f16b9144fcce769455597ee9195f568ffbb3a59"
sha256: "76c15c4167f820b74abcd8c6fc5e393e1ed5e1207a34e9b22953603e03b3ba6a"
url: "https://pub.dev"
source: hosted
version: "1.3.8"
version: "1.3.9"
async:
dependency: transitive
description:
@ -68,10 +68,10 @@ packages:
dependency: "direct main"
description:
name: firebase_core
sha256: "761d0a00562ba09d491eacdceaf1885df62d072c9431bf3110333e2a9904b1e1"
sha256: "57bba167105d2315d243a4524939406df688f38a5b6d7a4159382bbbe43cdd00"
url: "https://pub.dev"
source: hosted
version: "2.18.0"
version: "2.19.0"
firebase_core_platform_interface:
dependency: transitive
description:
@ -92,18 +92,18 @@ packages:
dependency: "direct main"
description:
name: firebase_crashlytics
sha256: "85f1098487d1b177bb4b7e0d552f57029d6964d2da665104d6299acce2f58bb6"
sha256: c58902959e7a73aadcf82c87e8d64f6eb10b5287fd7aaadfab5c2ef34ec11ff5
url: "https://pub.dev"
source: hosted
version: "3.4.0"
version: "3.4.1"
firebase_crashlytics_platform_interface:
dependency: transitive
description:
name: firebase_crashlytics_platform_interface
sha256: "8bdcca9109595d353b467a97278becb726286596741b9cc0ace59abf9def9645"
sha256: "9d2f76bda1542615f75fb501a8c7afc6288d69c3728fdc762bf3d51f0ee0f4cb"
url: "https://pub.dev"
source: hosted
version: "3.6.8"
version: "3.6.9"
flutter:
dependency: "direct main"
description: flutter
@ -113,10 +113,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
flutter_test:
dependency: transitive
description: flutter
@ -139,10 +139,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
matcher:
dependency: transitive
description:

View file

@ -26,18 +26,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -80,10 +80,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
flutter_map:
dependency: transitive
description:
@ -128,10 +128,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
lists:
dependency: transitive
description:

View file

@ -127,10 +127,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
flutter_map:
dependency: transitive
description:
@ -284,10 +284,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
lists:
dependency: transitive
description:

View file

@ -94,10 +94,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
flutter_map:
dependency: transitive
description:
@ -160,10 +160,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
lists:
dependency: transitive
description:

View file

@ -87,10 +87,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
flutter_map:
dependency: transitive
description:
@ -135,10 +135,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
lists:
dependency: transitive
description:

View file

@ -26,18 +26,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -26,18 +26,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -48,18 +48,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -72,18 +72,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -64,18 +64,18 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:

View file

@ -111,10 +111,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
@ -156,10 +156,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
material_color_utilities:
dependency: transitive
description:
@ -172,10 +172,10 @@ packages:
dependency: "direct main"
description:
name: media_kit
sha256: "3dffc6d0c19117d51fbc42a7f89612e0595665800a596289ab7a80bdd93e0ad1"
sha256: "3289062540e3b8b9746e5c50d95bd78a9289826b7227e253dff806d002b9e67a"
url: "https://pub.dev"
source: hosted
version: "1.1.9"
version: "1.1.10+1"
media_kit_libs_android_video:
dependency: "direct main"
description:
@ -196,10 +196,10 @@ packages:
dependency: "direct main"
description:
name: media_kit_video
sha256: b8df9cf97aba1861af83b00ac16f5cac536debe0781a934a554b77c157a8f7e8
sha256: c048d11a19e379aebbe810647636e3fc6d18374637e2ae12def4ff8a4b99a882
url: "https://pub.dev"
source: hosted
version: "1.2.2"
version: "1.2.4"
meta:
dependency: transitive
description:

View file

@ -13,10 +13,10 @@ packages:
dependency: transitive
description:
name: _flutterfire_internals
sha256: "2e3a565cdd40b32df6ff9a0d1f16b9144fcce769455597ee9195f568ffbb3a59"
sha256: "76c15c4167f820b74abcd8c6fc5e393e1ed5e1207a34e9b22953603e03b3ba6a"
url: "https://pub.dev"
source: hosted
version: "1.3.8"
version: "1.3.9"
analyzer:
dependency: transitive
description:
@ -331,7 +331,7 @@ packages:
description:
path: "."
ref: HEAD
resolved-ref: cfcb070b627f110d01dff88809dcea20faa13444
resolved-ref: "7c4032fa0fc17b5a5d3fec1ac854afd6cd55670e"
url: "https://github.com/deckerst/expansion_tile_card.git"
source: git
version: "3.0.0"
@ -380,10 +380,10 @@ packages:
dependency: transitive
description:
name: firebase_core
sha256: "761d0a00562ba09d491eacdceaf1885df62d072c9431bf3110333e2a9904b1e1"
sha256: "57bba167105d2315d243a4524939406df688f38a5b6d7a4159382bbbe43cdd00"
url: "https://pub.dev"
source: hosted
version: "2.18.0"
version: "2.19.0"
firebase_core_platform_interface:
dependency: transitive
description:
@ -404,18 +404,18 @@ packages:
dependency: transitive
description:
name: firebase_crashlytics
sha256: "85f1098487d1b177bb4b7e0d552f57029d6964d2da665104d6299acce2f58bb6"
sha256: c58902959e7a73aadcf82c87e8d64f6eb10b5287fd7aaadfab5c2ef34ec11ff5
url: "https://pub.dev"
source: hosted
version: "3.4.0"
version: "3.4.1"
firebase_crashlytics_platform_interface:
dependency: transitive
description:
name: firebase_crashlytics_platform_interface
sha256: "8bdcca9109595d353b467a97278becb726286596741b9cc0ace59abf9def9645"
sha256: "9d2f76bda1542615f75fb501a8c7afc6288d69c3728fdc762bf3d51f0ee0f4cb"
url: "https://pub.dev"
source: hosted
version: "3.6.8"
version: "3.6.9"
flex_color_picker:
dependency: "direct main"
description:
@ -486,10 +486,10 @@ packages:
dependency: "direct dev"
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
sha256: ad76540d21c066228ee3f9d1dad64a9f7e46530e8bb7c85011a88bc1fd874bc5
url: "https://pub.dev"
source: hosted
version: "2.0.3"
version: "3.0.0"
flutter_localization_nn:
dependency: "direct main"
description:
@ -747,10 +747,10 @@ packages:
dependency: transitive
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "3.0.0"
lists:
dependency: transitive
description:
@ -851,10 +851,10 @@ packages:
dependency: transitive
description:
name: media_kit
sha256: "3dffc6d0c19117d51fbc42a7f89612e0595665800a596289ab7a80bdd93e0ad1"
sha256: "3289062540e3b8b9746e5c50d95bd78a9289826b7227e253dff806d002b9e67a"
url: "https://pub.dev"
source: hosted
version: "1.1.9"
version: "1.1.10+1"
media_kit_libs_android_video:
dependency: transitive
description:
@ -875,10 +875,10 @@ packages:
dependency: transitive
description:
name: media_kit_video
sha256: b8df9cf97aba1861af83b00ac16f5cac536debe0781a934a554b77c157a8f7e8
sha256: c048d11a19e379aebbe810647636e3fc6d18374637e2ae12def4ff8a4b99a882
url: "https://pub.dev"
source: hosted
version: "1.2.2"
version: "1.2.4"
meta:
dependency: transitive
description: