separate new item screen
The edit item screen might be overwhelming at first, and if you only want to add simple items (by name) to the list, it is way easier to simply type the name and click create to create a simple item. After creating the item the user will be redirected (history replacement) to the edit screen, but clicking back will bring them back to the list. This screen also makes linking products easier and allows the user to create new products if they notice they are using the same item multiple times or can't be bothered to switch to the products tab
This commit is contained in:
parent
b013964615
commit
384fbb0573
6 changed files with 413 additions and 146 deletions
|
@ -424,5 +424,10 @@
|
|||
"moveItemToCartTitle": "Move to Cart",
|
||||
"moveItemToCartSubtitle": "Mark item as in-cart, so others know, you bought it",
|
||||
"removeItemFromCartTitle": "Remove from Cart",
|
||||
"removeItemFromCartSubtitle": "Remove item from shopping cart, so others know, that you still need it"
|
||||
"removeItemFromCartSubtitle": "Remove item from shopping cart, so others know, that you still need it",
|
||||
|
||||
"newItemQueryEmpty": "Type to show quick access buttons",
|
||||
"newItemQueryHint": "Type item or product name",
|
||||
"newItemQuickAccessPrefix": "Create:",
|
||||
"newItemQuickProduct": "product: {text}"
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import 'package:outbag_app/backend/user.dart';
|
|||
import 'package:outbag_app/backend/request.dart';
|
||||
import 'package:outbag_app/screens/room/categories/edit.dart';
|
||||
import 'package:outbag_app/screens/room/items/edit.dart';
|
||||
import 'package:outbag_app/screens/room/items/new.dart';
|
||||
import 'package:outbag_app/screens/room/products/edit.dart';
|
||||
import 'package:outbag_app/screens/room/products/view.dart';
|
||||
|
||||
|
@ -306,7 +307,7 @@ class _OutbagAppState extends State {
|
|||
GoRoute(
|
||||
name: 'new-item',
|
||||
path: 'new-item',
|
||||
builder: (context, state) => EditItemPage(
|
||||
builder: (context, state) => NewItemPage(
|
||||
server:
|
||||
state.params['server'] ?? '',
|
||||
room: state.params['id'] ?? '',
|
||||
|
|
|
@ -14,10 +14,13 @@ class EditItemPage extends StatefulWidget {
|
|||
final String room;
|
||||
final String server;
|
||||
|
||||
final int? item;
|
||||
final int item;
|
||||
|
||||
const EditItemPage(
|
||||
{super.key, required this.room, required this.server, this.item});
|
||||
{super.key,
|
||||
required this.room,
|
||||
required this.server,
|
||||
required this.item});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => _EditItemPageState();
|
||||
|
@ -31,6 +34,7 @@ class _EditItemPageState extends State<EditItemPage> {
|
|||
int _ctrUnit = 0;
|
||||
String _ctrValue = '';
|
||||
int? _ctrLink;
|
||||
int _ctrState = 0;
|
||||
|
||||
// data cache
|
||||
List<RoomCategory> categories = [];
|
||||
|
@ -100,6 +104,13 @@ class _EditItemPageState extends State<EditItemPage> {
|
|||
final resp = RoomItem.fromJSON(body['data']);
|
||||
setState(() {
|
||||
item = resp;
|
||||
_ctrName.text = resp.name;
|
||||
_ctrDescription.text = resp.description;
|
||||
_ctrValue = resp.value;
|
||||
_ctrCategory = resp.category;
|
||||
_ctrLink = resp.link;
|
||||
_ctrUnit = resp.unit;
|
||||
_ctrState = resp.state;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -112,9 +123,7 @@ class _EditItemPageState extends State<EditItemPage> {
|
|||
fetchCategories();
|
||||
fetchProducts();
|
||||
|
||||
if (widget.item != null) {
|
||||
fetchItem();
|
||||
}
|
||||
fetchItem();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -122,9 +131,7 @@ class _EditItemPageState extends State<EditItemPage> {
|
|||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text((widget.item == null)
|
||||
? AppLocalizations.of(context)!.createItem
|
||||
: AppLocalizations.of(context)!.editItem),
|
||||
title: Text(AppLocalizations.of(context)!.editItem),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
child: Center(
|
||||
|
@ -227,52 +234,29 @@ class _EditItemPageState extends State<EditItemPage> {
|
|||
|
||||
final user = context.read<User>();
|
||||
|
||||
if (widget.item == null) {
|
||||
doNetworkRequest(scaffMgr,
|
||||
req: () => postWithCreadentials(
|
||||
credentials: user,
|
||||
target: user.server,
|
||||
path: 'addItem',
|
||||
body: {
|
||||
'room': widget.room,
|
||||
'server': widget.server,
|
||||
'state': 0,
|
||||
'title': _ctrName.text,
|
||||
'description': _ctrDescription.text,
|
||||
'listCatID': _ctrCategory,
|
||||
'unit': _ctrUnit,
|
||||
'value': _ctrValue,
|
||||
'listProdID': _ctrLink
|
||||
}),
|
||||
onOK: (_) async {
|
||||
nav.pop();
|
||||
});
|
||||
} else {
|
||||
doNetworkRequest(scaffMgr,
|
||||
req: () => postWithCreadentials(
|
||||
credentials: user,
|
||||
target: user.server,
|
||||
path: 'changeItem',
|
||||
body: {
|
||||
'listItemID': widget.item,
|
||||
'room': widget.room,
|
||||
'server': widget.server,
|
||||
'title': _ctrName.text,
|
||||
'description': _ctrDescription.text,
|
||||
'listCatID': _ctrCategory,
|
||||
'defUnit': _ctrUnit,
|
||||
'defValue': _ctrValue,
|
||||
'listProdID': _ctrLink
|
||||
}),
|
||||
onOK: (_) async {
|
||||
nav.pop();
|
||||
});
|
||||
}
|
||||
doNetworkRequest(scaffMgr,
|
||||
req: () => postWithCreadentials(
|
||||
credentials: user,
|
||||
target: user.server,
|
||||
path: 'changeItem',
|
||||
body: {
|
||||
'listItemID': widget.item,
|
||||
'room': widget.room,
|
||||
'server': widget.server,
|
||||
'title': _ctrName.text,
|
||||
'state': _ctrState,
|
||||
'description': _ctrDescription.text,
|
||||
'listCatID': _ctrCategory,
|
||||
'unit': _ctrUnit,
|
||||
'value': _ctrValue,
|
||||
'listProdID': _ctrLink
|
||||
}),
|
||||
onOK: (_) async {
|
||||
nav.pop();
|
||||
});
|
||||
},
|
||||
label: Text(widget.item != null
|
||||
? AppLocalizations.of(context)!.editItemShort
|
||||
: AppLocalizations.of(context)!.createItemShort),
|
||||
icon: Icon(widget.item != null ? Icons.edit : Icons.add)),
|
||||
label: Text(AppLocalizations.of(context)!.editItemShort),
|
||||
icon: const Icon(Icons.edit)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
285
lib/screens/room/items/new.dart
Normal file
285
lib/screens/room/items/new.dart
Normal file
|
@ -0,0 +1,285 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:outbag_app/backend/request.dart';
|
||||
import 'package:outbag_app/backend/room.dart';
|
||||
import 'package:outbag_app/backend/user.dart';
|
||||
import 'package:outbag_app/components/category_chip.dart';
|
||||
import 'package:outbag_app/tools/fetch_wrapper.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class NewItemPage extends StatefulWidget {
|
||||
final String room;
|
||||
final String server;
|
||||
|
||||
final int? item;
|
||||
|
||||
const NewItemPage(
|
||||
{super.key, required this.room, required this.server, this.item});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => _NewItemPageState();
|
||||
}
|
||||
|
||||
class _NewItemPageState extends State<NewItemPage> {
|
||||
// input controllers
|
||||
final _ctrInput = TextEditingController();
|
||||
|
||||
// data cache
|
||||
List<RoomCategory> categories = [];
|
||||
List<RoomProduct> products = [];
|
||||
RoomItem? item;
|
||||
|
||||
void fetchCategories() {
|
||||
final user = context.read<User>();
|
||||
|
||||
// TODO: load cached categories first
|
||||
|
||||
doNetworkRequest(ScaffoldMessenger.of(context),
|
||||
req: () => postWithCreadentials(
|
||||
credentials: user,
|
||||
target: user.server,
|
||||
path: 'getCategories',
|
||||
body: {'room': widget.room, 'server': widget.server}),
|
||||
onOK: (body) async {
|
||||
final resp = body['data']
|
||||
.map<RoomCategory>((raw) => RoomCategory.fromJSON(raw))
|
||||
.toList();
|
||||
|
||||
setState(() {
|
||||
categories = resp;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void fetchProducts() {
|
||||
final user = context.read<User>();
|
||||
|
||||
// TODO: load cached products first
|
||||
|
||||
doNetworkRequest(ScaffoldMessenger.of(context),
|
||||
req: () => postWithCreadentials(
|
||||
credentials: user,
|
||||
target: user.server,
|
||||
path: 'getProducts',
|
||||
body: {'room': widget.room, 'server': widget.server}),
|
||||
onOK: (body) async {
|
||||
final resp = body['data']
|
||||
.map<RoomProduct>((raw) => RoomProduct.fromJSON(raw))
|
||||
.toList();
|
||||
|
||||
setState(() {
|
||||
products = resp;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void fetchItem() {
|
||||
final user = context.read<User>();
|
||||
|
||||
// TODO: load cached item first
|
||||
|
||||
doNetworkRequest(ScaffoldMessenger.of(context),
|
||||
req: () => postWithCreadentials(
|
||||
credentials: user,
|
||||
target: user.server,
|
||||
path: 'getItem',
|
||||
body: {
|
||||
'room': widget.room,
|
||||
'server': widget.server,
|
||||
'listItemID': widget.item
|
||||
}),
|
||||
onOK: (body) async {
|
||||
final resp = RoomItem.fromJSON(body['data']);
|
||||
setState(() {
|
||||
item = resp;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||
fetchCategories();
|
||||
fetchProducts();
|
||||
|
||||
if (widget.item != null) {
|
||||
fetchItem();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
String _query = "";
|
||||
|
||||
void createItem(BuildContext ctx, String name, int? productID) {
|
||||
final scaffMgr = ScaffoldMessenger.of(context);
|
||||
final router = GoRouter.of(context);
|
||||
final user = context.read<User>();
|
||||
|
||||
doNetworkRequest(scaffMgr,
|
||||
req: () => postWithCreadentials(
|
||||
target: user.server,
|
||||
credentials: user,
|
||||
path: 'addItem',
|
||||
body: {
|
||||
'room': widget.room,
|
||||
'server': widget.server,
|
||||
'state': 0,
|
||||
'title': name,
|
||||
'description': '',
|
||||
'listCatID': null,
|
||||
'unit': 0,
|
||||
'value': '',
|
||||
'listProdID': productID
|
||||
}),
|
||||
onOK: (body) async {
|
||||
final id = body["data"]["listItemID"];
|
||||
// TODO cache item
|
||||
// launch edit item screen
|
||||
router.pushReplacementNamed('edit-item', params: {
|
||||
'server': widget.server,
|
||||
'id': widget.room,
|
||||
'item': id.toString()
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
void createProduct(BuildContext ctx, String name, Function(int) cb) {
|
||||
final scaffMgr = ScaffoldMessenger.of(context);
|
||||
final user = context.read<User>();
|
||||
|
||||
doNetworkRequest(scaffMgr,
|
||||
req: () => postWithCreadentials(
|
||||
target: user.server,
|
||||
credentials: user,
|
||||
path: 'addProduct',
|
||||
body: {
|
||||
'room': widget.room,
|
||||
'server': widget.server,
|
||||
'title': name,
|
||||
'description': '',
|
||||
'listCatID': null,
|
||||
'defUnit': 0,
|
||||
'defValue': '',
|
||||
'ean': '',
|
||||
'parent': null
|
||||
}),
|
||||
onOK: (body) async {
|
||||
final id = body["data"]["listProdID"];
|
||||
// TODO: cache product
|
||||
cb(id);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text((widget.item == null)
|
||||
? AppLocalizations.of(context)!.createItem
|
||||
: AppLocalizations.of(context)!.editItem),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
child: Center(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(14),
|
||||
child: ConstrainedBox(
|
||||
constraints: const BoxConstraints(maxWidth: 400),
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
SearchBar(
|
||||
controller: _ctrInput,
|
||||
leading: const Icon(Icons.search),
|
||||
hintText:
|
||||
AppLocalizations.of(context)!.newItemQueryHint,
|
||||
onChanged: (text) {
|
||||
setState(() {
|
||||
_query = text;
|
||||
});
|
||||
},
|
||||
),
|
||||
const Divider(),
|
||||
// button bar
|
||||
...((_query == "")
|
||||
? ([
|
||||
Text(AppLocalizations.of(context)!
|
||||
.newItemQueryEmpty)
|
||||
])
|
||||
: ([
|
||||
Wrap(
|
||||
spacing: 20,
|
||||
runSpacing: 10,
|
||||
alignment: WrapAlignment.center,
|
||||
crossAxisAlignment:
|
||||
WrapCrossAlignment.center,
|
||||
children: [
|
||||
Text(AppLocalizations.of(context)!
|
||||
.newItemQuickAccessPrefix),
|
||||
// new item
|
||||
FilledButton.icon(
|
||||
onPressed: () {
|
||||
// create new named item
|
||||
// launch edit item screen once done
|
||||
createItem(context, _query, null);
|
||||
},
|
||||
icon: const Icon(Icons.add),
|
||||
label: Text(_query)),
|
||||
// new product
|
||||
FilledButton.icon(
|
||||
onPressed: () {
|
||||
// create new product with name,
|
||||
// create new item with name
|
||||
// and link to the created product
|
||||
// launch edit item screen once done
|
||||
createProduct(
|
||||
context,
|
||||
_query,
|
||||
(p0) => createItem(
|
||||
context, _query, p0));
|
||||
},
|
||||
icon: const Icon(Icons.add),
|
||||
label: Text(AppLocalizations.of(
|
||||
context)!
|
||||
.newItemQuickProduct(_query))),
|
||||
])
|
||||
])),
|
||||
const Divider(),
|
||||
// link products search
|
||||
...((products
|
||||
// show all products if query is empty
|
||||
// when query isn't empty show products
|
||||
// that contain the query in the title
|
||||
// or description
|
||||
.where((element) =>
|
||||
(_query == "") ||
|
||||
element.name.contains(_query) ||
|
||||
element.description.contains(_query))
|
||||
.map((e) => ListTile(
|
||||
title: Text(e.name),
|
||||
subtitle: Text(e.description),
|
||||
trailing: CategoryChip(
|
||||
category: categories
|
||||
.where((element) =>
|
||||
element.id == e.category)
|
||||
.firstOrNull ??
|
||||
RoomCategory.other(context),
|
||||
),
|
||||
onTap: () {
|
||||
// create new item and link it to the product
|
||||
// launch edit item screen once done
|
||||
createItem(
|
||||
context,
|
||||
// use productname as item name
|
||||
e.name,
|
||||
e.id);
|
||||
},
|
||||
))))
|
||||
],
|
||||
))))),
|
||||
);
|
||||
}
|
||||
}
|
|
@ -445,7 +445,7 @@ class ShoppingListItemInfo extends StatelessWidget {
|
|||
subtitle: Text(AppLocalizations.of(context)!.editItemLong),
|
||||
trailing: const Icon(Icons.chevron_right),
|
||||
onTap: () {
|
||||
context.pushNamed('edit-product', params: {
|
||||
context.pushNamed('edit-item', params: {
|
||||
'server': server,
|
||||
'id': room,
|
||||
'item': item.id.toString()
|
||||
|
|
172
pubspec.lock
172
pubspec.lock
|
@ -5,18 +5,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: archive
|
||||
sha256: d6347d54a2d8028e0437e3c099f66fdb8ae02c4720c1e7534c9f24c10351f85d
|
||||
sha256: "7b875fd4a20b165a3084bd2d210439b22ebc653f21cea4842729c0c30c82596b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.6"
|
||||
version: "3.4.9"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: args
|
||||
sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440"
|
||||
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.4.2"
|
||||
async:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -45,10 +45,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: checked_yaml
|
||||
sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311"
|
||||
sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
version: "2.0.3"
|
||||
cli_util:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -85,10 +85,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: crypto
|
||||
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
|
||||
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
version: "3.0.3"
|
||||
fake_async:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -101,18 +101,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: ffi
|
||||
sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
|
||||
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "2.1.0"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file
|
||||
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.4"
|
||||
version: "7.0.0"
|
||||
flutter:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
|
@ -130,10 +130,10 @@ packages:
|
|||
dependency: "direct dev"
|
||||
description:
|
||||
name: flutter_lints
|
||||
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
|
||||
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "2.0.3"
|
||||
flutter_localizations:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
|
@ -143,10 +143,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_svg
|
||||
sha256: "12006889e2987c549c4c1ec1a5ba4ec4b24d34d2469ee5f9476c926dcecff266"
|
||||
sha256: d39e7f95621fc84376bc0f7d504f05c3a41488c562f4a8ad410569127507402c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.4"
|
||||
version: "2.0.9"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
|
@ -161,18 +161,18 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: go_router
|
||||
sha256: "432409518740645ce7f28802171b78783197d01149fad44f9b8ae55f40277139"
|
||||
sha256: bd7e671d26fd39c78cba82070fa34ef1f830b0e7ed1aeebccabc6561302a7ee5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.5.0"
|
||||
version: "6.5.9"
|
||||
http:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: http
|
||||
sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482"
|
||||
sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.13.5"
|
||||
version: "0.13.6"
|
||||
http_parser:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -185,10 +185,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: image
|
||||
sha256: "483a389d6ccb292b570c31b3a193779b1b0178e7eb571986d9a49904b6861227"
|
||||
sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.15"
|
||||
version: "4.1.3"
|
||||
intl:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -209,18 +209,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: json_annotation
|
||||
sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317
|
||||
sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.8.0"
|
||||
version: "4.8.1"
|
||||
lints:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: lints
|
||||
sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
|
||||
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "2.1.1"
|
||||
localstore:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -233,10 +233,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: logging
|
||||
sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
|
||||
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
version: "1.2.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -289,154 +289,146 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: path_provider
|
||||
sha256: "04890b994ee89bfa80bf3080bfec40d5a92c5c7a785ebb02c13084a099d2b6f9"
|
||||
sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.13"
|
||||
version: "2.1.1"
|
||||
path_provider_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: "019f18c9c10ae370b08dce1f3e3b73bc9f58e7f087bb5e921f06529438ac0ae7"
|
||||
sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.24"
|
||||
version: "2.2.1"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_foundation
|
||||
sha256: "12eee51abdf4d34c590f043f45073adbb45514a108bd9db4491547a2fd891059"
|
||||
sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
version: "2.3.1"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_linux
|
||||
sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1"
|
||||
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.10"
|
||||
version: "2.2.1"
|
||||
path_provider_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_platform_interface
|
||||
sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
|
||||
sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.6"
|
||||
version: "2.1.1"
|
||||
path_provider_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_windows
|
||||
sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130
|
||||
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
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:
|
||||
name: platform
|
||||
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
|
||||
sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
version: "3.1.3"
|
||||
plugin_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: plugin_platform_interface
|
||||
sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
|
||||
sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.4"
|
||||
version: "2.1.7"
|
||||
pointycastle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pointycastle
|
||||
sha256: ae73e842cdd27a3467a71d70cefd9b198538aab4fc7dde1d0e8c78c96225abf0
|
||||
sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.7.1"
|
||||
process:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: process
|
||||
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.2.4"
|
||||
version: "3.7.3"
|
||||
provider:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: provider
|
||||
sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f
|
||||
sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.5"
|
||||
version: "6.1.1"
|
||||
shared_preferences:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: "78528fd87d0d08ffd3e69551173c026e8eacc7b7079c82eb6a77413957b7e394"
|
||||
sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.20"
|
||||
version: "2.2.2"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: ad423a80fe7b4e48b50d6111b3ea1027af0e959e49d485712e134863d9c1c521
|
||||
sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.17"
|
||||
version: "2.2.1"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_foundation
|
||||
sha256: "1e755f8583229f185cfca61b1d80fb2344c9d660e1c69ede5450d8f478fa5310"
|
||||
sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.3.4"
|
||||
shared_preferences_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_linux
|
||||
sha256: "3a59ed10890a8409ad0faad7bb2957dab4b92b8fbe553257b05d30ed8af2c707"
|
||||
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.3.2"
|
||||
shared_preferences_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_platform_interface
|
||||
sha256: "824bfd02713e37603b2bdade0842e47d56e7db32b1dcdd1cae533fb88e2913fc"
|
||||
sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.3.1"
|
||||
shared_preferences_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_web
|
||||
sha256: "0dc2633f215a3d4aa3184c9b2c5766f4711e4e5a6b256e62aafee41f89f1bfb8"
|
||||
sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.6"
|
||||
version: "2.2.2"
|
||||
shared_preferences_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_windows
|
||||
sha256: "71bcd669bb9cdb6b39f22c4a7728b6d49e934f6cba73157ffa5a54f1eed67436"
|
||||
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.3.2"
|
||||
sky_engine:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
@ -494,34 +486,34 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: typed_data
|
||||
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
|
||||
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
version: "1.3.2"
|
||||
vector_graphics:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics
|
||||
sha256: "4cf8e60dbe4d3a693d37dff11255a172594c0793da542183cbfe7fe978ae4aaa"
|
||||
sha256: "0f0c746dd2d6254a0057218ff980fc7f5670fd0fcf5e4db38a490d31eed4ad43"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.4"
|
||||
version: "1.1.9+1"
|
||||
vector_graphics_codec:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics_codec
|
||||
sha256: "278ad5f816f58b1967396d1f78ced470e3e58c9fe4b27010102c0a595c764468"
|
||||
sha256: "0edf6d630d1bfd5589114138ed8fada3234deacc37966bec033d3047c29248b7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.4"
|
||||
version: "1.1.9+1"
|
||||
vector_graphics_compiler:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics_compiler
|
||||
sha256: "0bf61ad56e6fd6688a2865d3ceaea396bc6a0a90ea0d7ad5049b1b76c09d6163"
|
||||
sha256: d24333727332d9bd20990f1483af4e09abdb9b1fc7c3db940b56ab5c42790c26
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.4"
|
||||
version: "1.1.9+1"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -542,34 +534,34 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46
|
||||
sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.3"
|
||||
version: "5.1.1"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xdg_directories
|
||||
sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
|
||||
sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
version: "1.0.3"
|
||||
xml:
|
||||
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:
|
||||
name: yaml
|
||||
sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370"
|
||||
sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.1"
|
||||
version: "3.1.2"
|
||||
sdks:
|
||||
dart: ">=3.2.0-194.0.dev <4.0.0"
|
||||
flutter: ">=3.7.0-0"
|
||||
dart: ">=3.2.0 <4.0.0"
|
||||
flutter: ">=3.16.0"
|
||||
|
|
Loading…
Reference in a new issue