formatting

This commit is contained in:
Adrian Baumgart 2024-03-31 21:58:31 +02:00
parent e1a7235a90
commit 65ee8d1879
No known key found for this signature in database
11 changed files with 165 additions and 852 deletions

View File

@ -52,7 +52,8 @@ class ShortURL {
longUrl = json["longUrl"], longUrl = json["longUrl"],
dateCreated = DateTime.parse(json["dateCreated"]), dateCreated = DateTime.parse(json["dateCreated"]),
visitsSummary = VisitsSummary.fromJson(json["visitsSummary"]), visitsSummary = VisitsSummary.fromJson(json["visitsSummary"]),
tags = (json["tags"] as List<dynamic>).map((e) => e.toString()).toList(), tags =
(json["tags"] as List<dynamic>).map((e) => e.toString()).toList(),
meta = ShortURLMeta.fromJson(json["meta"]), meta = ShortURLMeta.fromJson(json["meta"]),
domain = json["domain"], domain = json["domain"],
title = json["title"], title = json["title"],
@ -60,14 +61,14 @@ class ShortURL {
/// Returns an empty class of [ShortURL] /// Returns an empty class of [ShortURL]
ShortURL.empty() ShortURL.empty()
: shortCode = "", : shortCode = "",
shortUrl = "", shortUrl = "",
longUrl = "", longUrl = "",
dateCreated = DateTime.now(), dateCreated = DateTime.now(),
visitsSummary = VisitsSummary(0, 0, 0), visitsSummary = VisitsSummary(0, 0, 0),
tags = [], tags = [],
meta = ShortURLMeta(DateTime.now(), DateTime.now(), 0), meta = ShortURLMeta(DateTime.now(), DateTime.now(), 0),
domain = "", domain = "",
title = "", title = "",
crawlable = false; crawlable = false;
} }

View File

