mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-03-13 18:58:53 +01:00
Merge branch 'flutter3.16'
This commit is contained in:
commit
88ee044e62
56 changed files with 1939 additions and 1545 deletions
|
@ -3,7 +3,7 @@ test:
|
|||
stage: test
|
||||
except:
|
||||
- triage
|
||||
image: "ghcr.io/cirruslabs/flutter:3.7.12"
|
||||
image: "ghcr.io/cirruslabs/flutter:3.16.9"
|
||||
before_script:
|
||||
- apt-get update -qq && apt-get install -y -qq libsqlite3-dev
|
||||
- flutter pub global activate junitreport
|
||||
|
|
|
@ -34,7 +34,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
|||
ext.abiCodes = ["armeabi-v7a": 1, "arm64-v8a": 2, "x86_64": 3]
|
||||
|
||||
android {
|
||||
compileSdkVersion 33
|
||||
compileSdkVersion 34
|
||||
ndkVersion "23.2.8568313"
|
||||
|
||||
sourceSets {
|
||||
|
|
|
@ -26,6 +26,6 @@ subprojects {
|
|||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
tasks.register("clean", Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
|
|
|
@ -44,8 +44,8 @@ class _SignInState extends State<SignIn> {
|
|||
|
||||
Widget _buildContent(BuildContext context) {
|
||||
if (_isConnecting) {
|
||||
return Stack(
|
||||
children: const [
|
||||
return const Stack(
|
||||
children: [
|
||||
Positioned(
|
||||
left: 0,
|
||||
right: 0,
|
||||
|
|
|
@ -23,8 +23,8 @@ class ContentUriImage extends ImageProvider<ContentUriImage>
|
|||
}
|
||||
|
||||
@override
|
||||
ImageStreamCompleter loadBuffer(
|
||||
ContentUriImage key, DecoderBufferCallback decode) {
|
||||
ImageStreamCompleter loadImage(
|
||||
ContentUriImage key, ImageDecoderCallback decode) {
|
||||
return MultiFrameImageStreamCompleter(
|
||||
codec: _loadAsync(key, decode),
|
||||
scale: key.scale,
|
||||
|
@ -36,7 +36,7 @@ class ContentUriImage extends ImageProvider<ContentUriImage>
|
|||
}
|
||||
|
||||
Future<ui.Codec> _loadAsync(
|
||||
ContentUriImage key, DecoderBufferCallback decode) async {
|
||||
ContentUriImage key, ImageDecoderCallback decode) async {
|
||||
assert(key == this);
|
||||
final bytes = await ContentUri.readUri(uri);
|
||||
if (bytes.lengthInBytes == 0) {
|
||||
|
|
|
@ -186,7 +186,7 @@ class ShareHandler {
|
|||
file,
|
||||
password: password,
|
||||
);
|
||||
await Clipboard.setData(ClipboardData(text: share.url));
|
||||
await Clipboard.setData(ClipboardData(text: share.url!));
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(L10n.global().linkCopiedNotification),
|
||||
duration: k.snackBarDurationNormal,
|
||||
|
|
|
@ -143,198 +143,202 @@ class _WrappedCollectionBrowserState extends State<_WrappedCollectionBrowser>
|
|||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return WillPopScope(
|
||||
onWillPop: () async {
|
||||
if (_bloc.state.isEditMode) {
|
||||
_bloc.add(const _CancelEdit());
|
||||
return false;
|
||||
} else if (_bloc.state.selectedItems.isNotEmpty) {
|
||||
_bloc.add(const _SetSelectedItems(items: {}));
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
},
|
||||
child: Scaffold(
|
||||
body: MultiBlocListener(
|
||||
listeners: [
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.items != current.items,
|
||||
listener: (context, state) {
|
||||
_bloc.add(_TransformItems(
|
||||
items: state.items,
|
||||
));
|
||||
},
|
||||
),
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.editItems != current.editItems,
|
||||
listener: (context, state) {
|
||||
if (state.editItems != null) {
|
||||
_bloc.add(_TransformEditItems(
|
||||
items: state.editItems!,
|
||||
return _BlocBuilder(
|
||||
buildWhen: (previous, current) =>
|
||||
previous.isEditMode != current.isEditMode ||
|
||||
previous.selectedItems.isEmpty != current.selectedItems.isEmpty,
|
||||
builder: (context, state) => PopScope(
|
||||
canPop: !state.isEditMode && state.selectedItems.isEmpty,
|
||||
onPopInvoked: (didPop) {
|
||||
if (state.isEditMode) {
|
||||
_bloc.add(const _CancelEdit());
|
||||
} else if (state.selectedItems.isNotEmpty) {
|
||||
_bloc.add(const _SetSelectedItems(items: {}));
|
||||
}
|
||||
},
|
||||
child: Scaffold(
|
||||
body: MultiBlocListener(
|
||||
listeners: [
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.items != current.items,
|
||||
listener: (context, state) {
|
||||
_bloc.add(_TransformItems(
|
||||
items: state.items,
|
||||
));
|
||||
}
|
||||
},
|
||||
),
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.importResult != current.importResult,
|
||||
listener: (context, state) {
|
||||
if (state.importResult != null) {
|
||||
Navigator.of(context).pushReplacementNamed(
|
||||
CollectionBrowser.routeName,
|
||||
arguments: CollectionBrowserArguments(state.importResult!),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.isEditMode != current.isEditMode,
|
||||
listener: (context, state) {
|
||||
final c = KiwiContainer().resolve<DiContainer>();
|
||||
final bloc = context.read<_Bloc>();
|
||||
final canSort =
|
||||
CollectionAdapter.of(c, bloc.account, state.collection)
|
||||
.isPermitted(CollectionCapability.manualSort);
|
||||
if (canSort &&
|
||||
!SessionStorage().hasShowDragRearrangeNotification) {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content:
|
||||
Text(L10n.global().albumEditDragRearrangeNotification),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
SessionStorage().hasShowDragRearrangeNotification = true;
|
||||
}
|
||||
},
|
||||
),
|
||||
_BlocListenerT<ExceptionEvent?>(
|
||||
selector: (state) => state.error,
|
||||
listener: (context, error) {
|
||||
if (error != null && isPageVisible()) {
|
||||
final String content;
|
||||
if (error.error is _ArchiveFailedError) {
|
||||
content = L10n.global().archiveSelectedFailureNotification(
|
||||
(error.error as _ArchiveFailedError).count);
|
||||
} else if (error.error is _RemoveFailedError) {
|
||||
content = L10n.global().deleteSelectedFailureNotification(
|
||||
(error.error as _RemoveFailedError).count);
|
||||
} else {
|
||||
content = exception_util.toUserString(error.error);
|
||||
}
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(content),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
}
|
||||
},
|
||||
),
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.message != current.message,
|
||||
listener: (context, state) {
|
||||
if (state.message != null && isPageVisible()) {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(state.message!),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
child: Stack(
|
||||
fit: StackFit.expand,
|
||||
children: [
|
||||
FingerListener(
|
||||
onPointerMove: (event) => _onPointerMove(context, event),
|
||||
onFingerChanged: (finger) {
|
||||
setState(() {
|
||||
_finger = finger;
|
||||
});
|
||||
},
|
||||
child: GestureDetector(
|
||||
onScaleStart: (_) {
|
||||
_bloc.add(const _StartScaling());
|
||||
},
|
||||
onScaleUpdate: (details) {
|
||||
_bloc.add(_SetScale(details.scale));
|
||||
},
|
||||
onScaleEnd: (_) {
|
||||
_bloc.add(const _EndScaling());
|
||||
},
|
||||
child: CustomScrollView(
|
||||
controller: _scrollController,
|
||||
physics: _finger >= 2
|
||||
? const NeverScrollableScrollPhysics()
|
||||
: null,
|
||||
slivers: [
|
||||
_BlocBuilder(
|
||||
buildWhen: (previous, current) =>
|
||||
previous.selectedItems.isEmpty !=
|
||||
current.selectedItems.isEmpty ||
|
||||
previous.isEditMode != current.isEditMode,
|
||||
builder: (context, state) {
|
||||
if (state.isEditMode) {
|
||||
return const _EditAppBar();
|
||||
} else if (state.selectedItems.isNotEmpty) {
|
||||
return const _SelectionAppBar();
|
||||
} else {
|
||||
return const _AppBar();
|
||||
}
|
||||
},
|
||||
),
|
||||
SliverToBoxAdapter(
|
||||
child: _BlocBuilder(
|
||||
buildWhen: (previous, current) =>
|
||||
previous.isLoading != current.isLoading,
|
||||
builder: (context, state) => state.isLoading
|
||||
? const LinearProgressIndicator()
|
||||
: const SizedBox(height: 4),
|
||||
),
|
||||
),
|
||||
_BlocBuilder(
|
||||
buildWhen: (previous, current) =>
|
||||
previous.isEditMode != current.isEditMode ||
|
||||
previous.scale != current.scale,
|
||||
builder: (context, state) {
|
||||
if (!state.isEditMode) {
|
||||
return SliverTransitionedScale(
|
||||
scale: state.scale,
|
||||
baseSliver: const _ContentList(),
|
||||
overlaySliver: const _ScalingList(),
|
||||
);
|
||||
} else {
|
||||
if (context.bloc.isCollectionCapabilityPermitted(
|
||||
CollectionCapability.manualSort)) {
|
||||
return const _EditContentList();
|
||||
} else {
|
||||
return const _UnmodifiableEditContentList();
|
||||
}
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
_BlocBuilder(
|
||||
buildWhen: (previous, current) =>
|
||||
previous.isEditBusy != current.isEditBusy,
|
||||
builder: (context, state) {
|
||||
if (state.isEditBusy) {
|
||||
return Container(
|
||||
color: Colors.black.withOpacity(.5),
|
||||
alignment: Alignment.center,
|
||||
child: const CircularProgressIndicator(),
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.editItems != current.editItems,
|
||||
listener: (context, state) {
|
||||
if (state.editItems != null) {
|
||||
_bloc.add(_TransformEditItems(
|
||||
items: state.editItems!,
|
||||
));
|
||||
}
|
||||
},
|
||||
),
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.importResult != current.importResult,
|
||||
listener: (context, state) {
|
||||
if (state.importResult != null) {
|
||||
Navigator.of(context).pushReplacementNamed(
|
||||
CollectionBrowser.routeName,
|
||||
arguments:
|
||||
CollectionBrowserArguments(state.importResult!),
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
},
|
||||
),
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.isEditMode != current.isEditMode,
|
||||
listener: (context, state) {
|
||||
final c = KiwiContainer().resolve<DiContainer>();
|
||||
final bloc = context.read<_Bloc>();
|
||||
final canSort =
|
||||
CollectionAdapter.of(c, bloc.account, state.collection)
|
||||
.isPermitted(CollectionCapability.manualSort);
|
||||
if (canSort &&
|
||||
!SessionStorage().hasShowDragRearrangeNotification) {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(
|
||||
L10n.global().albumEditDragRearrangeNotification),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
SessionStorage().hasShowDragRearrangeNotification = true;
|
||||
}
|
||||
},
|
||||
),
|
||||
_BlocListenerT<ExceptionEvent?>(
|
||||
selector: (state) => state.error,
|
||||
listener: (context, error) {
|
||||
if (error != null && isPageVisible()) {
|
||||
final String content;
|
||||
if (error.error is _ArchiveFailedError) {
|
||||
content = L10n.global()
|
||||
.archiveSelectedFailureNotification(
|
||||
(error.error as _ArchiveFailedError).count);
|
||||
} else if (error.error is _RemoveFailedError) {
|
||||
content = L10n.global().deleteSelectedFailureNotification(
|
||||
(error.error as _RemoveFailedError).count);
|
||||
} else {
|
||||
content = exception_util.toUserString(error.error);
|
||||
}
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(content),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
}
|
||||
},
|
||||
),
|
||||
_BlocListener(
|
||||
listenWhen: (previous, current) =>
|
||||
previous.message != current.message,
|
||||
listener: (context, state) {
|
||||
if (state.message != null && isPageVisible()) {
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(state.message!),
|
||||
duration: k.snackBarDurationNormal,
|
||||
));
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
child: Stack(
|
||||
fit: StackFit.expand,
|
||||
children: [
|
||||
FingerListener(
|
||||
onPointerMove: (event) => _onPointerMove(context, event),
|
||||
onFingerChanged: (finger) {
|
||||
setState(() {
|
||||
_finger = finger;
|
||||
});
|
||||
},
|
||||
child: GestureDetector(
|
||||
onScaleStart: (_) {
|
||||
_bloc.add(const _StartScaling());
|
||||
},
|
||||
onScaleUpdate: (details) {
|
||||
_bloc.add(_SetScale(details.scale));
|
||||
},
|
||||
onScaleEnd: (_) {
|
||||
_bloc.add(const _EndScaling());
|
||||
},
|
||||
child: CustomScrollView(
|
||||
controller: _scrollController,
|
||||
physics: _finger >= 2
|
||||
? const NeverScrollableScrollPhysics()
|
||||
: null,
|
||||
slivers: [
|
||||
_BlocBuilder(
|
||||
buildWhen: (previous, current) =>
|
||||
previous.selectedItems.isEmpty !=
|
||||
current.selectedItems.isEmpty ||
|
||||
previous.isEditMode != current.isEditMode,
|
||||
builder: (context, state) {
|
||||
if (state.isEditMode) {
|
||||
return const _EditAppBar();
|
||||
} else if (state.selectedItems.isNotEmpty) {
|
||||
return const _SelectionAppBar();
|
||||
} else {
|
||||
return const _AppBar();
|
||||
}
|
||||
},
|
||||
),
|
||||
SliverToBoxAdapter(
|
||||
child: _BlocBuilder(
|
||||
buildWhen: (previous, current) =>
|
||||
previous.isLoading != current.isLoading,
|
||||
builder: (context, state) => state.isLoading
|
||||
? const LinearProgressIndicator()
|
||||
: const SizedBox(height: 4),
|
||||
),
|
||||
),
|
||||
_BlocBuilder(
|
||||
buildWhen: (previous, current) =>
|
||||
previous.isEditMode != current.isEditMode ||
|
||||
previous.scale != current.scale,
|
||||
builder: (context, state) {
|
||||
if (!state.isEditMode) {
|
||||
return SliverTransitionedScale(
|
||||
scale: state.scale,
|
||||
baseSliver: const _ContentList(),
|
||||
overlaySliver: const _ScalingList(),
|
||||
);
|
||||
} else {
|
||||
if (context.bloc.isCollectionCapabilityPermitted(
|
||||
CollectionCapability.manualSort)) {
|
||||
return const _EditContentList();
|
||||
} else {
|
||||
return const _UnmodifiableEditContentList();
|
||||
}
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
_BlocBuilder(
|
||||
buildWhen: (previous, current) =>
|
||||
previous.isEditBusy != current.isEditBusy,
|
||||
builder: (context, state) {
|
||||
if (state.isEditBusy) {
|
||||
return Container(
|
||||
color: Colors.black.withOpacity(.5),
|
||||
alignment: Alignment.center,
|
||||
child: const CircularProgressIndicator(),
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -18,8 +18,8 @@ class DialogScaffold extends StatelessWidget {
|
|||
Navigator.of(context).pop();
|
||||
}
|
||||
},
|
||||
child: WillPopScope(
|
||||
onWillPop: () => Future.value(canPop),
|
||||
child: PopScope(
|
||||
canPop: canPop,
|
||||
child: Scaffold(
|
||||
backgroundColor: Colors.transparent,
|
||||
body: GestureDetector(
|
||||
|
|
|
@ -107,10 +107,10 @@ class _WrappedExportCollectionDialogState
|
|||
key: _formKey,
|
||||
child: Container(
|
||||
constraints: const BoxConstraints.tightFor(width: 280),
|
||||
child: Column(
|
||||
child: const Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: const [
|
||||
children: [
|
||||
_NameTextField(),
|
||||
_ProviderDropdown(),
|
||||
SizedBox(height: 8),
|
||||
|
|
|
@ -230,7 +230,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
file,
|
||||
password: password,
|
||||
);
|
||||
await Clipboard.setData(ClipboardData(text: share.url));
|
||||
await Clipboard.setData(ClipboardData(text: share.url!));
|
||||
|
||||
if (getRawPlatform() == NpPlatform.android) {
|
||||
final textShare = AndroidTextShare(share.url!);
|
||||
|
|
|
@ -8,7 +8,6 @@ import 'package:nc_photos/controller/account_pref_controller.dart';
|
|||
import 'package:nc_photos/stream_util.dart';
|
||||
import 'package:nc_photos/theme.dart';
|
||||
import 'package:nc_photos/widget/account_picker_dialog.dart';
|
||||
import 'package:nc_photos/widget/translucent_sliver_app_bar.dart';
|
||||
import 'package:np_ui/np_ui.dart';
|
||||
|
||||
/// AppBar for home screens
|
||||
|
@ -36,6 +35,7 @@ class HomeSliverAppBar extends StatelessWidget {
|
|||
),
|
||||
scrolledUnderBackgroundColor:
|
||||
Theme.of(context).homeNavigationBarBackgroundColor,
|
||||
blurFilter: Theme.of(context).appBarBlurFilter,
|
||||
floating: true,
|
||||
automaticallyImplyLeading: false,
|
||||
actions: [
|
||||
|
|
|
@ -191,8 +191,7 @@ class _WrappedHomeCollectionsState extends State<_WrappedHomeCollections>
|
|||
childBorderRadius: BorderRadius.zero,
|
||||
indicatorAlignment: const Alignment(-.92, -.92),
|
||||
items: state.transformedItems,
|
||||
itemBuilder: (_, __, metadata) {
|
||||
final item = metadata as _Item;
|
||||
itemBuilder: (_, __, item) {
|
||||
return _BlocSelector<int?>(
|
||||
selector: (state) =>
|
||||
state.itemCounts[item.collection.id],
|
||||
|
@ -209,8 +208,7 @@ class _WrappedHomeCollectionsState extends State<_WrappedHomeCollections>
|
|||
onSelectionChange: (_, selected) {
|
||||
_bloc.add(_SetSelectedItems(items: selected.cast()));
|
||||
},
|
||||
onItemTap: (context, _, metadata) {
|
||||
final item = metadata as _Item;
|
||||
onItemTap: (context, _, item) {
|
||||
Navigator.of(context).pushNamed(
|
||||
CollectionBrowser.routeName,
|
||||
arguments:
|
||||
|
|
|
@ -128,10 +128,12 @@ class _ImageEditorState extends State<ImageEditor> {
|
|||
}
|
||||
|
||||
Widget _buildContent(BuildContext context) {
|
||||
return WillPopScope(
|
||||
onWillPop: () async {
|
||||
unawaited(_onBackButton(context));
|
||||
return false;
|
||||
return PopScope(
|
||||
canPop: false,
|
||||
onPopInvoked: (didPop) {
|
||||
if (!didPop) {
|
||||
_onBackButton(context);
|
||||
}
|
||||
},
|
||||
child: ColoredBox(
|
||||
color: Colors.black,
|
||||
|
|
|
@ -117,10 +117,10 @@ class _WrappedNewCollectionDialogState
|
|||
key: _formKey,
|
||||
child: Container(
|
||||
constraints: const BoxConstraints.tightFor(width: 280),
|
||||
child: Column(
|
||||
child: const Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: const [
|
||||
children: [
|
||||
_NameTextField(),
|
||||
_ProviderDropdown(),
|
||||
SizedBox(height: 8),
|
||||
|
|
|
@ -8,8 +8,8 @@ class ProcessingDialog extends StatelessWidget {
|
|||
|
||||
@override
|
||||
build(BuildContext context) {
|
||||
return WillPopScope(
|
||||
onWillPop: () => Future.value(false),
|
||||
return PopScope(
|
||||
canPop: false,
|
||||
child: AlertDialog(
|
||||
content: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
|
|
|
@ -28,6 +28,7 @@ abstract class SelectableItem {
|
|||
StaggeredTile get staggeredTile => const StaggeredTile.count(1, 1);
|
||||
}
|
||||
|
||||
@Deprecated("Use SelectableItemList widget")
|
||||
mixin SelectableItemStreamListMixin<T extends StatefulWidget> on State<T> {
|
||||
@override
|
||||
initState() {
|
||||
|
|
|
@ -146,80 +146,81 @@ class _WrappedAccountSettingsState extends State<_WrappedAccountSettings>
|
|||
},
|
||||
),
|
||||
],
|
||||
child: WillPopScope(
|
||||
onWillPop: () async => !_bloc.state.shouldReload,
|
||||
child: CustomScrollView(
|
||||
slivers: [
|
||||
SliverAppBar(
|
||||
pinned: true,
|
||||
title: Text(L10n.global().settingsAccountTitle),
|
||||
leading: _BlocSelector<bool>(
|
||||
selector: (state) => state.shouldReload,
|
||||
builder: (_, state) =>
|
||||
state ? const _DoneButton() : const BackButton(),
|
||||
child: _BlocSelector<bool>(
|
||||
selector: (state) => state.shouldReload,
|
||||
builder: (_, shouldReload) => PopScope(
|
||||
canPop: !shouldReload,
|
||||
child: CustomScrollView(
|
||||
slivers: [
|
||||
SliverAppBar(
|
||||
pinned: true,
|
||||
title: Text(L10n.global().settingsAccountTitle),
|
||||
leading:
|
||||
shouldReload ? const _DoneButton() : const BackButton(),
|
||||
),
|
||||
),
|
||||
SliverList(
|
||||
delegate: SliverChildListDelegate(
|
||||
[
|
||||
_BlocSelector<String?>(
|
||||
selector: (state) => state.label,
|
||||
builder: (context, state) => ListTile(
|
||||
title: Text(L10n.global().settingsAccountLabelTitle),
|
||||
subtitle: Text(state ??
|
||||
L10n.global().settingsAccountLabelDescription),
|
||||
onTap: () => _onLabelPressed(context),
|
||||
SliverList(
|
||||
delegate: SliverChildListDelegate(
|
||||
[
|
||||
_BlocSelector<String?>(
|
||||
selector: (state) => state.label,
|
||||
builder: (context, state) => ListTile(
|
||||
title: Text(L10n.global().settingsAccountLabelTitle),
|
||||
subtitle: Text(state ??
|
||||
L10n.global().settingsAccountLabelDescription),
|
||||
onTap: () => _onLabelPressed(context),
|
||||
),
|
||||
),
|
||||
),
|
||||
_BlocSelector<Account>(
|
||||
selector: (state) => state.account,
|
||||
builder: (context, state) => ListTile(
|
||||
title: Text(L10n.global().settingsIncludedFoldersTitle),
|
||||
subtitle:
|
||||
Text(state.roots.map((e) => "/$e").join("; ")),
|
||||
onTap: () => _onIncludedFoldersPressed(context),
|
||||
_BlocSelector<Account>(
|
||||
selector: (state) => state.account,
|
||||
builder: (context, state) => ListTile(
|
||||
title:
|
||||
Text(L10n.global().settingsIncludedFoldersTitle),
|
||||
subtitle:
|
||||
Text(state.roots.map((e) => "/$e").join("; ")),
|
||||
onTap: () => _onIncludedFoldersPressed(context),
|
||||
),
|
||||
),
|
||||
),
|
||||
_BlocSelector<String>(
|
||||
selector: (state) => state.shareFolder,
|
||||
builder: (context, state) => ListTile(
|
||||
title: Text(L10n.global().settingsShareFolderTitle),
|
||||
subtitle: Text("/$state"),
|
||||
onTap: () => _onShareFolderPressed(context),
|
||||
_BlocSelector<String>(
|
||||
selector: (state) => state.shareFolder,
|
||||
builder: (context, state) => ListTile(
|
||||
title: Text(L10n.global().settingsShareFolderTitle),
|
||||
subtitle: Text("/$state"),
|
||||
onTap: () => _onShareFolderPressed(context),
|
||||
),
|
||||
),
|
||||
),
|
||||
SettingsListCaption(
|
||||
label: L10n.global().settingsServerAppSectionTitle,
|
||||
),
|
||||
_BlocSelector<PersonProvider>(
|
||||
selector: (state) => state.personProvider,
|
||||
builder: (context, state) {
|
||||
if (_bloc.highlight ==
|
||||
AccountSettingsOption.personProvider) {
|
||||
return AnimatedBuilder(
|
||||
animation: _highlightAnimation,
|
||||
builder: (context, child) => ListTile(
|
||||
SettingsListCaption(
|
||||
label: L10n.global().settingsServerAppSectionTitle,
|
||||
),
|
||||
_BlocSelector<PersonProvider>(
|
||||
selector: (state) => state.personProvider,
|
||||
builder: (context, state) {
|
||||
if (_bloc.highlight ==
|
||||
AccountSettingsOption.personProvider) {
|
||||
return AnimatedBuilder(
|
||||
animation: _highlightAnimation,
|
||||
builder: (context, child) => ListTile(
|
||||
title: Text(
|
||||
L10n.global().settingsPersonProviderTitle),
|
||||
subtitle: Text(state.toUserString()),
|
||||
onTap: () => _onPersonProviderPressed(context),
|
||||
tileColor: _highlightAnimation.value,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return ListTile(
|
||||
title: Text(
|
||||
L10n.global().settingsPersonProviderTitle),
|
||||
subtitle: Text(state.toUserString()),
|
||||
onTap: () => _onPersonProviderPressed(context),
|
||||
tileColor: _highlightAnimation.value,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return ListTile(
|
||||
title:
|
||||
Text(L10n.global().settingsPersonProviderTitle),
|
||||
subtitle: Text(state.toUserString()),
|
||||
onTap: () => _onPersonProviderPressed(context),
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -62,8 +62,8 @@ class _SignInState extends State<SignIn> {
|
|||
|
||||
Widget _buildContent(BuildContext context) {
|
||||
if (_isConnecting) {
|
||||
return Stack(
|
||||
children: const [
|
||||
return const Stack(
|
||||
children: [
|
||||
Positioned(
|
||||
left: 0,
|
||||
right: 0,
|
||||
|
|
|
@ -70,8 +70,8 @@ class _SplashState extends State<Splash> {
|
|||
@override
|
||||
build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: WillPopScope(
|
||||
onWillPop: () => Future.value(false),
|
||||
body: PopScope(
|
||||
canPop: false,
|
||||
child: Builder(builder: (context) => _buildContent(context)),
|
||||
),
|
||||
);
|
||||
|
|
|
@ -1,708 +0,0 @@
|
|||
// ignore_for_file: deprecated_member_use, unnecessary_null_comparison, curly_braces_in_flow_control_structures, deprecated_member_use_from_same_package
|
||||
|
||||
import 'dart:math' as math;
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/rendering.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:nc_photos/theme.dart';
|
||||
|
||||
/// A translucent sliver app bar used in home pages
|
||||
///
|
||||
/// This calss is adopted from Flutter's SliverAppBar
|
||||
class TranslucentSliverAppBar extends StatefulWidget {
|
||||
/// Creates a material design app bar that can be placed in a [CustomScrollView].
|
||||
///
|
||||
/// The arguments [forceElevated], [primary], [floating], [pinned], [snap]
|
||||
/// and [automaticallyImplyLeading] must not be null.
|
||||
const TranslucentSliverAppBar({
|
||||
Key? key,
|
||||
this.leading,
|
||||
this.automaticallyImplyLeading = true,
|
||||
this.title,
|
||||
this.actions,
|
||||
this.flexibleSpace,
|
||||
this.bottom,
|
||||
this.elevation,
|
||||
this.shadowColor,
|
||||
this.surfaceTintColor,
|
||||
this.forceElevated = false,
|
||||
this.backgroundColor,
|
||||
this.scrolledUnderBackgroundColor,
|
||||
this.foregroundColor,
|
||||
@Deprecated(
|
||||
'This property is no longer used, please use systemOverlayStyle instead. '
|
||||
'This feature was deprecated after v2.4.0-0.0.pre.',
|
||||
)
|
||||
this.brightness,
|
||||
this.iconTheme,
|
||||
this.actionsIconTheme,
|
||||
@Deprecated(
|
||||
'This property is no longer used, please use toolbarTextStyle and titleTextStyle instead. '
|
||||
'This feature was deprecated after v2.4.0-0.0.pre.',
|
||||
)
|
||||
this.textTheme,
|
||||
this.primary = true,
|
||||
this.centerTitle,
|
||||
this.excludeHeaderSemantics = false,
|
||||
this.titleSpacing,
|
||||
this.collapsedHeight,
|
||||
this.expandedHeight,
|
||||
this.floating = false,
|
||||
this.pinned = false,
|
||||
this.snap = false,
|
||||
this.stretch = false,
|
||||
this.stretchTriggerOffset = 100.0,
|
||||
this.onStretchTrigger,
|
||||
this.shape,
|
||||
this.toolbarHeight = kToolbarHeight,
|
||||
this.leadingWidth,
|
||||
@Deprecated(
|
||||
'This property is obsolete and is false by default. '
|
||||
'This feature was deprecated after v2.4.0-0.0.pre.',
|
||||
)
|
||||
this.backwardsCompatibility,
|
||||
this.toolbarTextStyle,
|
||||
this.titleTextStyle,
|
||||
this.systemOverlayStyle,
|
||||
}) : assert(automaticallyImplyLeading != null),
|
||||
assert(forceElevated != null),
|
||||
assert(primary != null),
|
||||
assert(floating != null),
|
||||
assert(pinned != null),
|
||||
assert(snap != null),
|
||||
assert(stretch != null),
|
||||
assert(toolbarHeight != null),
|
||||
assert(floating || !snap,
|
||||
'The "snap" argument only makes sense for floating app bars.'),
|
||||
assert(stretchTriggerOffset > 0.0),
|
||||
assert(collapsedHeight == null || collapsedHeight >= toolbarHeight,
|
||||
'The "collapsedHeight" argument has to be larger than or equal to [toolbarHeight].'),
|
||||
super(key: key);
|
||||
|
||||
/// {@macro flutter.material.appbar.leading}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final Widget? leading;
|
||||
|
||||
/// {@macro flutter.material.appbar.automaticallyImplyLeading}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final bool automaticallyImplyLeading;
|
||||
|
||||
/// {@macro flutter.material.appbar.title}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final Widget? title;
|
||||
|
||||
/// {@macro flutter.material.appbar.actions}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final List<Widget>? actions;
|
||||
|
||||
/// {@macro flutter.material.appbar.flexibleSpace}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final Widget? flexibleSpace;
|
||||
|
||||
/// {@macro flutter.material.appbar.bottom}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final PreferredSizeWidget? bottom;
|
||||
|
||||
/// {@macro flutter.material.appbar.elevation}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final double? elevation;
|
||||
|
||||
/// {@macro flutter.material.appbar.shadowColor}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final Color? shadowColor;
|
||||
|
||||
/// {@macro flutter.material.appbar.surfaceTintColor}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final Color? surfaceTintColor;
|
||||
|
||||
/// Whether to show the shadow appropriate for the [elevation] even if the
|
||||
/// content is not scrolled under the [AppBar].
|
||||
///
|
||||
/// Defaults to false, meaning that the [elevation] is only applied when the
|
||||
/// [AppBar] is being displayed over content that is scrolled under it.
|
||||
///
|
||||
/// When set to true, the [elevation] is applied regardless.
|
||||
///
|
||||
/// Ignored when [elevation] is zero.
|
||||
final bool forceElevated;
|
||||
|
||||
/// {@macro flutter.material.appbar.backgroundColor}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final Color? backgroundColor;
|
||||
|
||||
final Color? scrolledUnderBackgroundColor;
|
||||
|
||||
/// {@macro flutter.material.appbar.foregroundColor}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final Color? foregroundColor;
|
||||
|
||||
/// {@macro flutter.material.appbar.brightness}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
@Deprecated(
|
||||
'This property is no longer used, please use systemOverlayStyle instead. '
|
||||
'This feature was deprecated after v2.4.0-0.0.pre.',
|
||||
)
|
||||
final Brightness? brightness;
|
||||
|
||||
/// {@macro flutter.material.appbar.iconTheme}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final IconThemeData? iconTheme;
|
||||
|
||||
/// {@macro flutter.material.appbar.actionsIconTheme}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final IconThemeData? actionsIconTheme;
|
||||
|
||||
/// {@macro flutter.material.appbar.textTheme}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
@Deprecated(
|
||||
'This property is no longer used, please use toolbarTextStyle and titleTextStyle instead. '
|
||||
'This feature was deprecated after v2.4.0-0.0.pre.',
|
||||
)
|
||||
final TextTheme? textTheme;
|
||||
|
||||
/// {@macro flutter.material.appbar.primary}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final bool primary;
|
||||
|
||||
/// {@macro flutter.material.appbar.centerTitle}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final bool? centerTitle;
|
||||
|
||||
/// {@macro flutter.material.appbar.excludeHeaderSemantics}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final bool excludeHeaderSemantics;
|
||||
|
||||
/// {@macro flutter.material.appbar.titleSpacing}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final double? titleSpacing;
|
||||
|
||||
/// Defines the height of the app bar when it is collapsed.
|
||||
///
|
||||
/// By default, the collapsed height is [toolbarHeight]. If [bottom] widget is
|
||||
/// specified, then its height from [PreferredSizeWidget.preferredSize] is
|
||||
/// added to the height. If [primary] is true, then the [MediaQuery] top
|
||||
/// padding, [EdgeInsets.top] of [MediaQueryData.padding], is added as well.
|
||||
///
|
||||
/// If [pinned] and [floating] are true, with [bottom] set, the default
|
||||
/// collapsed height is only the height of [PreferredSizeWidget.preferredSize]
|
||||
/// with the [MediaQuery] top padding.
|
||||
final double? collapsedHeight;
|
||||
|
||||
/// The size of the app bar when it is fully expanded.
|
||||
///
|
||||
/// By default, the total height of the toolbar and the bottom widget (if
|
||||
/// any). If a [flexibleSpace] widget is specified this height should be big
|
||||
/// enough to accommodate whatever that widget contains.
|
||||
///
|
||||
/// This does not include the status bar height (which will be automatically
|
||||
/// included if [primary] is true).
|
||||
final double? expandedHeight;
|
||||
|
||||
/// Whether the app bar should become visible as soon as the user scrolls
|
||||
/// towards the app bar.
|
||||
///
|
||||
/// Otherwise, the user will need to scroll near the top of the scroll view to
|
||||
/// reveal the app bar.
|
||||
///
|
||||
/// If [snap] is true then a scroll that exposes the app bar will trigger an
|
||||
/// animation that slides the entire app bar into view. Similarly if a scroll
|
||||
/// dismisses the app bar, the animation will slide it completely out of view.
|
||||
///
|
||||
/// ## Animated Examples
|
||||
///
|
||||
/// The following animations show how the app bar changes its scrolling
|
||||
/// behavior based on the value of this property.
|
||||
///
|
||||
/// * App bar with [floating] set to false:
|
||||
/// {@animation 476 400 https://flutter.github.io/assets-for-api-docs/assets/material/app_bar.mp4}
|
||||
/// * App bar with [floating] set to true:
|
||||
/// {@animation 476 400 https://flutter.github.io/assets-for-api-docs/assets/material/app_bar_floating.mp4}
|
||||
///
|
||||
/// See also:
|
||||
///
|
||||
/// * [SliverAppBar] for more animated examples of how this property changes the
|
||||
/// behavior of the app bar in combination with [pinned] and [snap].
|
||||
final bool floating;
|
||||
|
||||
/// Whether the app bar should remain visible at the start of the scroll view.
|
||||
///
|
||||
/// The app bar can still expand and contract as the user scrolls, but it will
|
||||
/// remain visible rather than being scrolled out of view.
|
||||
///
|
||||
/// ## Animated Examples
|
||||
///
|
||||
/// The following animations show how the app bar changes its scrolling
|
||||
/// behavior based on the value of this property.
|
||||
///
|
||||
/// * App bar with [pinned] set to false:
|
||||
/// {@animation 476 400 https://flutter.github.io/assets-for-api-docs/assets/material/app_bar.mp4}
|
||||
/// * App bar with [pinned] set to true:
|
||||
/// {@animation 476 400 https://flutter.github.io/assets-for-api-docs/assets/material/app_bar_pinned.mp4}
|
||||
///
|
||||
/// See also:
|
||||
///
|
||||
/// * [SliverAppBar] for more animated examples of how this property changes the
|
||||
/// behavior of the app bar in combination with [floating].
|
||||
final bool pinned;
|
||||
|
||||
/// {@macro flutter.material.appbar.shape}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final ShapeBorder? shape;
|
||||
|
||||
/// If [snap] and [floating] are true then the floating app bar will "snap"
|
||||
/// into view.
|
||||
///
|
||||
/// If [snap] is true then a scroll that exposes the floating app bar will
|
||||
/// trigger an animation that slides the entire app bar into view. Similarly
|
||||
/// if a scroll dismisses the app bar, the animation will slide the app bar
|
||||
/// completely out of view. Additionally, setting [snap] to true will fully
|
||||
/// expand the floating app bar when the framework tries to reveal the
|
||||
/// contents of the app bar by calling [RenderObject.showOnScreen]. For
|
||||
/// example, when a [TextField] in the floating app bar gains focus, if [snap]
|
||||
/// is true, the framework will always fully expand the floating app bar, in
|
||||
/// order to reveal the focused [TextField].
|
||||
///
|
||||
/// Snapping only applies when the app bar is floating, not when the app bar
|
||||
/// appears at the top of its scroll view.
|
||||
///
|
||||
/// ## Animated Examples
|
||||
///
|
||||
/// The following animations show how the app bar changes its scrolling
|
||||
/// behavior based on the value of this property.
|
||||
///
|
||||
/// * App bar with [snap] set to false:
|
||||
/// {@animation 476 400 https://flutter.github.io/assets-for-api-docs/assets/material/app_bar_floating.mp4}
|
||||
/// * App bar with [snap] set to true:
|
||||
/// {@animation 476 400 https://flutter.github.io/assets-for-api-docs/assets/material/app_bar_floating_snap.mp4}
|
||||
///
|
||||
/// See also:
|
||||
///
|
||||
/// * [SliverAppBar] for more animated examples of how this property changes the
|
||||
/// behavior of the app bar in combination with [pinned] and [floating].
|
||||
final bool snap;
|
||||
|
||||
/// Whether the app bar should stretch to fill the over-scroll area.
|
||||
///
|
||||
/// The app bar can still expand and contract as the user scrolls, but it will
|
||||
/// also stretch when the user over-scrolls.
|
||||
final bool stretch;
|
||||
|
||||
/// The offset of overscroll required to activate [onStretchTrigger].
|
||||
///
|
||||
/// This defaults to 100.0.
|
||||
final double stretchTriggerOffset;
|
||||
|
||||
/// The callback function to be executed when a user over-scrolls to the
|
||||
/// offset specified by [stretchTriggerOffset].
|
||||
final AsyncCallback? onStretchTrigger;
|
||||
|
||||
/// {@macro flutter.material.appbar.toolbarHeight}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final double toolbarHeight;
|
||||
|
||||
/// {@macro flutter.material.appbar.leadingWidth}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final double? leadingWidth;
|
||||
|
||||
/// {@macro flutter.material.appbar.backwardsCompatibility}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
@Deprecated(
|
||||
'This property is obsolete and is false by default. '
|
||||
'This feature was deprecated after v2.4.0-0.0.pre.',
|
||||
)
|
||||
final bool? backwardsCompatibility;
|
||||
|
||||
/// {@macro flutter.material.appbar.toolbarTextStyle}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final TextStyle? toolbarTextStyle;
|
||||
|
||||
/// {@macro flutter.material.appbar.titleTextStyle}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final TextStyle? titleTextStyle;
|
||||
|
||||
/// {@macro flutter.material.appbar.systemOverlayStyle}
|
||||
///
|
||||
/// This property is used to configure an [AppBar].
|
||||
final SystemUiOverlayStyle? systemOverlayStyle;
|
||||
|
||||
@override
|
||||
State<TranslucentSliverAppBar> createState() => _SliverAppBarState();
|
||||
}
|
||||
|
||||
class _SliverAppBarState extends State<TranslucentSliverAppBar>
|
||||
with TickerProviderStateMixin {
|
||||
FloatingHeaderSnapConfiguration? _snapConfiguration;
|
||||
OverScrollHeaderStretchConfiguration? _stretchConfiguration;
|
||||
PersistentHeaderShowOnScreenConfiguration? _showOnScreenConfiguration;
|
||||
|
||||
void _updateSnapConfiguration() {
|
||||
if (widget.snap && widget.floating) {
|
||||
_snapConfiguration = FloatingHeaderSnapConfiguration(
|
||||
curve: Curves.easeOut,
|
||||
duration: const Duration(milliseconds: 200),
|
||||
);
|
||||
} else {
|
||||
_snapConfiguration = null;
|
||||
}
|
||||
|
||||
_showOnScreenConfiguration = widget.floating & widget.snap
|
||||
? const PersistentHeaderShowOnScreenConfiguration(
|
||||
minShowOnScreenExtent: double.infinity)
|
||||
: null;
|
||||
}
|
||||
|
||||
void _updateStretchConfiguration() {
|
||||
if (widget.stretch) {
|
||||
_stretchConfiguration = OverScrollHeaderStretchConfiguration(
|
||||
stretchTriggerOffset: widget.stretchTriggerOffset,
|
||||
onStretchTrigger: widget.onStretchTrigger,
|
||||
);
|
||||
} else {
|
||||
_stretchConfiguration = null;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_updateSnapConfiguration();
|
||||
_updateStretchConfiguration();
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(TranslucentSliverAppBar oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
if (widget.snap != oldWidget.snap || widget.floating != oldWidget.floating)
|
||||
_updateSnapConfiguration();
|
||||
if (widget.stretch != oldWidget.stretch) _updateStretchConfiguration();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
assert(!widget.primary || debugCheckHasMediaQuery(context));
|
||||
final double bottomHeight = widget.bottom?.preferredSize.height ?? 0.0;
|
||||
final double topPadding =
|
||||
widget.primary ? MediaQuery.of(context).padding.top : 0.0;
|
||||
final double collapsedHeight =
|
||||
(widget.pinned && widget.floating && widget.bottom != null)
|
||||
? (widget.collapsedHeight ?? 0.0) + bottomHeight + topPadding
|
||||
: (widget.collapsedHeight ?? widget.toolbarHeight) +
|
||||
bottomHeight +
|
||||
topPadding;
|
||||
|
||||
return MediaQuery.removePadding(
|
||||
context: context,
|
||||
removeBottom: true,
|
||||
child: SliverPersistentHeader(
|
||||
floating: widget.floating,
|
||||
pinned: widget.pinned,
|
||||
delegate: _SliverAppBarDelegate(
|
||||
vsync: this,
|
||||
leading: widget.leading,
|
||||
automaticallyImplyLeading: widget.automaticallyImplyLeading,
|
||||
title: widget.title,
|
||||
actions: widget.actions,
|
||||
flexibleSpace: widget.flexibleSpace,
|
||||
bottom: widget.bottom,
|
||||
elevation: widget.elevation,
|
||||
shadowColor: widget.shadowColor,
|
||||
surfaceTintColor: widget.surfaceTintColor,
|
||||
forceElevated: widget.forceElevated,
|
||||
backgroundColor: widget.backgroundColor,
|
||||
scrolledUnderBackgroundColor: widget.scrolledUnderBackgroundColor,
|
||||
foregroundColor: widget.foregroundColor,
|
||||
brightness: widget.brightness,
|
||||
iconTheme: widget.iconTheme,
|
||||
actionsIconTheme: widget.actionsIconTheme,
|
||||
textTheme: widget.textTheme,
|
||||
primary: widget.primary,
|
||||
centerTitle: widget.centerTitle,
|
||||
excludeHeaderSemantics: widget.excludeHeaderSemantics,
|
||||
titleSpacing: widget.titleSpacing,
|
||||
expandedHeight: widget.expandedHeight,
|
||||
collapsedHeight: collapsedHeight,
|
||||
topPadding: topPadding,
|
||||
floating: widget.floating,
|
||||
pinned: widget.pinned,
|
||||
shape: widget.shape,
|
||||
snapConfiguration: _snapConfiguration,
|
||||
stretchConfiguration: _stretchConfiguration,
|
||||
showOnScreenConfiguration: _showOnScreenConfiguration,
|
||||
toolbarHeight: widget.toolbarHeight,
|
||||
leadingWidth: widget.leadingWidth,
|
||||
backwardsCompatibility: widget.backwardsCompatibility,
|
||||
toolbarTextStyle: widget.toolbarTextStyle,
|
||||
titleTextStyle: widget.titleTextStyle,
|
||||
systemOverlayStyle: widget.systemOverlayStyle,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _SliverAppBarDelegate extends SliverPersistentHeaderDelegate {
|
||||
_SliverAppBarDelegate({
|
||||
required this.leading,
|
||||
required this.automaticallyImplyLeading,
|
||||
required this.title,
|
||||
required this.actions,
|
||||
required this.flexibleSpace,
|
||||
required this.bottom,
|
||||
required this.elevation,
|
||||
required this.shadowColor,
|
||||
required this.surfaceTintColor,
|
||||
required this.forceElevated,
|
||||
required this.backgroundColor,
|
||||
required this.scrolledUnderBackgroundColor,
|
||||
required this.foregroundColor,
|
||||
required this.brightness,
|
||||
required this.iconTheme,
|
||||
required this.actionsIconTheme,
|
||||
required this.textTheme,
|
||||
required this.primary,
|
||||
required this.centerTitle,
|
||||
required this.excludeHeaderSemantics,
|
||||
required this.titleSpacing,
|
||||
required this.expandedHeight,
|
||||
required this.collapsedHeight,
|
||||
required this.topPadding,
|
||||
required this.floating,
|
||||
required this.pinned,
|
||||
required this.vsync,
|
||||
required this.snapConfiguration,
|
||||
required this.stretchConfiguration,
|
||||
required this.showOnScreenConfiguration,
|
||||
required this.shape,
|
||||
required this.toolbarHeight,
|
||||
required this.leadingWidth,
|
||||
required this.backwardsCompatibility,
|
||||
required this.toolbarTextStyle,
|
||||
required this.titleTextStyle,
|
||||
required this.systemOverlayStyle,
|
||||
}) : assert(primary || topPadding == 0.0),
|
||||
assert(
|
||||
!floating ||
|
||||
(snapConfiguration == null &&
|
||||
showOnScreenConfiguration == null) ||
|
||||
vsync != null,
|
||||
'vsync cannot be null when snapConfiguration or showOnScreenConfiguration is not null, and floating is true',
|
||||
),
|
||||
_bottomHeight = bottom?.preferredSize.height ?? 0.0;
|
||||
|
||||
final Widget? leading;
|
||||
final bool automaticallyImplyLeading;
|
||||
final Widget? title;
|
||||
final List<Widget>? actions;
|
||||
final Widget? flexibleSpace;
|
||||
final PreferredSizeWidget? bottom;
|
||||
final double? elevation;
|
||||
final Color? shadowColor;
|
||||
final Color? surfaceTintColor;
|
||||
final bool forceElevated;
|
||||
final Color? backgroundColor;
|
||||
final Color? scrolledUnderBackgroundColor;
|
||||
final Color? foregroundColor;
|
||||
final Brightness? brightness;
|
||||
final IconThemeData? iconTheme;
|
||||
final IconThemeData? actionsIconTheme;
|
||||
final TextTheme? textTheme;
|
||||
final bool primary;
|
||||
final bool? centerTitle;
|
||||
final bool excludeHeaderSemantics;
|
||||
final double? titleSpacing;
|
||||
final double? expandedHeight;
|
||||
final double collapsedHeight;
|
||||
final double topPadding;
|
||||
final bool floating;
|
||||
final bool pinned;
|
||||
final ShapeBorder? shape;
|
||||
final double? toolbarHeight;
|
||||
final double? leadingWidth;
|
||||
final bool? backwardsCompatibility;
|
||||
final TextStyle? toolbarTextStyle;
|
||||
final TextStyle? titleTextStyle;
|
||||
final SystemUiOverlayStyle? systemOverlayStyle;
|
||||
final double _bottomHeight;
|
||||
|
||||
@override
|
||||
double get minExtent => collapsedHeight;
|
||||
|
||||
@override
|
||||
double get maxExtent => math.max(
|
||||
topPadding +
|
||||
(expandedHeight ?? (toolbarHeight ?? kToolbarHeight) + _bottomHeight),
|
||||
minExtent);
|
||||
|
||||
@override
|
||||
final TickerProvider vsync;
|
||||
|
||||
@override
|
||||
final FloatingHeaderSnapConfiguration? snapConfiguration;
|
||||
|
||||
@override
|
||||
final OverScrollHeaderStretchConfiguration? stretchConfiguration;
|
||||
|
||||
@override
|
||||
final PersistentHeaderShowOnScreenConfiguration? showOnScreenConfiguration;
|
||||
|
||||
@override
|
||||
Widget build(
|
||||
BuildContext context, double shrinkOffset, bool overlapsContent) {
|
||||
final double visibleMainHeight = maxExtent - shrinkOffset - topPadding;
|
||||
final double extraToolbarHeight = math.max(
|
||||
minExtent -
|
||||
_bottomHeight -
|
||||
topPadding -
|
||||
(toolbarHeight ?? kToolbarHeight),
|
||||
0.0);
|
||||
final double visibleToolbarHeight =
|
||||
visibleMainHeight - _bottomHeight - extraToolbarHeight;
|
||||
|
||||
final bool isScrolledUnder =
|
||||
overlapsContent || (pinned && shrinkOffset > maxExtent - minExtent);
|
||||
final bool isPinnedWithOpacityFade =
|
||||
pinned && floating && bottom != null && extraToolbarHeight == 0.0;
|
||||
final double toolbarOpacity = !pinned || isPinnedWithOpacityFade
|
||||
? (visibleToolbarHeight / (toolbarHeight ?? kToolbarHeight))
|
||||
.clamp(0.0, 1.0)
|
||||
: 1.0;
|
||||
|
||||
final Widget appBar = FlexibleSpaceBar.createSettings(
|
||||
minExtent: minExtent,
|
||||
maxExtent: maxExtent,
|
||||
currentExtent: math.max(minExtent, maxExtent - shrinkOffset),
|
||||
toolbarOpacity: toolbarOpacity,
|
||||
isScrolledUnder: isScrolledUnder,
|
||||
child: Stack(
|
||||
children: [
|
||||
SizedBox(
|
||||
width: double.infinity,
|
||||
height: math.max(minExtent, maxExtent - shrinkOffset),
|
||||
child: ClipRect(
|
||||
child: BackdropFilter(
|
||||
filter: Theme.of(context).appBarBlurFilter,
|
||||
child: const ColoredBox(
|
||||
color: Colors.transparent,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
AppBar(
|
||||
leading: leading,
|
||||
automaticallyImplyLeading: automaticallyImplyLeading,
|
||||
title: title,
|
||||
actions: actions,
|
||||
flexibleSpace: (title == null &&
|
||||
flexibleSpace != null &&
|
||||
!excludeHeaderSemantics)
|
||||
? Semantics(
|
||||
header: true,
|
||||
child: flexibleSpace,
|
||||
)
|
||||
: flexibleSpace,
|
||||
bottom: bottom,
|
||||
elevation: forceElevated || isScrolledUnder ? elevation : 0.0,
|
||||
scrolledUnderElevation: 0,
|
||||
shadowColor: shadowColor,
|
||||
surfaceTintColor: surfaceTintColor,
|
||||
backgroundColor: isScrolledUnder
|
||||
? scrolledUnderBackgroundColor
|
||||
: backgroundColor,
|
||||
foregroundColor: foregroundColor,
|
||||
brightness: brightness,
|
||||
iconTheme: iconTheme,
|
||||
actionsIconTheme: actionsIconTheme,
|
||||
textTheme: textTheme,
|
||||
primary: primary,
|
||||
centerTitle: centerTitle,
|
||||
excludeHeaderSemantics: excludeHeaderSemantics,
|
||||
titleSpacing: titleSpacing,
|
||||
shape: shape,
|
||||
toolbarOpacity: toolbarOpacity,
|
||||
bottomOpacity: pinned
|
||||
? 1.0
|
||||
: ((visibleMainHeight / _bottomHeight).clamp(0.0, 1.0)),
|
||||
toolbarHeight: toolbarHeight,
|
||||
leadingWidth: leadingWidth,
|
||||
backwardsCompatibility: backwardsCompatibility,
|
||||
toolbarTextStyle: toolbarTextStyle,
|
||||
titleTextStyle: titleTextStyle,
|
||||
systemOverlayStyle: systemOverlayStyle,
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
return appBar;
|
||||
}
|
||||
|
||||
@override
|
||||
bool shouldRebuild(covariant _SliverAppBarDelegate oldDelegate) {
|
||||
return leading != oldDelegate.leading ||
|
||||
automaticallyImplyLeading != oldDelegate.automaticallyImplyLeading ||
|
||||
title != oldDelegate.title ||
|
||||
actions != oldDelegate.actions ||
|
||||
flexibleSpace != oldDelegate.flexibleSpace ||
|
||||
bottom != oldDelegate.bottom ||
|
||||
_bottomHeight != oldDelegate._bottomHeight ||
|
||||
elevation != oldDelegate.elevation ||
|
||||
shadowColor != oldDelegate.shadowColor ||
|
||||
backgroundColor != oldDelegate.backgroundColor ||
|
||||
scrolledUnderBackgroundColor !=
|
||||
oldDelegate.scrolledUnderBackgroundColor ||
|
||||
foregroundColor != oldDelegate.foregroundColor ||
|
||||
brightness != oldDelegate.brightness ||
|
||||
iconTheme != oldDelegate.iconTheme ||
|
||||
actionsIconTheme != oldDelegate.actionsIconTheme ||
|
||||
textTheme != oldDelegate.textTheme ||
|
||||
primary != oldDelegate.primary ||
|
||||
centerTitle != oldDelegate.centerTitle ||
|
||||
titleSpacing != oldDelegate.titleSpacing ||
|
||||
expandedHeight != oldDelegate.expandedHeight ||
|
||||
topPadding != oldDelegate.topPadding ||
|
||||
pinned != oldDelegate.pinned ||
|
||||
floating != oldDelegate.floating ||
|
||||
vsync != oldDelegate.vsync ||
|
||||
snapConfiguration != oldDelegate.snapConfiguration ||
|
||||
stretchConfiguration != oldDelegate.stretchConfiguration ||
|
||||
showOnScreenConfiguration != oldDelegate.showOnScreenConfiguration ||
|
||||
forceElevated != oldDelegate.forceElevated ||
|
||||
toolbarHeight != oldDelegate.toolbarHeight ||
|
||||
leadingWidth != oldDelegate.leadingWidth ||
|
||||
backwardsCompatibility != oldDelegate.backwardsCompatibility ||
|
||||
toolbarTextStyle != oldDelegate.toolbarTextStyle ||
|
||||
titleTextStyle != oldDelegate.titleTextStyle ||
|
||||
systemOverlayStyle != oldDelegate.systemOverlayStyle;
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return '${describeIdentity(this)}(topPadding: ${topPadding.toStringAsFixed(1)}, bottomHeight: ${_bottomHeight.toStringAsFixed(1)}, ...)';
|
||||
}
|
||||
}
|
376
app/pubspec.lock
376
app/pubspec.lock
|
@ -5,26 +5,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: _fe_analyzer_shared
|
||||
sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
|
||||
sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "61.0.0"
|
||||
version: "64.0.0"
|
||||
analyzer:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: analyzer
|
||||
sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
|
||||
sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.13.0"
|
||||
analyzer_plugin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: analyzer_plugin
|
||||
sha256: c1d5f167683de03d5ab6c3b53fc9aeefc5d59476e7810ba7bbddff50c6f4392d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.11.2"
|
||||
version: "6.2.0"
|
||||
android_intent_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -34,14 +26,6 @@ packages:
|
|||
url: "https://gitlab.com/nc-photos/plus_plugins"
|
||||
source: git
|
||||
version: "3.1.1"
|
||||
ansicolor:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ansicolor
|
||||
sha256: "607f8fa9786f392043f169898923e6c59b4518242b68b8862eb8a8b7d9c30b4a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -54,10 +38,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: async
|
||||
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
|
||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.10.0"
|
||||
version: "2.11.0"
|
||||
battery_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -110,10 +94,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: build
|
||||
sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777"
|
||||
sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.1"
|
||||
version: "2.4.1"
|
||||
build_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -126,34 +110,34 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: build_daemon
|
||||
sha256: "757153e5d9cd88253cb13f28c2fb55a537dc31fefd98137549895b5beb7c6169"
|
||||
sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.1"
|
||||
version: "4.0.1"
|
||||
build_resolvers:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_resolvers
|
||||
sha256: "687cf90a3951affac1bd5f9ecb5e3e90b60487f3d9cdc359bb310f8876bb02a6"
|
||||
sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.10"
|
||||
version: "2.4.2"
|
||||
build_runner:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: build_runner
|
||||
sha256: b0a8a7b8a76c493e85f1b84bffa0588859a06197863dba8c9036b15581fd9727
|
||||
sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.3"
|
||||
version: "2.4.9"
|
||||
build_runner_core:
|
||||
dependency: transitive
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: build_runner_core
|
||||
sha256: "0671ad4162ed510b70d0eb4ad6354c249f8429cab4ae7a4cec86bbc2886eb76e"
|
||||
sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.2.7+1"
|
||||
version: "7.2.10"
|
||||
built_collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -174,34 +158,34 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: cached_network_image
|
||||
sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15
|
||||
sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.3"
|
||||
version: "3.3.1"
|
||||
cached_network_image_platform_interface:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: cached_network_image_platform_interface
|
||||
sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7
|
||||
sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
version: "4.0.0"
|
||||
cached_network_image_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image_web
|
||||
sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0
|
||||
sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
version: "1.2.0"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: characters
|
||||
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
|
||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
version: "1.3.0"
|
||||
checked_yaml:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -238,10 +222,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: collection
|
||||
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.17.0"
|
||||
version: "1.18.0"
|
||||
connectivity_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -308,30 +292,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.17.3"
|
||||
dart_code_metrics:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: dart_code_metrics
|
||||
sha256: "1dc1fa763b73ed52147bd91b015d81903edc3f227b77b1672fcddba43390ed18"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.7.5"
|
||||
dart_code_metrics_presets:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dart_code_metrics_presets
|
||||
sha256: b71eadf02a3787ebd5c887623f83f6fdc204d45c75a081bd636c4104b3fd8b73
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.0"
|
||||
dart_style:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dart_style
|
||||
sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4"
|
||||
sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.4"
|
||||
version: "2.3.6"
|
||||
dbus:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -385,18 +353,18 @@ packages:
|
|||
dependency: "direct dev"
|
||||
description:
|
||||
name: drift
|
||||
sha256: "21abd7b1c1a637a264f58f9f05c7b910d29c204aab1cbfcb4d9fada1e98a9303"
|
||||
sha256: b50a8342c6ddf05be53bda1d246404cbad101b64dc73e8d6d1ac1090d119b4e2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.8.0"
|
||||
version: "2.15.0"
|
||||
dynamic_color:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: dynamic_color
|
||||
sha256: de4798a7069121aee12d5895315680258415de9b00e717723a1bd73d58f0126d
|
||||
sha256: eae98052fa6e2826bdac3dd2e921c6ce2903be15c6b7f8b6d8a5d49b5086298d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.6.6"
|
||||
version: "1.7.0"
|
||||
equatable:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -458,10 +426,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flex_seed_scheme
|
||||
sha256: e4168a6fc88a3e5bc3d6b7a748c6a6083eedc193d343ddc26bbad7fb1b258555
|
||||
sha256: "4cee2f1d07259f77e8b36f4ec5f35499d19e74e17c7dce5b819554914082bc01"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
version: "1.5.0"
|
||||
flutter:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
|
@ -480,26 +448,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_bloc
|
||||
sha256: e74efb89ee6945bcbce74a5b3a5a3376b088e5f21f55c263fc38cbdc6237faae
|
||||
sha256: f0ecf6e6eb955193ca60af2d5ca39565a86b8a142452c5b24d96fb477428f4d2
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.1.3"
|
||||
flutter_blurhash:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_blurhash
|
||||
sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.0"
|
||||
version: "8.1.5"
|
||||
flutter_cache_manager:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_cache_manager
|
||||
sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3"
|
||||
sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.0"
|
||||
version: "3.3.1"
|
||||
flutter_colorpicker:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -581,10 +541,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: flutter_map
|
||||
sha256: "09010e452bcd8c57ade1b936b79643c4fd599f93b00d1696630f0b919b6f374a"
|
||||
sha256: cda8d72135b697f519287258b5294a57ce2f2a5ebf234f0e406aad4dc14c9399
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
version: "6.1.0"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -624,10 +584,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: fluttertoast
|
||||
sha256: "474f7d506230897a3cd28c965ec21c5328ae5605fc9c400cd330e9e9d6ac175c"
|
||||
sha256: "81b68579e23fcbcada2db3d50302813d2371664afe6165bc78148050ab94bf66"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.2.2"
|
||||
version: "8.2.5"
|
||||
frontend_server_client:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -645,7 +605,7 @@ packages:
|
|||
source: hosted
|
||||
version: "2.1.2"
|
||||
google_maps_flutter:
|
||||
dependency: "direct main"
|
||||
dependency: transitive
|
||||
description:
|
||||
name: google_maps_flutter
|
||||
sha256: abefcb1e5e5c96bdd8084939dda555257af272c7972902ca46d5631092c1df68
|
||||
|
@ -704,10 +664,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: http
|
||||
sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
|
||||
sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.13.6"
|
||||
version: "1.2.0"
|
||||
http_multi_server:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -737,10 +697,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: intl
|
||||
sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91"
|
||||
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.17.0"
|
||||
version: "0.18.1"
|
||||
io:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -786,10 +746,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: latlong2
|
||||
sha256: "08ef7282ba9f76e8495e49e2dc4d653015ac929dce5f92b375a415d30b407ea0"
|
||||
sha256: "98227922caf49e6056f91b6c56945ea1c7b166f28ffcd5fb8e72fc0b453cc8fe"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.2"
|
||||
version: "0.9.1"
|
||||
lints:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -806,6 +766,14 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.1"
|
||||
logger:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: logger
|
||||
sha256: af05cc8714f356fd1f3888fb6741cbe9fbe25cdb6eedbab80e1a6db21047d4a4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.0"
|
||||
logging:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -818,42 +786,42 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
|
||||
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.13"
|
||||
version: "0.12.16"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
||||
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.0"
|
||||
version: "0.5.0"
|
||||
memory_info:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: memory_info
|
||||
sha256: "5cbdb0acb5b0089b5776a6cadd3adaaf989d1178718af2ae07eb62f7ecff9982"
|
||||
sha256: "2d2150e070e1ceeb44d9ac3edad3d03d19022c4e0a4ddb08a3f8a494fc41d1c4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.3"
|
||||
version: "0.0.4"
|
||||
memory_info_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: memory_info_platform_interface
|
||||
sha256: "0a8c674ac7929d112987b4501ffda7cee7129c51827effa0bc24e5e460b9a201"
|
||||
sha256: "07c5ad0625f9810fb378fabd69a38c19a800865e11433e767804ff9bd84796db"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.0.1"
|
||||
version: "0.0.2"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
|
||||
sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.0"
|
||||
version: "1.10.0"
|
||||
mgrs_dart:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -866,10 +834,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: mime
|
||||
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
|
||||
sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
version: "1.0.5"
|
||||
mocktail:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -882,10 +850,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: mutex
|
||||
sha256: "03116a4e46282a671b46c12de649d72c0ed18188ffe12a8d0fc63e83f4ad88f4"
|
||||
sha256: "8827da25de792088eb33e572115a5eb0d61d61a3c01acbc8bcbe76ed78f1a1f2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.1.0"
|
||||
native_device_orientation:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1097,10 +1065,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: octo_image
|
||||
sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143"
|
||||
sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
version: "2.0.0"
|
||||
package_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1137,74 +1105,66 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: path
|
||||
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
|
||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.2"
|
||||
version: "1.8.3"
|
||||
path_provider:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: path_provider
|
||||
sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2"
|
||||
sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.15"
|
||||
version: "2.1.3"
|
||||
path_provider_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86"
|
||||
sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.27"
|
||||
version: "2.2.4"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_foundation
|
||||
sha256: "1995d88ec2948dac43edf8fe58eb434d35d22a2940ecee1a9fefcd62beee6eb3"
|
||||
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.3"
|
||||
version: "2.4.0"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_linux
|
||||
sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57
|
||||
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.11"
|
||||
version: "2.2.1"
|
||||
path_provider_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_platform_interface
|
||||
sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
|
||||
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.6"
|
||||
version: "2.1.2"
|
||||
path_provider_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_windows
|
||||
sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6
|
||||
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.6"
|
||||
pedantic:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pedantic
|
||||
sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
version: "2.2.1"
|
||||
petitparser:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: petitparser
|
||||
sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4"
|
||||
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.1.0"
|
||||
version: "6.0.2"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1217,10 +1177,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: plugin_platform_interface
|
||||
sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
|
||||
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
version: "2.1.8"
|
||||
polylabel:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1237,14 +1197,6 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.1"
|
||||
positioned_tap_detector_2:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: positioned_tap_detector_2
|
||||
sha256: "52e06863ad3e1f82b058fd05054fc8c9caeeb3b47d5cea7a24bd9320746059c1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
process:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1277,14 +1229,6 @@ packages:
|
|||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
pub_updater:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pub_updater
|
||||
sha256: "05ae70703e06f7fdeb05f7f02dd680b8aad810e87c756a618f33e1794635115c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.0"
|
||||
pubspec_parse:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1313,58 +1257,58 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: screen_brightness
|
||||
sha256: "62fd61a64e68b32b98b840bad7d8b6822bbc40e63c2b569a5f85528484c86b41"
|
||||
sha256: "7d4ac84ae26b37c01d6f5db7123a72db7933e1f2a2a8c369a51e08f81b3178d8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.2"
|
||||
version: "1.0.1"
|
||||
screen_brightness_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_brightness_android
|
||||
sha256: "3df10961e3a9e968a5e076fe27e7f4741fa8a1d3950bdeb48cf121ed529d0caf"
|
||||
sha256: "8c69d3ac475e4d625e7fa682a3a51a69ff59abe5b4a9e57f6ec7d830a6c69bd6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.0+2"
|
||||
version: "1.0.1"
|
||||
screen_brightness_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_brightness_ios
|
||||
sha256: "99adc3ca5490b8294284aad5fcc87f061ad685050e03cf45d3d018fe398fd9a2"
|
||||
sha256: f08f70ca1ac3e30719764b5cfb8b3fe1e28163065018a41b3e6f243ab146c2f1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.0"
|
||||
version: "1.0.1"
|
||||
screen_brightness_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_brightness_macos
|
||||
sha256: "64b34e7e3f4900d7687c8e8fb514246845a73ecec05ab53483ed025bd4a899fd"
|
||||
sha256: "70c2efa4534e22b927e82693488f127dd4a0f008469fccf4f0eefe9061bbdd6a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.0+1"
|
||||
version: "1.0.1"
|
||||
screen_brightness_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_brightness_platform_interface
|
||||
sha256: b211d07f0c96637a15fb06f6168617e18030d5d74ad03795dd8547a52717c171
|
||||
sha256: "9f3ebf7f22d5487e7676fe9ddaf3fc55b6ff8057707cf6dc0121c7dfda346a16"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.0"
|
||||
version: "1.0.1"
|
||||
screen_brightness_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: screen_brightness_windows
|
||||
sha256: "80d90ecdc63fc0823f2ecb1be323471619287937e14210650d7b25ca181abd05"
|
||||
sha256: c8e12a91cf6dd912a48bd41fcf749282a51afa17f536c3460d8d05702fb89ffa
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.1"
|
||||
version: "1.0.1"
|
||||
shared_preferences:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022"
|
||||
sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.2.3"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1377,10 +1321,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_foundation
|
||||
sha256: e014107bb79d6d3297196f4f2d0db54b5d1f85b8ea8ff63b8e8b391a02700feb
|
||||
sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.2"
|
||||
version: "2.4.0"
|
||||
shared_preferences_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1393,10 +1337,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences_platform_interface
|
||||
sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d
|
||||
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
version: "2.3.2"
|
||||
shared_preferences_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1454,10 +1398,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: sliver_tools
|
||||
sha256: ccdc502098a8bfa07b3ec582c282620031481300035584e1bb3aca296a505e8c
|
||||
sha256: eae28220badfb9d0559207badcbbc9ad5331aac829a88cb0964d330d2a4636a6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.10"
|
||||
version: "0.2.12"
|
||||
smooth_corner:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1470,10 +1414,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: source_gen
|
||||
sha256: "2d79738b6bbf38a43920e2b8d189e9a3ce6cc201f4b8fc76be5e4fe377b1c38d"
|
||||
sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.6"
|
||||
version: "1.5.0"
|
||||
source_map_stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1494,10 +1438,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: source_span
|
||||
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
||||
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.1"
|
||||
version: "1.10.0"
|
||||
sqflite:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1518,34 +1462,34 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: sqlite3
|
||||
sha256: "2cef47b59d310e56f8275b13734ee80a9cf4a48a43172020cb55a620121fbf66"
|
||||
sha256: "072128763f1547e3e9b4735ce846bfd226d68019ccda54db4cd427b12dfdedc9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
version: "2.4.0"
|
||||
sqlite3_flutter_libs:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqlite3_flutter_libs
|
||||
sha256: "1e20a88d5c7ae8400e009f38ddbe8b001800a6dffa37832481a86a219bc904c7"
|
||||
sha256: fb2a106a2ea6042fe57de2c47074cc31539a941819c91e105b864744605da3f5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.15"
|
||||
version: "0.5.21"
|
||||
stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: stack_trace
|
||||
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
|
||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.0"
|
||||
version: "1.11.1"
|
||||
stream_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: stream_channel
|
||||
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
|
||||
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.1.2"
|
||||
stream_transform:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1566,10 +1510,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: synchronized
|
||||
sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60"
|
||||
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
version: "3.1.0+1"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1582,26 +1526,26 @@ packages:
|
|||
dependency: "direct dev"
|
||||
description:
|
||||
name: test
|
||||
sha256: a5fcd2d25eeadbb6589e80198a47d6a464ba3e2049da473943b8af9797900c2d
|
||||
sha256: a1f7595805820fcc05e5c52e3a231aedd0b72972cb333e8c738a8b1239448b6f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.22.0"
|
||||
version: "1.24.9"
|
||||
test_api:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
|
||||
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.16"
|
||||
version: "0.6.1"
|
||||
test_core:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_core
|
||||
sha256: "0ef9755ec6d746951ba0aabe62f874b707690b5ede0fecc818b138fcc9b14888"
|
||||
sha256: a757b14fc47507060a162cc2530d9a4a2f92f5100a952c7443b5cad5ef5b106a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.20"
|
||||
version: "0.5.9"
|
||||
timing:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1632,10 +1576,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: tuple
|
||||
sha256: "0ea99cd2f9352b2586583ab2ce6489d1f95a5f6de6fb9492faaf97ae2060f0aa"
|
||||
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "2.0.2"
|
||||
typed_data:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1664,66 +1608,66 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: url_launcher
|
||||
sha256: eb1e00ab44303d50dd487aab67ebc575456c146c6af44422f9c13889984c00f3
|
||||
sha256: "6ce1e04375be4eed30548f10a315826fd933c1e493206eab82eed01f438c8d2e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.11"
|
||||
version: "6.2.6"
|
||||
url_launcher_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: "1a5848f598acc5b7d8f7c18b8cb834ab667e59a13edc3c93e9d09cf38cc6bc87"
|
||||
sha256: "360a6ed2027f18b73c8d98e159dda67a61b7f2e0f6ec26e86c3ada33b0621775"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.34"
|
||||
version: "6.3.1"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2"
|
||||
sha256: "7068716403343f6ba4969b4173cbf3b84fc768042124bc2c011e5d782b24fe89"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.4"
|
||||
version: "6.3.0"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_linux
|
||||
sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5"
|
||||
sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
version: "3.1.1"
|
||||
url_launcher_macos:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_macos
|
||||
sha256: "91ee3e75ea9dadf38036200c5d3743518f4a5eb77a8d13fda1ee5764373f185e"
|
||||
sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.5"
|
||||
version: "3.2.0"
|
||||
url_launcher_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_platform_interface
|
||||
sha256: "6c9ca697a5ae218ce56cece69d46128169a58aa8653c1b01d26fcd4aad8c4370"
|
||||
sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.3.2"
|
||||
url_launcher_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "6bb1e5d7fe53daf02a8fee85352432a40b1f868a81880e99ec7440113d5cfcab"
|
||||
sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.17"
|
||||
version: "2.2.3"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_windows
|
||||
sha256: "254708f17f7c20a9c8c471f67d86d76d4a3f9c1591aad1e15292008aceb82771"
|
||||
sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.6"
|
||||
version: "3.1.1"
|
||||
uuid:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1818,10 +1762,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: watcher
|
||||
sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0"
|
||||
sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.2"
|
||||
version: "1.1.0"
|
||||
web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.3.0"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1882,10 +1834,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: xml
|
||||
sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5"
|
||||
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.2"
|
||||
version: "6.5.0"
|
||||
yaml:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1895,5 +1847,5 @@ packages:
|
|||
source: hosted
|
||||
version: "3.1.2"
|
||||
sdks:
|
||||
dart: ">=2.19.6 <3.0.0"
|
||||
flutter: ">=3.7.0"
|
||||
dart: ">=3.2.3 <4.0.0"
|
||||
flutter: ">=3.16.6"
|
||||
|
|
|
@ -18,8 +18,8 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
|||
version: 1.65.0+6500
|
||||
|
||||
environment:
|
||||
sdk: ">=2.17.0 <3.0.0"
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
|
@ -35,11 +35,11 @@ dependencies:
|
|||
path: packages/android_intent_plus
|
||||
battery_plus: ^4.0.1
|
||||
bloc_concurrency: ^0.2.2
|
||||
cached_network_image: ^3.2.3
|
||||
cached_network_image: ^3.3.1
|
||||
cached_network_image_platform_interface: any
|
||||
circular_reveal_animation: ^2.0.1
|
||||
clock: ^1.1.1
|
||||
collection: ^1.15.0
|
||||
collection: ^1.18.0
|
||||
connectivity_plus: ^3.0.6
|
||||
copy_with:
|
||||
git:
|
||||
|
@ -52,20 +52,20 @@ dependencies:
|
|||
git:
|
||||
url: https://gitlab.com/nc-photos/flutter-draggable-scrollbar
|
||||
ref: v0.1.0-nc-photos-8
|
||||
dynamic_color: ^1.6.6
|
||||
dynamic_color: ^1.7.0
|
||||
equatable: ^2.0.5
|
||||
event_bus: ^2.0.0
|
||||
exifdart:
|
||||
git:
|
||||
url: https://gitlab.com/nc-photos/exifdart.git
|
||||
ref: 1.3.0
|
||||
flex_seed_scheme: ^1.3.0
|
||||
fluttertoast: ^8.2.1
|
||||
flex_seed_scheme: ^1.5.0
|
||||
fluttertoast: ^8.2.5
|
||||
flutter_background_service:
|
||||
git:
|
||||
url: https://gitlab.com/nc-photos/flutter_background_service.git
|
||||
ref: v0.2.6-nc-photos-2
|
||||
flutter_bloc: ^8.1.2
|
||||
flutter_bloc: ^8.1.5
|
||||
flutter_cache_manager: any
|
||||
flutter_colorpicker: ^1.0.3
|
||||
flutter_isolate: ^2.0.4
|
||||
|
@ -74,20 +74,18 @@ dependencies:
|
|||
url: https://gitlab.com/nc-photos/flutter_staggered_grid_view
|
||||
ref: v0.4.0-nc-photos-2
|
||||
flutter_typeahead: ^4.0.0
|
||||
# android/ios only
|
||||
google_maps_flutter: ^2.2.8
|
||||
http: ^0.13.5
|
||||
http: ^1.1.2
|
||||
image_size_getter:
|
||||
git:
|
||||
url: https://gitlab.com/nc-photos/dart_image_size_getter
|
||||
ref: 1.0.0-nc-photos-2
|
||||
path: library
|
||||
intl: ^0.17.0
|
||||
intl: 0.18.1
|
||||
kiwi: ^4.1.0
|
||||
logging: ^1.1.1
|
||||
memory_info: ^0.0.3
|
||||
mime: ^1.0.4
|
||||
mutex: ^3.0.1
|
||||
logging: ^1.2.0
|
||||
memory_info: ^0.0.4
|
||||
mime: ^1.0.5
|
||||
mutex: ^3.1.0
|
||||
native_device_orientation: ^1.1.0
|
||||
nc_photos_plugin:
|
||||
path: ../plugin
|
||||
|
@ -135,22 +133,22 @@ dependencies:
|
|||
path: ../np_universal_storage
|
||||
octo_image: any
|
||||
page_view_indicators: ^2.0.0
|
||||
path: ^1.8.0
|
||||
path_provider: ^2.0.15
|
||||
path: ^1.8.3
|
||||
path_provider: ^2.1.3
|
||||
provider: any
|
||||
rxdart: ^0.27.7
|
||||
screen_brightness: ^0.2.2
|
||||
shared_preferences: ^2.0.8
|
||||
screen_brightness: ^1.0.1
|
||||
shared_preferences: ^2.2.3
|
||||
shared_preferences_platform_interface: any
|
||||
sliver_tools: ^0.2.10
|
||||
sliver_tools: ^0.2.12
|
||||
smooth_corner: ^1.1.0
|
||||
to_string:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-to-string
|
||||
ref: to_string-1.0.0
|
||||
path: to_string
|
||||
tuple: ^2.0.1
|
||||
url_launcher: ^6.1.11
|
||||
tuple: ^2.0.2
|
||||
url_launcher: ^6.2.6
|
||||
uuid: ^3.0.7
|
||||
video_player: 2.4.5
|
||||
visibility_detector: ^0.4.0+2
|
||||
|
@ -170,16 +168,16 @@ dependency_overrides:
|
|||
path: packages/video_player/video_player_android
|
||||
|
||||
dev_dependencies:
|
||||
test: any
|
||||
test: ^1.22.1
|
||||
bloc_test: any
|
||||
build_runner: ^2.2.1
|
||||
build_runner: ^2.4.9
|
||||
build_runner_core: ">=7.2.9"
|
||||
copy_with_build:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-copy-with
|
||||
path: copy_with_build
|
||||
ref: copy_with_build-1.7.0
|
||||
dart_code_metrics: any
|
||||
drift: 2.8.0
|
||||
drift: 2.15.0
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
# integration_test:
|
||||
|
|
|
@ -4,7 +4,7 @@ version: 1.0.0
|
|||
# homepage: https://www.example.com
|
||||
|
||||
environment:
|
||||
sdk: '>=2.17.0 <3.0.0'
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dev_dependencies:
|
||||
np_lints:
|
||||
|
|
|
@ -21,7 +21,7 @@ class DriftTableSortGenerator extends GeneratorForAnnotation<DriftTableSort> {
|
|||
final driftTableSort =
|
||||
DriftTableSort(annotation.read("dbClass").stringValue);
|
||||
final clazz = element;
|
||||
if (!clazz.allSupertypes.any((t) => t.element2.name == "Table")) {
|
||||
if (!clazz.allSupertypes.any((t) => t.element.name == "Table")) {
|
||||
print("Not a drift table");
|
||||
return null;
|
||||
}
|
||||
|
@ -63,7 +63,7 @@ extension ${sortEnumName}IterableExtension on Iterable<$sortEnumName> {
|
|||
return false;
|
||||
}
|
||||
// it's a very rough way but well...
|
||||
if (field.type.element2?.name?.endsWith("Column") ?? false) {
|
||||
if (field.type.element?.name?.endsWith("Column") ?? false) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -29,7 +29,7 @@ extension _\$${clazz.name}NpLog on ${clazz.name} {
|
|||
} else if (element is ExtensionElement) {
|
||||
final extension = element;
|
||||
return """
|
||||
extension _\$${extension.name}NpLog on ${extension.extendedType.element2!.name} {
|
||||
extension _\$${extension.name}NpLog on ${extension.extendedType.element!.name} {
|
||||
// ignore: unused_element
|
||||
Logger get _log => log;
|
||||
|
||||
|
|
|
@ -5,10 +5,10 @@ version: 1.0.0
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.17.0 <3.0.0'
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
analyzer: '>=4.0.0'
|
||||
analyzer: ^6.2.0
|
||||
build: ^2.3.1
|
||||
np_codegen:
|
||||
path: ../codegen
|
||||
|
@ -18,6 +18,6 @@ dev_dependencies:
|
|||
build_test: ^2.1.5
|
||||
np_lints:
|
||||
path: ../np_lints
|
||||
path: any
|
||||
path: ^1.8.3
|
||||
rxdart: any
|
||||
test: any
|
||||
test: ^1.22.1
|
||||
|
|
|
@ -5,15 +5,15 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.18.0 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
equatable: ^2.0.5
|
||||
flutter:
|
||||
sdk: flutter
|
||||
http: ^0.13.5
|
||||
logging: any
|
||||
http: ^1.1.2
|
||||
logging: ^1.2.0
|
||||
np_codegen:
|
||||
path: ../codegen
|
||||
np_common:
|
||||
|
@ -27,15 +27,16 @@ dependencies:
|
|||
url: https://gitlab.com/nkming2/dart-to-string
|
||||
ref: to_string-1.0.0
|
||||
path: to_string
|
||||
xml: ^6.1.0
|
||||
xml: ^6.5.0
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.2.1
|
||||
build_runner: ^2.4.9
|
||||
build_runner_core: ">=7.2.9"
|
||||
np_codegen_build:
|
||||
path: ../codegen_build
|
||||
np_lints:
|
||||
path: ../np_lints
|
||||
test: any
|
||||
test: ^1.22.1
|
||||
to_string_build:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-to-string
|
||||
|
|
|
@ -5,8 +5,8 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
|
|
|
@ -5,16 +5,16 @@ version: 1.0.0
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
collection: ^1.15.0
|
||||
collection: ^1.18.0
|
||||
np_math:
|
||||
path: ../np_math
|
||||
quiver: ^3.2.1
|
||||
tuple: ^2.0.1
|
||||
tuple: ^2.0.2
|
||||
|
||||
dev_dependencies:
|
||||
np_lints:
|
||||
path: ../np_lints
|
||||
test: ^1.21.0
|
||||
test: ^1.22.1
|
||||
|
|
|
@ -5,7 +5,7 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.18.0 <3.0.0'
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
to_string:
|
||||
|
@ -15,10 +15,12 @@ dependencies:
|
|||
path: to_string
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.2.1
|
||||
analyzer: ^6.2.0
|
||||
build_runner: ^2.4.9
|
||||
build_runner_core: ">=7.2.9"
|
||||
np_lints:
|
||||
path: ../np_lints
|
||||
test: ^1.21.0
|
||||
test: ^1.22.1
|
||||
to_string_build:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-to-string
|
||||
|
|
|
@ -5,7 +5,7 @@ version: 1.0.0
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
clock: ^1.1.1
|
||||
|
@ -13,4 +13,4 @@ dependencies:
|
|||
dev_dependencies:
|
||||
np_lints:
|
||||
path: ../np_lints
|
||||
test: ^1.21.0
|
||||
test: ^1.22.1
|
||||
|
|
|
@ -5,8 +5,8 @@ version: 1.0.0
|
|||
publish_to: 'none'
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
copy_with:
|
||||
|
@ -17,7 +17,7 @@ dependencies:
|
|||
equatable: ^2.0.5
|
||||
flutter:
|
||||
sdk: flutter
|
||||
logging: ^1.1.1
|
||||
logging: ^1.2.0
|
||||
np_codegen:
|
||||
path: ../codegen
|
||||
np_collection:
|
||||
|
@ -37,7 +37,8 @@ dependencies:
|
|||
path: to_string
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.2.1
|
||||
build_runner: ^2.4.9
|
||||
build_runner_core: ">=7.2.9"
|
||||
copy_with_build:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-copy-with
|
||||
|
@ -47,7 +48,7 @@ dev_dependencies:
|
|||
path: ../codegen_build
|
||||
np_lints:
|
||||
path: ../np_lints
|
||||
test: ^1.21.0
|
||||
test: ^1.22.1
|
||||
to_string_build:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-to-string
|
||||
|
|
|
@ -28,9 +28,10 @@ class $ServersTable extends Servers with TableInfo<$ServersTable, Server> {
|
|||
@override
|
||||
List<GeneratedColumn> get $columns => [rowId, address];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'servers';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'servers';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'servers';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<Server> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -207,9 +208,10 @@ class $AccountsTable extends Accounts with TableInfo<$AccountsTable, Account> {
|
|||
@override
|
||||
List<GeneratedColumn> get $columns => [rowId, server, userId];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'accounts';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'accounts';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'accounts';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<Account> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -444,15 +446,12 @@ class $FilesTable extends Files with TableInfo<$FilesTable, File> {
|
|||
static const VerificationMeta _isCollectionMeta =
|
||||
const VerificationMeta('isCollection');
|
||||
@override
|
||||
late final GeneratedColumn<bool> isCollection =
|
||||
GeneratedColumn<bool>('is_collection', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("is_collection" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> isCollection = GeneratedColumn<bool>(
|
||||
'is_collection', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("is_collection" IN (0, 1))'));
|
||||
static const VerificationMeta _usedBytesMeta =
|
||||
const VerificationMeta('usedBytes');
|
||||
@override
|
||||
|
@ -462,15 +461,12 @@ class $FilesTable extends Files with TableInfo<$FilesTable, File> {
|
|||
static const VerificationMeta _hasPreviewMeta =
|
||||
const VerificationMeta('hasPreview');
|
||||
@override
|
||||
late final GeneratedColumn<bool> hasPreview =
|
||||
GeneratedColumn<bool>('has_preview', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("has_preview" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> hasPreview = GeneratedColumn<bool>(
|
||||
'has_preview', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("has_preview" IN (0, 1))'));
|
||||
static const VerificationMeta _ownerIdMeta =
|
||||
const VerificationMeta('ownerId');
|
||||
@override
|
||||
|
@ -499,9 +495,10 @@ class $FilesTable extends Files with TableInfo<$FilesTable, File> {
|
|||
ownerDisplayName
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'files';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'files';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'files';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<File> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -660,8 +657,8 @@ class File extends DataClass implements Insertable<File> {
|
|||
map['etag'] = Variable<String>(etag);
|
||||
}
|
||||
if (!nullToAbsent || lastModified != null) {
|
||||
final converter = $FilesTable.$converterlastModifiedn;
|
||||
map['last_modified'] = Variable<DateTime>(converter.toSql(lastModified));
|
||||
map['last_modified'] = Variable<DateTime>(
|
||||
$FilesTable.$converterlastModifiedn.toSql(lastModified));
|
||||
}
|
||||
if (!nullToAbsent || isCollection != null) {
|
||||
map['is_collection'] = Variable<bool>(isCollection);
|
||||
|
@ -957,9 +954,8 @@ class FilesCompanion extends UpdateCompanion<File> {
|
|||
map['etag'] = Variable<String>(etag.value);
|
||||
}
|
||||
if (lastModified.present) {
|
||||
final converter = $FilesTable.$converterlastModifiedn;
|
||||
map['last_modified'] =
|
||||
Variable<DateTime>(converter.toSql(lastModified.value));
|
||||
map['last_modified'] = Variable<DateTime>(
|
||||
$FilesTable.$converterlastModifiedn.toSql(lastModified.value));
|
||||
}
|
||||
if (isCollection.present) {
|
||||
map['is_collection'] = Variable<bool>(isCollection.value);
|
||||
|
@ -1040,27 +1036,21 @@ class $AccountFilesTable extends AccountFiles
|
|||
static const VerificationMeta _isFavoriteMeta =
|
||||
const VerificationMeta('isFavorite');
|
||||
@override
|
||||
late final GeneratedColumn<bool> isFavorite =
|
||||
GeneratedColumn<bool>('is_favorite', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("is_favorite" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> isFavorite = GeneratedColumn<bool>(
|
||||
'is_favorite', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("is_favorite" IN (0, 1))'));
|
||||
static const VerificationMeta _isArchivedMeta =
|
||||
const VerificationMeta('isArchived');
|
||||
@override
|
||||
late final GeneratedColumn<bool> isArchived =
|
||||
GeneratedColumn<bool>('is_archived', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("is_archived" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> isArchived = GeneratedColumn<bool>(
|
||||
'is_archived', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("is_archived" IN (0, 1))'));
|
||||
static const VerificationMeta _overrideDateTimeMeta =
|
||||
const VerificationMeta('overrideDateTime');
|
||||
@override
|
||||
|
@ -1089,9 +1079,10 @@ class $AccountFilesTable extends AccountFiles
|
|||
bestDateTime
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'account_files';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'account_files';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'account_files';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<AccountFile> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -1214,13 +1205,13 @@ class AccountFile extends DataClass implements Insertable<AccountFile> {
|
|||
map['is_archived'] = Variable<bool>(isArchived);
|
||||
}
|
||||
if (!nullToAbsent || overrideDateTime != null) {
|
||||
final converter = $AccountFilesTable.$converteroverrideDateTimen;
|
||||
map['override_date_time'] =
|
||||
Variable<DateTime>(converter.toSql(overrideDateTime));
|
||||
map['override_date_time'] = Variable<DateTime>($AccountFilesTable
|
||||
.$converteroverrideDateTimen
|
||||
.toSql(overrideDateTime));
|
||||
}
|
||||
{
|
||||
final converter = $AccountFilesTable.$converterbestDateTime;
|
||||
map['best_date_time'] = Variable<DateTime>(converter.toSql(bestDateTime));
|
||||
map['best_date_time'] = Variable<DateTime>(
|
||||
$AccountFilesTable.$converterbestDateTime.toSql(bestDateTime));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -1424,14 +1415,13 @@ class AccountFilesCompanion extends UpdateCompanion<AccountFile> {
|
|||
map['is_archived'] = Variable<bool>(isArchived.value);
|
||||
}
|
||||
if (overrideDateTime.present) {
|
||||
final converter = $AccountFilesTable.$converteroverrideDateTimen;
|
||||
map['override_date_time'] =
|
||||
Variable<DateTime>(converter.toSql(overrideDateTime.value));
|
||||
map['override_date_time'] = Variable<DateTime>($AccountFilesTable
|
||||
.$converteroverrideDateTimen
|
||||
.toSql(overrideDateTime.value));
|
||||
}
|
||||
if (bestDateTime.present) {
|
||||
final converter = $AccountFilesTable.$converterbestDateTime;
|
||||
map['best_date_time'] =
|
||||
Variable<DateTime>(converter.toSql(bestDateTime.value));
|
||||
map['best_date_time'] = Variable<DateTime>(
|
||||
$AccountFilesTable.$converterbestDateTime.toSql(bestDateTime.value));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -1514,9 +1504,10 @@ class $ImagesTable extends Images with TableInfo<$ImagesTable, Image> {
|
|||
dateTimeOriginal
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'images';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'images';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'images';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<Image> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -1608,8 +1599,8 @@ class Image extends DataClass implements Insertable<Image> {
|
|||
final map = <String, Expression>{};
|
||||
map['account_file'] = Variable<int>(accountFile);
|
||||
{
|
||||
final converter = $ImagesTable.$converterlastUpdated;
|
||||
map['last_updated'] = Variable<DateTime>(converter.toSql(lastUpdated));
|
||||
map['last_updated'] = Variable<DateTime>(
|
||||
$ImagesTable.$converterlastUpdated.toSql(lastUpdated));
|
||||
}
|
||||
if (!nullToAbsent || fileEtag != null) {
|
||||
map['file_etag'] = Variable<String>(fileEtag);
|
||||
|
@ -1624,9 +1615,8 @@ class Image extends DataClass implements Insertable<Image> {
|
|||
map['exif_raw'] = Variable<String>(exifRaw);
|
||||
}
|
||||
if (!nullToAbsent || dateTimeOriginal != null) {
|
||||
final converter = $ImagesTable.$converterdateTimeOriginaln;
|
||||
map['date_time_original'] =
|
||||
Variable<DateTime>(converter.toSql(dateTimeOriginal));
|
||||
map['date_time_original'] = Variable<DateTime>(
|
||||
$ImagesTable.$converterdateTimeOriginaln.toSql(dateTimeOriginal));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -1800,9 +1790,8 @@ class ImagesCompanion extends UpdateCompanion<Image> {
|
|||
map['account_file'] = Variable<int>(accountFile.value);
|
||||
}
|
||||
if (lastUpdated.present) {
|
||||
final converter = $ImagesTable.$converterlastUpdated;
|
||||
map['last_updated'] =
|
||||
Variable<DateTime>(converter.toSql(lastUpdated.value));
|
||||
map['last_updated'] = Variable<DateTime>(
|
||||
$ImagesTable.$converterlastUpdated.toSql(lastUpdated.value));
|
||||
}
|
||||
if (fileEtag.present) {
|
||||
map['file_etag'] = Variable<String>(fileEtag.value);
|
||||
|
@ -1817,9 +1806,9 @@ class ImagesCompanion extends UpdateCompanion<Image> {
|
|||
map['exif_raw'] = Variable<String>(exifRaw.value);
|
||||
}
|
||||
if (dateTimeOriginal.present) {
|
||||
final converter = $ImagesTable.$converterdateTimeOriginaln;
|
||||
map['date_time_original'] =
|
||||
Variable<DateTime>(converter.toSql(dateTimeOriginal.value));
|
||||
map['date_time_original'] = Variable<DateTime>($ImagesTable
|
||||
.$converterdateTimeOriginaln
|
||||
.toSql(dateTimeOriginal.value));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -1905,9 +1894,10 @@ class $ImageLocationsTable extends ImageLocations
|
|||
admin2
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'image_locations';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'image_locations';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'image_locations';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<ImageLocation> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -2284,9 +2274,10 @@ class $TrashesTable extends Trashes with TableInfo<$TrashesTable, Trash> {
|
|||
List<GeneratedColumn> get $columns =>
|
||||
[file, filename, originalLocation, deletionTime];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'trashes';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'trashes';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'trashes';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<Trash> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -2358,8 +2349,8 @@ class Trash extends DataClass implements Insertable<Trash> {
|
|||
map['filename'] = Variable<String>(filename);
|
||||
map['original_location'] = Variable<String>(originalLocation);
|
||||
{
|
||||
final converter = $TrashesTable.$converterdeletionTime;
|
||||
map['deletion_time'] = Variable<DateTime>(converter.toSql(deletionTime));
|
||||
map['deletion_time'] = Variable<DateTime>(
|
||||
$TrashesTable.$converterdeletionTime.toSql(deletionTime));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -2488,9 +2479,8 @@ class TrashesCompanion extends UpdateCompanion<Trash> {
|
|||
map['original_location'] = Variable<String>(originalLocation.value);
|
||||
}
|
||||
if (deletionTime.present) {
|
||||
final converter = $TrashesTable.$converterdeletionTime;
|
||||
map['deletion_time'] =
|
||||
Variable<DateTime>(converter.toSql(deletionTime.value));
|
||||
map['deletion_time'] = Variable<DateTime>(
|
||||
$TrashesTable.$converterdeletionTime.toSql(deletionTime.value));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -2531,9 +2521,10 @@ class $DirFilesTable extends DirFiles with TableInfo<$DirFilesTable, DirFile> {
|
|||
@override
|
||||
List<GeneratedColumn> get $columns => [dir, child];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'dir_files';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'dir_files';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'dir_files';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<DirFile> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -2790,9 +2781,10 @@ class $AlbumsTable extends Albums with TableInfo<$AlbumsTable, Album> {
|
|||
sortProviderContent
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'albums';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'albums';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'albums';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<Album> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -2957,8 +2949,8 @@ class Album extends DataClass implements Insertable<Album> {
|
|||
}
|
||||
map['version'] = Variable<int>(version);
|
||||
{
|
||||
final converter = $AlbumsTable.$converterlastUpdated;
|
||||
map['last_updated'] = Variable<DateTime>(converter.toSql(lastUpdated));
|
||||
map['last_updated'] = Variable<DateTime>(
|
||||
$AlbumsTable.$converterlastUpdated.toSql(lastUpdated));
|
||||
}
|
||||
map['name'] = Variable<String>(name);
|
||||
map['provider_type'] = Variable<String>(providerType);
|
||||
|
@ -3233,9 +3225,8 @@ class AlbumsCompanion extends UpdateCompanion<Album> {
|
|||
map['version'] = Variable<int>(version.value);
|
||||
}
|
||||
if (lastUpdated.present) {
|
||||
final converter = $AlbumsTable.$converterlastUpdated;
|
||||
map['last_updated'] =
|
||||
Variable<DateTime>(converter.toSql(lastUpdated.value));
|
||||
map['last_updated'] = Variable<DateTime>(
|
||||
$AlbumsTable.$converterlastUpdated.toSql(lastUpdated.value));
|
||||
}
|
||||
if (name.present) {
|
||||
map['name'] = Variable<String>(name.value);
|
||||
|
@ -3318,9 +3309,10 @@ class $AlbumSharesTable extends AlbumShares
|
|||
@override
|
||||
List<GeneratedColumn> get $columns => [album, userId, displayName, sharedAt];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'album_shares';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'album_shares';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'album_shares';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<AlbumShare> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -3394,8 +3386,8 @@ class AlbumShare extends DataClass implements Insertable<AlbumShare> {
|
|||
map['display_name'] = Variable<String>(displayName);
|
||||
}
|
||||
{
|
||||
final converter = $AlbumSharesTable.$convertersharedAt;
|
||||
map['shared_at'] = Variable<DateTime>(converter.toSql(sharedAt));
|
||||
map['shared_at'] = Variable<DateTime>(
|
||||
$AlbumSharesTable.$convertersharedAt.toSql(sharedAt));
|
||||
}
|
||||
return map;
|
||||
}
|
||||
|
@ -3532,8 +3524,8 @@ class AlbumSharesCompanion extends UpdateCompanion<AlbumShare> {
|
|||
map['display_name'] = Variable<String>(displayName.value);
|
||||
}
|
||||
if (sharedAt.present) {
|
||||
final converter = $AlbumSharesTable.$convertersharedAt;
|
||||
map['shared_at'] = Variable<DateTime>(converter.toSql(sharedAt.value));
|
||||
map['shared_at'] = Variable<DateTime>(
|
||||
$AlbumSharesTable.$convertersharedAt.toSql(sharedAt.value));
|
||||
}
|
||||
if (rowid.present) {
|
||||
map['rowid'] = Variable<int>(rowid.value);
|
||||
|
@ -3590,34 +3582,29 @@ class $TagsTable extends Tags with TableInfo<$TagsTable, Tag> {
|
|||
static const VerificationMeta _userVisibleMeta =
|
||||
const VerificationMeta('userVisible');
|
||||
@override
|
||||
late final GeneratedColumn<bool> userVisible =
|
||||
GeneratedColumn<bool>('user_visible', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("user_visible" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> userVisible = GeneratedColumn<bool>(
|
||||
'user_visible', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("user_visible" IN (0, 1))'));
|
||||
static const VerificationMeta _userAssignableMeta =
|
||||
const VerificationMeta('userAssignable');
|
||||
@override
|
||||
late final GeneratedColumn<bool> userAssignable =
|
||||
GeneratedColumn<bool>('user_assignable', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("user_assignable" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> userAssignable = GeneratedColumn<bool>(
|
||||
'user_assignable', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("user_assignable" IN (0, 1))'));
|
||||
@override
|
||||
List<GeneratedColumn> get $columns =>
|
||||
[rowId, server, tagId, displayName, userVisible, userAssignable];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'tags';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'tags';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'tags';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<Tag> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -3949,9 +3936,10 @@ class $FaceRecognitionPersonsTable extends FaceRecognitionPersons
|
|||
List<GeneratedColumn> get $columns =>
|
||||
[rowId, account, name, thumbFaceId, count];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'face_recognition_persons';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'face_recognition_persons';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'face_recognition_persons';
|
||||
@override
|
||||
VerificationContext validateIntegrity(
|
||||
Insertable<FaceRecognitionPerson> instance,
|
||||
|
@ -4274,15 +4262,12 @@ class $NcAlbumsTable extends NcAlbums with TableInfo<$NcAlbumsTable, NcAlbum> {
|
|||
static const VerificationMeta _isOwnedMeta =
|
||||
const VerificationMeta('isOwned');
|
||||
@override
|
||||
late final GeneratedColumn<bool> isOwned =
|
||||
GeneratedColumn<bool>('is_owned', aliasedName, false,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: true,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("is_owned" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> isOwned = GeneratedColumn<bool>(
|
||||
'is_owned', aliasedName, false,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: true,
|
||||
defaultConstraints:
|
||||
GeneratedColumn.constraintIsAlways('CHECK ("is_owned" IN (0, 1))'));
|
||||
@override
|
||||
List<GeneratedColumn> get $columns => [
|
||||
rowId,
|
||||
|
@ -4297,9 +4282,10 @@ class $NcAlbumsTable extends NcAlbums with TableInfo<$NcAlbumsTable, NcAlbum> {
|
|||
isOwned
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'nc_albums';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'nc_albums';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'nc_albums';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<NcAlbum> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -4442,12 +4428,12 @@ class NcAlbum extends DataClass implements Insertable<NcAlbum> {
|
|||
map['location'] = Variable<String>(location);
|
||||
}
|
||||
if (!nullToAbsent || dateStart != null) {
|
||||
final converter = $NcAlbumsTable.$converterdateStartn;
|
||||
map['date_start'] = Variable<DateTime>(converter.toSql(dateStart));
|
||||
map['date_start'] = Variable<DateTime>(
|
||||
$NcAlbumsTable.$converterdateStartn.toSql(dateStart));
|
||||
}
|
||||
if (!nullToAbsent || dateEnd != null) {
|
||||
final converter = $NcAlbumsTable.$converterdateEndn;
|
||||
map['date_end'] = Variable<DateTime>(converter.toSql(dateEnd));
|
||||
map['date_end'] =
|
||||
Variable<DateTime>($NcAlbumsTable.$converterdateEndn.toSql(dateEnd));
|
||||
}
|
||||
map['collaborators'] = Variable<String>(collaborators);
|
||||
map['is_owned'] = Variable<bool>(isOwned);
|
||||
|
@ -4681,12 +4667,12 @@ class NcAlbumsCompanion extends UpdateCompanion<NcAlbum> {
|
|||
map['location'] = Variable<String>(location.value);
|
||||
}
|
||||
if (dateStart.present) {
|
||||
final converter = $NcAlbumsTable.$converterdateStartn;
|
||||
map['date_start'] = Variable<DateTime>(converter.toSql(dateStart.value));
|
||||
map['date_start'] = Variable<DateTime>(
|
||||
$NcAlbumsTable.$converterdateStartn.toSql(dateStart.value));
|
||||
}
|
||||
if (dateEnd.present) {
|
||||
final converter = $NcAlbumsTable.$converterdateEndn;
|
||||
map['date_end'] = Variable<DateTime>(converter.toSql(dateEnd.value));
|
||||
map['date_end'] = Variable<DateTime>(
|
||||
$NcAlbumsTable.$converterdateEndn.toSql(dateEnd.value));
|
||||
}
|
||||
if (collaborators.present) {
|
||||
map['collaborators'] = Variable<String>(collaborators.value);
|
||||
|
@ -4777,27 +4763,21 @@ class $NcAlbumItemsTable extends NcAlbumItems
|
|||
static const VerificationMeta _hasPreviewMeta =
|
||||
const VerificationMeta('hasPreview');
|
||||
@override
|
||||
late final GeneratedColumn<bool> hasPreview =
|
||||
GeneratedColumn<bool>('has_preview', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("has_preview" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> hasPreview = GeneratedColumn<bool>(
|
||||
'has_preview', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("has_preview" IN (0, 1))'));
|
||||
static const VerificationMeta _isFavoriteMeta =
|
||||
const VerificationMeta('isFavorite');
|
||||
@override
|
||||
late final GeneratedColumn<bool> isFavorite =
|
||||
GeneratedColumn<bool>('is_favorite', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("is_favorite" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> isFavorite = GeneratedColumn<bool>(
|
||||
'is_favorite', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("is_favorite" IN (0, 1))'));
|
||||
static const VerificationMeta _fileMetadataWidthMeta =
|
||||
const VerificationMeta('fileMetadataWidth');
|
||||
@override
|
||||
|
@ -4826,9 +4806,10 @@ class $NcAlbumItemsTable extends NcAlbumItems
|
|||
fileMetadataHeight
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'nc_album_items';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'nc_album_items';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'nc_album_items';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<NcAlbumItem> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -4994,8 +4975,8 @@ class NcAlbumItem extends DataClass implements Insertable<NcAlbumItem> {
|
|||
map['etag'] = Variable<String>(etag);
|
||||
}
|
||||
if (!nullToAbsent || lastModified != null) {
|
||||
final converter = $NcAlbumItemsTable.$converterlastModifiedn;
|
||||
map['last_modified'] = Variable<DateTime>(converter.toSql(lastModified));
|
||||
map['last_modified'] = Variable<DateTime>(
|
||||
$NcAlbumItemsTable.$converterlastModifiedn.toSql(lastModified));
|
||||
}
|
||||
if (!nullToAbsent || hasPreview != null) {
|
||||
map['has_preview'] = Variable<bool>(hasPreview);
|
||||
|
@ -5292,9 +5273,8 @@ class NcAlbumItemsCompanion extends UpdateCompanion<NcAlbumItem> {
|
|||
map['etag'] = Variable<String>(etag.value);
|
||||
}
|
||||
if (lastModified.present) {
|
||||
final converter = $NcAlbumItemsTable.$converterlastModifiedn;
|
||||
map['last_modified'] =
|
||||
Variable<DateTime>(converter.toSql(lastModified.value));
|
||||
map['last_modified'] = Variable<DateTime>(
|
||||
$NcAlbumItemsTable.$converterlastModifiedn.toSql(lastModified.value));
|
||||
}
|
||||
if (hasPreview.present) {
|
||||
map['has_preview'] = Variable<bool>(hasPreview.value);
|
||||
|
@ -5363,9 +5343,10 @@ class $RecognizeFacesTable extends RecognizeFaces
|
|||
@override
|
||||
List<GeneratedColumn> get $columns => [rowId, account, label];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'recognize_faces';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'recognize_faces';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'recognize_faces';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<RecognizeFace> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -5609,15 +5590,12 @@ class $RecognizeFaceItemsTable extends RecognizeFaceItems
|
|||
static const VerificationMeta _hasPreviewMeta =
|
||||
const VerificationMeta('hasPreview');
|
||||
@override
|
||||
late final GeneratedColumn<bool> hasPreview =
|
||||
GeneratedColumn<bool>('has_preview', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("has_preview" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> hasPreview = GeneratedColumn<bool>(
|
||||
'has_preview', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("has_preview" IN (0, 1))'));
|
||||
static const VerificationMeta _realPathMeta =
|
||||
const VerificationMeta('realPath');
|
||||
@override
|
||||
|
@ -5627,15 +5605,12 @@ class $RecognizeFaceItemsTable extends RecognizeFaceItems
|
|||
static const VerificationMeta _isFavoriteMeta =
|
||||
const VerificationMeta('isFavorite');
|
||||
@override
|
||||
late final GeneratedColumn<bool> isFavorite =
|
||||
GeneratedColumn<bool>('is_favorite', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintsDependsOnDialect({
|
||||
SqlDialect.sqlite: 'CHECK ("is_favorite" IN (0, 1))',
|
||||
SqlDialect.mysql: '',
|
||||
SqlDialect.postgres: '',
|
||||
}));
|
||||
late final GeneratedColumn<bool> isFavorite = GeneratedColumn<bool>(
|
||||
'is_favorite', aliasedName, true,
|
||||
type: DriftSqlType.bool,
|
||||
requiredDuringInsert: false,
|
||||
defaultConstraints: GeneratedColumn.constraintIsAlways(
|
||||
'CHECK ("is_favorite" IN (0, 1))'));
|
||||
static const VerificationMeta _fileMetadataWidthMeta =
|
||||
const VerificationMeta('fileMetadataWidth');
|
||||
@override
|
||||
|
@ -5672,9 +5647,10 @@ class $RecognizeFaceItemsTable extends RecognizeFaceItems
|
|||
faceDetections
|
||||
];
|
||||
@override
|
||||
String get aliasedName => _alias ?? 'recognize_face_items';
|
||||
String get aliasedName => _alias ?? actualTableName;
|
||||
@override
|
||||
String get actualTableName => 'recognize_face_items';
|
||||
String get actualTableName => $name;
|
||||
static const String $name = 'recognize_face_items';
|
||||
@override
|
||||
VerificationContext validateIntegrity(Insertable<RecognizeFaceItem> instance,
|
||||
{bool isInserting = false}) {
|
||||
|
@ -5859,8 +5835,8 @@ class RecognizeFaceItem extends DataClass
|
|||
map['etag'] = Variable<String>(etag);
|
||||
}
|
||||
if (!nullToAbsent || lastModified != null) {
|
||||
final converter = $RecognizeFaceItemsTable.$converterlastModifiedn;
|
||||
map['last_modified'] = Variable<DateTime>(converter.toSql(lastModified));
|
||||
map['last_modified'] = Variable<DateTime>(
|
||||
$RecognizeFaceItemsTable.$converterlastModifiedn.toSql(lastModified));
|
||||
}
|
||||
if (!nullToAbsent || hasPreview != null) {
|
||||
map['has_preview'] = Variable<bool>(hasPreview);
|
||||
|
@ -6198,9 +6174,9 @@ class RecognizeFaceItemsCompanion extends UpdateCompanion<RecognizeFaceItem> {
|
|||
map['etag'] = Variable<String>(etag.value);
|
||||
}
|
||||
if (lastModified.present) {
|
||||
final converter = $RecognizeFaceItemsTable.$converterlastModifiedn;
|
||||
map['last_modified'] =
|
||||
Variable<DateTime>(converter.toSql(lastModified.value));
|
||||
map['last_modified'] = Variable<DateTime>($RecognizeFaceItemsTable
|
||||
.$converterlastModifiedn
|
||||
.toSql(lastModified.value));
|
||||
}
|
||||
if (hasPreview.present) {
|
||||
map['has_preview'] = Variable<bool>(hasPreview.value);
|
||||
|
|
|
@ -11,17 +11,17 @@ Future<Map<String, dynamic>> getSqliteConnectionArgs() async => {};
|
|||
QueryExecutor openSqliteConnectionWithArgs(Map<String, dynamic> args) =>
|
||||
openSqliteConnection();
|
||||
|
||||
// Web is no longer supported. The code here has been updated to make it build
|
||||
// with the latest sqlite3 package, but they are untested
|
||||
QueryExecutor openSqliteConnection() {
|
||||
return LazyDatabase(() async {
|
||||
// Load wasm bundle
|
||||
final response = await http.get(Uri.parse("sqlite3.wasm"));
|
||||
// Create a virtual file system backed by IndexedDb with everything in
|
||||
// `/drift/my_app/` being persisted.
|
||||
final sqlite3 = await WasmSqlite3.load(response.bodyBytes);
|
||||
final fs = await IndexedDbFileSystem.open(dbName: "nc-photos");
|
||||
final sqlite3 = await WasmSqlite3.load(
|
||||
response.bodyBytes,
|
||||
SqliteEnvironment(fileSystem: fs),
|
||||
);
|
||||
sqlite3.registerVirtualFileSystem(fs, makeDefault: true);
|
||||
|
||||
// Then, open a database inside that persisted folder.
|
||||
return WasmDatabase(
|
||||
|
|
|
@ -5,22 +5,22 @@ version: 1.0.0
|
|||
publish_to: 'none'
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.7.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
clock: ^1.1.1
|
||||
collection: ^1.15.0
|
||||
collection: ^1.18.0
|
||||
copy_with:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-copy-with
|
||||
path: copy_with
|
||||
ref: copy_with-1.3.0
|
||||
drift: 2.8.0
|
||||
drift: 2.15.0
|
||||
flutter:
|
||||
sdk: flutter
|
||||
http: ^0.13.5
|
||||
logging: ^1.1.1
|
||||
http: ^1.1.2
|
||||
logging: ^1.2.0
|
||||
np_async:
|
||||
path: ../np_async
|
||||
np_codegen:
|
||||
|
@ -41,30 +41,31 @@ dependencies:
|
|||
path: ../np_platform_util
|
||||
np_string:
|
||||
path: ../np_string
|
||||
path: ^1.8.0
|
||||
path_provider: ^2.0.15
|
||||
sqlite3: any
|
||||
sqlite3_flutter_libs: ^0.5.15
|
||||
path: ^1.8.3
|
||||
path_provider: ^2.1.3
|
||||
sqlite3: ^2.3.0
|
||||
sqlite3_flutter_libs: ^0.5.21
|
||||
to_string:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-to-string
|
||||
ref: to_string-1.0.0
|
||||
path: to_string
|
||||
tuple: ^2.0.1
|
||||
tuple: ^2.0.2
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.2.1
|
||||
build_runner: ^2.4.9
|
||||
build_runner_core: ">=7.2.9"
|
||||
copy_with_build:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-copy-with
|
||||
path: copy_with_build
|
||||
ref: copy_with_build-1.7.0
|
||||
drift_dev: 2.8.0
|
||||
drift_dev: 2.15.0
|
||||
np_codegen_build:
|
||||
path: ../codegen_build
|
||||
np_lints:
|
||||
path: ../np_lints
|
||||
test: ^1.21.0
|
||||
test: ^1.22.1
|
||||
to_string_build:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-to-string
|
||||
|
|
|
@ -2,28 +2,27 @@ import 'package:flutter/services.dart' show rootBundle;
|
|||
import 'package:http/http.dart' as http;
|
||||
import 'package:sqlite3/wasm.dart';
|
||||
|
||||
// Web is no longer supported. The code here has been updated to make it build
|
||||
// with the latest sqlite3 package, but they are untested
|
||||
Future<CommonDatabase> openRawSqliteDbFromAsset(
|
||||
String assetRelativePath,
|
||||
String outputFilename, {
|
||||
bool isReadOnly = false,
|
||||
}) async {
|
||||
final response = await http.get(Uri.parse("sqlite3.wasm"));
|
||||
final sqlite3 = await WasmSqlite3.load(response.bodyBytes);
|
||||
final fs = await IndexedDbFileSystem.open(dbName: "nc-photos");
|
||||
final sqlite3 = await WasmSqlite3.load(
|
||||
response.bodyBytes,
|
||||
SqliteEnvironment(fileSystem: fs),
|
||||
);
|
||||
sqlite3.registerVirtualFileSystem(fs, makeDefault: true);
|
||||
|
||||
if (!fs.exists("/app-file/$outputFilename")) {
|
||||
if (fs.xAccess("/app-file/$outputFilename", SqlFlag.SQLITE_OPEN_READONLY) ==
|
||||
0) {
|
||||
// copy file from assets
|
||||
final blob = await rootBundle.load("assets/$assetRelativePath");
|
||||
final buffer = blob.buffer;
|
||||
fs.createFile("/app-file/$outputFilename");
|
||||
fs.write(
|
||||
"/app-file/$outputFilename",
|
||||
buffer.asUint8List(blob.offsetInBytes, blob.lengthInBytes),
|
||||
0,
|
||||
);
|
||||
final f = fs.xOpen(Sqlite3Filename("/app-file/$outputFilename"),
|
||||
SqlFlag.SQLITE_OPEN_CREATE | SqlFlag.SQLITE_OPEN_READWRITE);
|
||||
f.file
|
||||
.xWrite(buffer.asUint8List(blob.offsetInBytes, blob.lengthInBytes), 0);
|
||||
await fs.flush();
|
||||
}
|
||||
return sqlite3.open("/app-file/$outputFilename");
|
||||
|
|
|
@ -5,19 +5,19 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
collection: ^1.15.0
|
||||
http: ^0.13.5
|
||||
collection: ^1.18.0
|
||||
http: ^1.1.2
|
||||
kdtree:
|
||||
git:
|
||||
url: https://gitlab.com/nc-photos/kd-tree-dart.git
|
||||
ref: 0.2.0-nc-photos-1
|
||||
logging: ^1.1.1
|
||||
logging: ^1.2.0
|
||||
np_codegen:
|
||||
path: ../codegen
|
||||
np_collection:
|
||||
|
@ -26,9 +26,9 @@ dependencies:
|
|||
path: ../np_math
|
||||
np_string:
|
||||
path: ../np_string
|
||||
path: ^1.8.0
|
||||
path_provider: ^2.0.15
|
||||
sqlite3: ^1.11.1
|
||||
path: ^1.8.3
|
||||
path_provider: ^2.1.3
|
||||
sqlite3: ^2.3.0
|
||||
to_string:
|
||||
git:
|
||||
url: https://gitlab.com/nkming2/dart-to-string
|
||||
|
@ -36,7 +36,9 @@ dependencies:
|
|||
path: to_string
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.2.1
|
||||
analyzer: ^6.2.0
|
||||
build_runner: ^2.4.9
|
||||
build_runner_core: ">=7.2.9"
|
||||
np_codegen_build:
|
||||
path: ../codegen_build
|
||||
np_lints:
|
||||
|
|
|
@ -29,35 +29,33 @@ class OsmGpsMap extends StatelessWidget {
|
|||
child: IgnorePointer(
|
||||
child: FlutterMap(
|
||||
options: MapOptions(
|
||||
center: centerLl,
|
||||
zoom: zoom,
|
||||
allowPanning: false,
|
||||
enableScrollWheel: false,
|
||||
interactiveFlags: InteractiveFlag.none,
|
||||
),
|
||||
nonRotatedChildren: [
|
||||
AttributionWidget.defaultWidget(
|
||||
source: "OpenStreetMap contributors",
|
||||
initialCenter: centerLl,
|
||||
initialZoom: zoom,
|
||||
interactionOptions: const InteractionOptions(
|
||||
flags: InteractiveFlag.none,
|
||||
),
|
||||
],
|
||||
layers: [
|
||||
TileLayerOptions(
|
||||
),
|
||||
children: [
|
||||
TileLayer(
|
||||
urlTemplate: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
),
|
||||
MarkerLayerOptions(
|
||||
MarkerLayer(
|
||||
markers: [
|
||||
Marker(
|
||||
width: pinSize,
|
||||
height: pinSize,
|
||||
point: centerLl,
|
||||
anchorPos: AnchorPos.align(AnchorAlign.top),
|
||||
builder: (_) => const Image(
|
||||
alignment: Alignment.topCenter,
|
||||
child: const Image(
|
||||
image: AssetImage(
|
||||
"packages/np_gps_map/assets/gps_map_pin.png"),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
const SimpleAttributionWidget(
|
||||
source: Text("OpenStreetMap contributors"),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
@ -5,20 +5,20 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
flutter_map: ^2.2.0
|
||||
flutter_map: ^6.1.0
|
||||
google_maps_flutter: ^2.2.8
|
||||
latlong2: any
|
||||
np_async:
|
||||
path: ../np_async
|
||||
np_platform_util:
|
||||
path: ../np_platform_util
|
||||
tuple: ^2.0.1
|
||||
tuple: ^2.0.2
|
||||
url_launcher: ^6.1.11
|
||||
|
||||
dev_dependencies:
|
||||
|
|
|
@ -4,7 +4,7 @@ version: 1.0.0
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
flutter_lints: ^2.0.0
|
||||
|
|
|
@ -4,10 +4,10 @@ version: 1.0.0
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dependencies:
|
||||
logging: ^1.1.1
|
||||
logging: ^1.2.0
|
||||
|
||||
dev_dependencies:
|
||||
np_lints:
|
||||
|
|
|
@ -5,9 +5,9 @@ version: 1.0.0
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dev_dependencies:
|
||||
np_lints:
|
||||
path: ../np_lints
|
||||
test: ^1.21.0
|
||||
test: ^1.22.1
|
||||
|
|
|
@ -5,14 +5,14 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
collection: ^1.15.0
|
||||
logging: ^1.1.1
|
||||
collection: ^1.18.0
|
||||
logging: ^1.2.0
|
||||
np_codegen:
|
||||
path: ../codegen
|
||||
np_platform_raw_image:
|
||||
|
@ -24,7 +24,8 @@ dependencies:
|
|||
path: to_string
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.2.1
|
||||
build_runner: ^2.4.9
|
||||
build_runner_core: ">=7.2.9"
|
||||
np_codegen_build:
|
||||
path: ../codegen_build
|
||||
np_lints:
|
||||
|
|
|
@ -5,15 +5,15 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
np_platform_util:
|
||||
path: ../np_platform_util
|
||||
synchronized: ^3.1.0
|
||||
synchronized: ^3.1.0+1
|
||||
|
||||
dev_dependencies:
|
||||
np_lints:
|
||||
|
|
|
@ -5,8 +5,8 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
|
|
|
@ -5,18 +5,19 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
logging: ^1.1.1
|
||||
logging: ^1.2.0
|
||||
np_codegen:
|
||||
path: ../codegen
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.2.1
|
||||
build_runner: ^2.4.9
|
||||
build_runner_core: ">=7.2.9"
|
||||
np_codegen_build:
|
||||
path: ../codegen_build
|
||||
np_lints:
|
||||
|
|
|
@ -5,13 +5,13 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
logging: ^1.1.1
|
||||
logging: ^1.2.0
|
||||
|
||||
dev_dependencies:
|
||||
np_lints:
|
||||
|
|
|
@ -5,8 +5,8 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
|
|
|
@ -5,8 +5,8 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
|
|
|
@ -5,9 +5,9 @@ version: 1.0.0
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
|
||||
dev_dependencies:
|
||||
np_lints:
|
||||
path: ../np_lints
|
||||
test: ^1.21.0
|
||||
test: ^1.22.1
|
||||
|
|
|
@ -10,4 +10,5 @@ export 'src/pixel_image_provider.dart';
|
|||
export 'src/shimmer.dart';
|
||||
export 'src/stateful_slider.dart';
|
||||
export 'src/switch_form_field.dart';
|
||||
export 'src/translucent_sliver_app_bar.dart';
|
||||
export 'src/unbounded_list_tile.dart';
|
||||
|
|
|
@ -17,8 +17,7 @@ class PixelImage extends ImageProvider<PixelImage> {
|
|||
SynchronousFuture<PixelImage>(this);
|
||||
|
||||
@override
|
||||
ImageStreamCompleter loadBuffer(
|
||||
PixelImage key, DecoderBufferCallback decode) =>
|
||||
ImageStreamCompleter loadImage(PixelImage key, ImageDecoderCallback decode) =>
|
||||
OneFrameImageStreamCompleter(_createImageInfo());
|
||||
|
||||
Future<ImageInfo> _createImageInfo() async {
|
||||
|
|
1164
np_ui/lib/src/translucent_sliver_app_bar.dart
Normal file
1164
np_ui/lib/src/translucent_sliver_app_bar.dart
Normal file
File diff suppressed because it is too large
Load diff
|
@ -4,8 +4,8 @@ version: 0.0.1
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
|
|
|
@ -5,17 +5,17 @@ homepage:
|
|||
publish_to: none
|
||||
|
||||
environment:
|
||||
sdk: '>=2.19.6 <3.0.0'
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
np_string:
|
||||
path: ../np_string
|
||||
path: ^1.8.0
|
||||
path_provider: ^2.0.15
|
||||
shared_preferences: ^2.0.8
|
||||
path: ^1.8.3
|
||||
path_provider: ^2.1.3
|
||||
shared_preferences: ^2.2.3
|
||||
|
||||
dev_dependencies:
|
||||
np_lints:
|
||||
|
|
|
@ -4,13 +4,13 @@ version: 0.0.1
|
|||
homepage:
|
||||
|
||||
environment:
|
||||
sdk: ">=2.17.0 <3.0.0"
|
||||
flutter: ">=3.3.0"
|
||||
sdk: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
logging: any
|
||||
logging: ^1.2.0
|
||||
|
||||
dev_dependencies:
|
||||
np_lints:
|
||||
|
|
Loading…
Reference in a new issue