@ -7,8 +7,11 @@ import 'package:shlink_app/API/Classes/ShortURLSubmission/short_url_submission.d
import '../server_manager.dart'; import '../server_manager.dart';
/// Submits a short URL to a server for it to be added /// Submits a short URL to a server for it to be added
FutureOr<Either<ShortURL, Failure>> apiSubmitShortUrl(ShortURLSubmission shortUrl, FutureOr<Either<ShortURL, Failure>> apiSubmitShortUrl(
String? apiKey, String? serverUrl, String apiVersion) async { ShortURLSubmission shortUrl,
String? apiKey,
String? serverUrl,
String apiVersion) async {
try { try {
final response = final response =
await http.post(Uri.parse("$serverUrl/rest/v$apiVersion/short-urls"), await http.post(Uri.parse("$serverUrl/rest/v$apiVersion/short-urls"),

View File

@ -7,7 +7,11 @@ import 'package:shlink_app/API/Classes/ShortURLSubmission/short_url_submission.d
import '../server_manager.dart'; import '../server_manager.dart';
/// Updates an existing short URL /// Updates an existing short URL
FutureOr<Either<ShortURL, Failure>> apiUpdateShortUrl(ShortURLSubmission shortUrl, String? apiKey, String? serverUrl, String apiVersion) async { FutureOr<Either<ShortURL, Failure>> apiUpdateShortUrl(
ShortURLSubmission shortUrl,
String? apiKey,
String? serverUrl,
String apiVersion) async {
String shortCode = shortUrl.customSlug ?? ""; String shortCode = shortUrl.customSlug ?? "";
if (shortCode == "") { if (shortCode == "") {
return right(RequestFailure(0, "Missing short code")); return right(RequestFailure(0, "Missing short code"));
@ -16,11 +20,12 @@ FutureOr<Either<ShortURL, Failure>> apiUpdateShortUrl(ShortURLSubmission shortUr
shortUrlData.remove("shortCode"); shortUrlData.remove("shortCode");
shortUrlData.remove("shortUrl"); shortUrlData.remove("shortUrl");
try { try {
final response = await http.patch(Uri.parse("$serverUrl/rest/v$apiVersion/short-urls/$shortCode"), final response = await http.patch(
headers: { Uri.parse("$serverUrl/rest/v$apiVersion/short-urls/$shortCode"),
"X-Api-Key": apiKey ?? "", headers: {
}, "X-Api-Key": apiKey ?? "",
body: jsonEncode(shortUrlData)); },
body: jsonEncode(shortUrlData));
if (response.statusCode == 200) { if (response.statusCode == 200) {
// get returned short url // get returned short url

View File

@ -39,8 +39,8 @@ class _HomeViewState extends State<HomeView> {
} }
Future<void> initializeActionProcessText() async { Future<void> initializeActionProcessText() async {
_intentDataStreamSubscription = FlutterSharingIntent.instance _intentDataStreamSubscription =
.getMediaStream().listen(_handleIntentUrl); FlutterSharingIntent.instance.getMediaStream().listen(_handleIntentUrl);
FlutterSharingIntent.instance.getInitialSharing().then(_handleIntentUrl); FlutterSharingIntent.instance.getInitialSharing().then(_handleIntentUrl);
} }

View File

@ -76,8 +76,7 @@ class _SettingsViewState extends State<SettingsView> {
return [ return [
const PopupMenuItem( const PopupMenuItem(
value: 0, value: 0,
child: child: Text("Log out", style: TextStyle(color: Colors.red)),
Text("Log out", style: TextStyle(color: Colors.red)),
) )
]; ];
}, },
@ -268,16 +267,13 @@ class _SettingsViewState extends State<SettingsView> {
children: [ children: [
Container( Container(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
left: 8, left: 8, right: 8, top: 4, bottom: 4),
right: 8,
top: 4,
bottom: 4
),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
color: Theme.of(context).brightness == Brightness.light color:
? Colors.grey[100] Theme.of(context).brightness == Brightness.light
: Colors.grey[900], ? Colors.grey[100]
: Colors.grey[900],
), ),
child: Text( child: Text(
"${packageInfo.appName}, v${packageInfo.version} (${packageInfo.buildNumber})", "${packageInfo.appName}, v${packageInfo.version} (${packageInfo.buildNumber})",

View File

@ -211,18 +211,20 @@ class _ShortURLEditViewState extends State<ShortURLEditView>
parent: _customSlugDiceAnimationController, parent: _customSlugDiceAnimationController,
curve: Curves.easeInOutExpo)), curve: Curves.easeInOutExpo)),
child: IconButton( child: IconButton(
onPressed: disableSlugEditor ? null : () { onPressed: disableSlugEditor
if (randomSlug) { ? null
_customSlugDiceAnimationController.reverse( : () {
from: 1); if (randomSlug) {
} else { _customSlugDiceAnimationController.reverse(
_customSlugDiceAnimationController.forward( from: 1);
from: 0); } else {
} _customSlugDiceAnimationController.forward(
setState(() { from: 0);
randomSlug = !randomSlug; }
}); setState(() {
}, randomSlug = !randomSlug;
});
},
icon: Icon( icon: Icon(
randomSlug ? Icons.casino : Icons.casino_outlined, randomSlug ? Icons.casino : Icons.casino_outlined,
color: randomSlug ? Colors.green : Colors.grey)), color: randomSlug ? Colors.green : Colors.grey)),

View File

@ -17,7 +17,6 @@ class URLDetailView extends StatefulWidget {
} }
class _URLDetailViewState extends State<URLDetailView> { class _URLDetailViewState extends State<URLDetailView> {
ShortURL shortURL = ShortURL.empty(); ShortURL shortURL = ShortURL.empty();
@override @override
void initState() { void initState() {
@ -100,17 +99,16 @@ class _URLDetailViewState extends State<URLDetailView> {
style: const TextStyle(fontWeight: FontWeight.bold)), style: const TextStyle(fontWeight: FontWeight.bold)),
actions: [ actions: [
IconButton( IconButton(
onPressed: () async { onPressed: () async {
ShortURL updatedUrl = await Navigator.of(context).push(MaterialPageRoute( ShortURL updatedUrl = await Navigator.of(context).push(
builder: (context) => ShortURLEditView(shortUrl: shortURL))); MaterialPageRoute(
setState(() { builder: (context) =>
shortURL = updatedUrl; ShortURLEditView(shortUrl: shortURL)));
}); setState(() {
}, shortURL = updatedUrl;
icon: const Icon( });
Icons.edit },
) icon: const Icon(Icons.edit)),
),
IconButton( IconButton(
onPressed: () { onPressed: () {
showDeletionConfirmation(); showDeletionConfirmation();
@ -123,28 +121,23 @@ class _URLDetailViewState extends State<URLDetailView> {
), ),
SliverToBoxAdapter( SliverToBoxAdapter(
child: Padding( child: Padding(
padding: const EdgeInsets.only(left: 16.0, right: 16.0), padding: const EdgeInsets.only(left: 16.0, right: 16.0),
child: UrlTagsListWidget(tags: shortURL.tags) child: UrlTagsListWidget(tags: shortURL.tags)),
),
), ),
_ListCell(title: "Short Code", content: shortURL.shortCode), _ListCell(title: "Short Code", content: shortURL.shortCode),
_ListCell(title: "Short URL", content: shortURL.shortUrl, isUrl: true),
_ListCell(title: "Long URL", content: shortURL.longUrl, isUrl: true),
_ListCell( _ListCell(
title: "Creation Date", content: shortURL.dateCreated), title: "Short URL", content: shortURL.shortUrl, isUrl: true),
_ListCell(title: "Long URL", content: shortURL.longUrl, isUrl: true),
_ListCell(title: "Creation Date", content: shortURL.dateCreated),
const _ListCell(title: "Visits", content: ""), const _ListCell(title: "Visits", content: ""),
_ListCell( _ListCell(
title: "Total", title: "Total", content: shortURL.visitsSummary.total, sub: true),
content: shortURL.visitsSummary.total,
sub: true),
_ListCell( _ListCell(
title: "Non-Bots", title: "Non-Bots",
content: shortURL.visitsSummary.nonBots, content: shortURL.visitsSummary.nonBots,
sub: true), sub: true),
_ListCell( _ListCell(
title: "Bots", title: "Bots", content: shortURL.visitsSummary.bots, sub: true),
content: shortURL.visitsSummary.bots,
sub: true),
const _ListCell(title: "Meta", content: ""), const _ListCell(title: "Meta", content: ""),
_ListCell( _ListCell(
title: "Valid Since", title: "Valid Since",
@ -155,14 +148,9 @@ class _URLDetailViewState extends State<URLDetailView> {
content: shortURL.meta.validUntil, content: shortURL.meta.validUntil,
sub: true), sub: true),
_ListCell( _ListCell(
title: "Max Visits", title: "Max Visits", content: shortURL.meta.maxVisits, sub: true),
content: shortURL.meta.maxVisits,
sub: true),
_ListCell(title: "Domain", content: shortURL.domain), _ListCell(title: "Domain", content: shortURL.domain),
_ListCell( _ListCell(title: "Crawlable", content: shortURL.crawlable, last: true)
title: "Crawlable",
content: shortURL.crawlable,
last: true)
], ],
), ),
); );
@ -192,75 +180,76 @@ class _ListCellState extends State<_ListCell> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SliverToBoxAdapter( return SliverToBoxAdapter(
child: Padding( child: Padding(
padding: EdgeInsets.only(top: 16, bottom: widget.last ? 30 : 0), padding: EdgeInsets.only(top: 16, bottom: widget.last ? 30 : 0),
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
Uri? parsedUrl = Uri.tryParse(widget.content); Uri? parsedUrl = Uri.tryParse(widget.content);
if (widget.isUrl if (widget.isUrl &&
&& parsedUrl != null parsedUrl != null &&
&& await canLaunchUrl(parsedUrl)) { await canLaunchUrl(parsedUrl)) {
launchUrl(parsedUrl); launchUrl(parsedUrl);
} }
}, },
child: Container( child: Container(
padding: const EdgeInsets.only(top: 16, left: 8, right: 8), padding: const EdgeInsets.only(top: 16, left: 8, right: 8),
decoration: BoxDecoration( decoration: BoxDecoration(
border: Border( border: Border(
top: BorderSide( top: BorderSide(
color: MediaQuery.of(context).platformBrightness == color: MediaQuery.of(context).platformBrightness ==
Brightness.dark Brightness.dark
? Colors.grey[800]! ? Colors.grey[800]!
: Colors.grey[300]!)), : Colors.grey[300]!)),
), ),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Row( Row(
children: [ children: [
if (widget.sub) if (widget.sub)
Padding( Padding(
padding: const EdgeInsets.only(right: 4), padding: const EdgeInsets.only(right: 4),
child: SizedBox( child: SizedBox(
width: 20, width: 20,
height: 6, height: 6,
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
color: Theme.of(context).brightness == Brightness.dark color: Theme.of(context).brightness ==
? Colors.grey[700] Brightness.dark
: Colors.grey[300], ? Colors.grey[700]
: Colors.grey[300],
),
),
),
), ),
Text(
widget.title,
style: const TextStyle(fontWeight: FontWeight.bold),
)
],
),
if (widget.content is bool)
Icon(widget.content ? Icons.check : Icons.close,
color: widget.content ? Colors.green : Colors.red)
else if (widget.content is int)
Text(widget.content.toString())
else if (widget.content is String)
Expanded(
child: Text(
widget.content,
textAlign: TextAlign.end,
overflow: TextOverflow.ellipsis,
maxLines: 1,
), ),
), )
), else if (widget.content is DateTime)
Text( Text(DateFormat('yyyy-MM-dd - HH:mm')
widget.title, .format(widget.content))
style: const TextStyle(fontWeight: FontWeight.bold), else
) const Text("N/A")
], ],
),
), ),
if (widget.content is bool) )));
Icon(widget.content ? Icons.check : Icons.close,
color: widget.content ? Colors.green : Colors.red)
else if (widget.content is int)
Text(widget.content.toString())
else if (widget.content is String)
Expanded(
child: Text(
widget.content,
textAlign: TextAlign.end,
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
)
else if (widget.content is DateTime)
Text(DateFormat('yyyy-MM-dd - HH:mm').format(widget.content))
else
const Text("N/A")
],
),
),
)
));
} }
} }

View File

@ -194,11 +194,11 @@ class _ShortURLCellState extends State<ShortURLCell> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return GestureDetector( return GestureDetector(
onTap: () async { onTap: () async {
await Navigator.of(context).push(MaterialPageRoute( await Navigator.of(context)
builder: (context) => URLDetailView(shortURL: widget.shortURL))) .push(MaterialPageRoute(
.then((a) => { builder: (context) =>
widget.reload() URLDetailView(shortURL: widget.shortURL)))
}); .then((a) => {widget.reload()});
}, },
child: Padding( child: Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(

View File

@ -16,27 +16,26 @@ class _UrlTagsListWidgetState extends State<UrlTagsListWidget> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Wrap( return Wrap(
children: widget.tags.map((tag) { children: widget.tags.map((tag) {
var boxColor = stringToColor(tag) var boxColor = stringToColor(tag)
.harmonizeWith( .harmonizeWith(Theme.of(context).colorScheme.primary);
Theme.of(context).colorScheme.primary); return Padding(
return Padding( padding: const EdgeInsets.only(right: 4, top: 4),
padding: const EdgeInsets.only(right: 4, top: 4), child: Container(
child: Container( padding:
padding: const EdgeInsets.only( const EdgeInsets.only(top: 4, bottom: 4, left: 12, right: 12),
top: 4, bottom: 4, left: 12, right: 12), decoration: BoxDecoration(
decoration: BoxDecoration( borderRadius: BorderRadius.circular(4),
borderRadius: BorderRadius.circular(4), color: boxColor,
color: boxColor, ),
), child: Text(
child: Text( tag,
tag, style: TextStyle(
style: TextStyle( color: boxColor.computeLuminance() < 0.5
color: boxColor.computeLuminance() < 0.5 ? Colors.white
? Colors.white : Colors.black),
: Colors.black), ),
), ),
), );
); }).toList());
}).toList());
} }
} }

View File

@ -1,682 +0,0 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
archive:
dependency: transitive
description:
name: archive
sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d"
url: "https://pub.dev"
source: hosted
version: "3.4.10"
args:
dependency: transitive
description:
name: args
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
url: "https://pub.dev"
source: hosted
version: "2.4.2"
async:
dependency: transitive
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev"
source: hosted
version: "2.11.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
characters:
dependency: transitive
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev"
source: hosted
version: "1.3.0"
checked_yaml:
dependency: transitive
description:
name: checked_yaml
sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
url: "https://pub.dev"
source: hosted
version: "2.0.3"
cli_util:
dependency: transitive
description:
name: cli_util
sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19
url: "https://pub.dev"
source: hosted
version: "0.4.1"
clock:
dependency: transitive
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.dev"
source: hosted
version: "1.1.1"
collection:
dependency: transitive
description:
name: collection
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
url: "https://pub.dev"
source: hosted
version: "1.17.2"
convert:
dependency: transitive
description:
name: convert
sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
crypto:
dependency: transitive
description:
name: crypto
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
url: "https://pub.dev"
source: hosted
version: "3.0.3"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
url: "https://pub.dev"
source: hosted
version: "1.0.6"
dartz:
dependency: "direct main"
description:
name: dartz
sha256: e6acf34ad2e31b1eb00948692468c30ab48ac8250e0f0df661e29f12dd252168
url: "https://pub.dev"
source: hosted
version: "0.10.1"
dynamic_color:
dependency: "direct main"
description:
name: dynamic_color
sha256: eae98052fa6e2826bdac3dd2e921c6ce2903be15c6b7f8b6d8a5d49b5086298d
url: "https://pub.dev"
source: hosted
version: "1.7.0"
fake_async:
dependency: transitive
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
ffi:
dependency: transitive
description:
name: ffi
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
file:
dependency: transitive
description:
name: file
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
url: "https://pub.dev"
source: hosted
version: "7.0.0"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_launcher_icons:
dependency: "direct dev"
description:
name: flutter_launcher_icons
sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
url: "https://pub.dev"
source: hosted
version: "0.13.1"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
flutter_process_text:
dependency: "direct main"
description:
name: flutter_process_text
sha256: "75cdff9d255ce892c766370824e28bbb95a7f93e99b6c4109ca694a6ef4d5681"
url: "https://pub.dev"
source: hosted
version: "1.1.2"
flutter_secure_storage:
dependency: "direct main"
description:
name: flutter_secure_storage
sha256: ffdbb60130e4665d2af814a0267c481bcf522c41ae2e43caf69fa0146876d685
url: "https://pub.dev"
source: hosted
version: "9.0.0"
flutter_secure_storage_linux:
dependency: transitive
description:
name: flutter_secure_storage_linux
sha256: "3d5032e314774ee0e1a7d0a9f5e2793486f0dff2dd9ef5a23f4e3fb2a0ae6a9e"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
flutter_secure_storage_macos:
dependency: transitive
description:
name: flutter_secure_storage_macos
sha256: bd33935b4b628abd0b86c8ca20655c5b36275c3a3f5194769a7b3f37c905369c
url: "https://pub.dev"
source: hosted
version: "3.0.1"
flutter_secure_storage_platform_interface:
dependency: transitive
description:
name: flutter_secure_storage_platform_interface
sha256: "0d4d3a5dd4db28c96ae414d7ba3b8422fd735a8255642774803b2532c9a61d7e"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
flutter_secure_storage_web:
dependency: transitive
description:
name: flutter_secure_storage_web
sha256: "30f84f102df9dcdaa2241866a958c2ec976902ebdaa8883fbfe525f1f2f3cf20"
url: "https://pub.dev"
source: hosted
version: "1.1.2"
flutter_secure_storage_windows:
dependency: transitive
description:
name: flutter_secure_storage_windows
sha256: "5809c66f9dd3b4b93b0a6e2e8561539405322ee767ac2f64d084e2ab5429d108"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
flutter_sharing_intent:
dependency: "direct main"
description:
name: flutter_sharing_intent
sha256: "785ffc391822641457f930eb477c91c2f598a888f50b8fbb40d481ee01c7e719"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
http:
dependency: "direct main"
description:
name: http
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
url: "https://pub.dev"
source: hosted
version: "1.1.0"
http_parser:
dependency: transitive
description:
name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
image:
dependency: transitive
description:
name: image
sha256: "4c68bfd5ae83e700b5204c1e74451e7bf3cf750e6843c6e158289cf56bda018e"
url: "https://pub.dev"
source: hosted
version: "4.1.7"
intl:
dependency: "direct main"
description:
name: intl
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
version: "0.19.0"
js:
dependency: transitive
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
url: "https://pub.dev"
source: hosted
version: "0.6.7"
json_annotation:
dependency: transitive
description:
name: json_annotation
sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467
url: "https://pub.dev"
source: hosted
version: "4.8.1"
license_generator:
dependency: "direct dev"
description:
name: license_generator
sha256: "0b111c03cbccfa36a68a8738e3b2a54392a269673b5258d5fc6a83302d675a9e"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
lints:
dependency: transitive
description:
name: lints
sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290
url: "https://pub.dev"
source: hosted
version: "3.0.0"
matcher:
dependency: transitive
description:
name: matcher
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
url: "https://pub.dev"
source: hosted
version: "0.12.16"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
url: "https://pub.dev"
source: hosted
version: "0.5.0"
meta:
dependency: transitive
description:
name: meta
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
package_info_plus:
dependency: "direct main"
description:
name: package_info_plus
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
url: "https://pub.dev"
source: hosted
version: "4.2.0"
package_info_plus_platform_interface:
dependency: transitive
description:
name: package_info_plus_platform_interface
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
path:
dependency: transitive
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.dev"
source: hosted
version: "1.8.3"
path_provider:
dependency: transitive
description:
name: path_provider
sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
url: "https://pub.dev"
source: hosted
version: "2.1.2"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668"
url: "https://pub.dev"
source: hosted
version: "2.2.2"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
url: "https://pub.dev"
source: hosted
version: "2.2.1"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
url: "https://pub.dev"
source: hosted
version: "2.2.1"
petitparser:
dependency: transitive
description:
name: petitparser
sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750
url: "https://pub.dev"
source: hosted
version: "5.4.0"
platform:
dependency: transitive
description:
name: platform
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
url: "https://pub.dev"
source: hosted
version: "3.1.4"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev"
source: hosted
version: "2.1.8"
pointycastle:
dependency: transitive
description:
name: pointycastle
sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29"
url: "https://pub.dev"
source: hosted
version: "3.7.4"
qr:
dependency: transitive
description:
name: qr
sha256: "64957a3930367bf97cc211a5af99551d630f2f4625e38af10edd6b19131b64b3"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
qr_flutter:
dependency: "direct main"
description:
name: qr_flutter
sha256: "5095f0fc6e3f71d08adef8feccc8cea4f12eec18a2e31c2e8d82cb6019f4b097"
url: "https://pub.dev"
source: hosted
version: "4.1.0"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
url: "https://pub.dev"
source: hosted
version: "2.2.2"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06"
url: "https://pub.dev"
source: hosted
version: "2.2.1"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c"
url: "https://pub.dev"
source: hosted
version: "2.3.5"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf
url: "https://pub.dev"
source: hosted
version: "2.2.1"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
source_span:
dependency: transitive
description:
name: source_span
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
url: "https://pub.dev"
source: hosted
version: "1.10.0"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.dev"
source: hosted
version: "1.11.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
string_scanner:
dependency: transitive
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev"
source: hosted
version: "1.2.1"
test_api:
dependency: transitive
description:
name: test_api
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
url: "https://pub.dev"
source: hosted
version: "0.6.0"
tuple:
dependency: "direct main"
description:
name: tuple
sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151
url: "https://pub.dev"
source: hosted
version: "2.0.2"
typed_data:
dependency: transitive
description:
name: typed_data
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
url: "https://pub.dev"
source: hosted
version: "1.3.2"
url_launcher:
dependency: "direct main"
description:
name: url_launcher
sha256: c512655380d241a337521703af62d2c122bf7b77a46ff7dd750092aa9433499c
url: "https://pub.dev"
source: hosted
version: "6.2.4"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
sha256: d4ed0711849dd8e33eb2dd69c25db0d0d3fdc37e0a62e629fe32f57a22db2745
url: "https://pub.dev"
source: hosted
version: "6.3.0"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03"
url: "https://pub.dev"
source: hosted
version: "6.2.4"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811
url: "https://pub.dev"
source: hosted
version: "3.1.1"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
sha256: b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234
url: "https://pub.dev"
source: hosted
version: "3.1.0"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
sha256: "7fd2f55fe86cea2897b963e864dc01a7eb0719ecc65fcef4c1cc3d686d718bb2"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7
url: "https://pub.dev"
source: hosted
version: "3.1.1"
vector_math:
dependency: transitive
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
web:
dependency: transitive
description:
name: web
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
url: "https://pub.dev"
source: hosted
version: "0.1.4-beta"
win32:
dependency: transitive
description:
name: win32
sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574
url: "https://pub.dev"
source: hosted
version: "5.1.1"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
url: "https://pub.dev"
source: hosted
version: "1.0.4"
xml:
dependency: transitive
description:
name: xml
sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84"
url: "https://pub.dev"
source: hosted
version: "6.3.0"
yaml:
dependency: transitive
description:
name: yaml
sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
url: "https://pub.dev"
source: hosted
version: "3.1.2"
sdks:
dart: ">=3.1.0 <4.0.0"
flutter: ">=3.13.0"