diff --git a/.gitignore b/.gitignore index 146d101e..d5770c55 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ android/app/.classpath android/app/.project android/app/.settings/org.eclipse.buildship.core.prefs .vscode/ +pubspec.lock diff --git a/lib/main.dart b/lib/main.dart index 172b4b7e..bb9c98ee 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -16,6 +16,7 @@ import 'package:settings/services/settings_service.dart'; import 'package:ubuntu_service/ubuntu_service.dart'; import 'package:udisks/udisks.dart'; import 'package:upower/upower.dart'; +import 'package:xdg_accounts/xdg_accounts.dart'; import 'package:yaru_widgets/yaru_widgets.dart'; void main() async { @@ -77,6 +78,10 @@ void main() async { DisplayService.new, dispose: (s) => s.dispose(), ); + registerService( + XdgAccounts.new, + dispose: (s) => s.dispose(), + ); runApp(const UbuntuSettingsApp()); } diff --git a/lib/view/pages/accounts/accounts_model.dart b/lib/view/pages/accounts/accounts_model.dart new file mode 100644 index 00000000..3b747432 --- /dev/null +++ b/lib/view/pages/accounts/accounts_model.dart @@ -0,0 +1,58 @@ +import 'dart:async'; + +import 'package:safe_change_notifier/safe_change_notifier.dart'; +import 'package:xdg_accounts/xdg_accounts.dart'; + +class AccountsModel extends SafeChangeNotifier { + AccountsModel(this._xdgAccounts); + + final XdgAccounts _xdgAccounts; + + StreamSubscription? _usersChangedSub; + List? get users => _xdgAccounts.xdgUsers; + + Future addUser({ + required String name, + required String fullname, + required int accountType, + required String password, + required String passwordHint, + }) async { + final path = await _xdgAccounts.createUser( + name: name, + fullname: fullname, + accountType: accountType, + ); + final user = _xdgAccounts.findUserByPath(path); + if (user != null) { + await user.setLocked(false); + await user.setPasswordMode(0); + await user.setPassword(password, passwordHint); + } + } + + Future deleteUser({ + required int id, + required String name, + required bool removeFiles, + }) async => + await _xdgAccounts.deleteUser( + id: id, + name: name, + removeFiles: removeFiles, + ); + + Future init() async { + await _xdgAccounts.init(); + _usersChangedSub = _xdgAccounts.usersChanged.listen((event) { + notifyListeners(); + }); + notifyListeners(); + } + + @override + void dispose() { + super.dispose(); + _usersChangedSub?.cancel(); + } +} diff --git a/lib/view/pages/accounts/accounts_page.dart b/lib/view/pages/accounts/accounts_page.dart new file mode 100644 index 00000000..5f4f325a --- /dev/null +++ b/lib/view/pages/accounts/accounts_page.dart @@ -0,0 +1,316 @@ +import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import 'package:settings/constants.dart'; +import 'package:settings/l10n/l10n.dart'; +import 'package:settings/view/common/yaru_switch_row.dart'; +import 'package:settings/view/pages/accounts/accounts_model.dart'; +import 'package:settings/view/pages/accounts/user_model.dart'; +import 'package:settings/view/pages/privacy/house_keeping_page.dart'; +import 'package:settings/view/pages/settings_page.dart'; +import 'package:ubuntu_service/ubuntu_service.dart'; +import 'package:xdg_accounts/xdg_accounts.dart'; +import 'package:yaru_icons/yaru_icons.dart'; +import 'package:yaru_widgets/yaru_widgets.dart'; + +class AccountsPage extends StatelessWidget { + const AccountsPage({super.key}); + + static Widget create(BuildContext context) => + ChangeNotifierProvider( + create: (context) => AccountsModel(getService())..init(), + child: const AccountsPage(), + ); + + static Widget createTitle(BuildContext context) => + Text(context.l10n.usersPageTitle); + + static bool searchMatches(String value, BuildContext context) => value + .isNotEmpty + ? context.l10n.usersPageTitle.toLowerCase().contains(value.toLowerCase()) + : false; + + @override + Widget build(BuildContext context) { + final model = context.watch(); + return SettingsPage( + children: [ + Center( + child: SizedBox( + width: kDefaultWidth, + child: Column( + children: [ + YaruTile( + title: const Text('Add user'), + leading: YaruIconButton( + icon: const Icon( + YaruIcons.plus, + ), + onPressed: () => showDialog( + context: context, + builder: (context) => + ChangeNotifierProvider.value( + value: model, + child: const _AddUserDialog(), + ), + ), + ), + ), + for (final user in model.users ?? []) + _UserTile.create( + context: context, + user: user, + deleteUser: model.deleteUser, + init: () async { + await Future.delayed(const Duration(seconds: 1)); + }, + ) + ], + ), + ), + ) + ], + ); + } +} + +class _AddUserDialog extends StatefulWidget { + const _AddUserDialog(); + + @override + State<_AddUserDialog> createState() => _AddUserDialogState(); +} + +class _AddUserDialogState extends State<_AddUserDialog> { + late TextEditingController _usernameController; + late TextEditingController _fullNameController; + late TextEditingController _passwordController; + late TextEditingController _passwordHintController; + XdgAccountType _accountType = XdgAccountType.user; + + @override + void initState() { + super.initState(); + _usernameController = TextEditingController(); + _passwordController = TextEditingController(); + _fullNameController = TextEditingController(); + _passwordHintController = TextEditingController(); + } + + @override + void dispose() { + _usernameController.dispose(); + _passwordController.dispose(); + _fullNameController.dispose(); + _passwordHintController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final model = context.watch(); + + return AlertDialog( + title: const YaruDialogTitleBar( + title: Text('Add User'), + ), + titlePadding: EdgeInsets.zero, + contentPadding: const EdgeInsets.all(kYaruPagePadding), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + width: 350, + child: YaruSwitchRow( + value: _accountType == XdgAccountType.admin, + onChanged: (value) => setState(() { + _accountType = + value ? XdgAccountType.admin : XdgAccountType.user; + }), + trailingWidget: const Text('Admin'), // TODO: localize + ), + ), + const SizedBox( + height: kYaruPagePadding, + ), + TextField( + controller: _usernameController, + decoration: const InputDecoration(labelText: 'username'), + ), + const SizedBox( + height: kYaruPagePadding, + ), + TextField( + controller: _fullNameController, + decoration: const InputDecoration(labelText: 'full name'), + ), + const SizedBox( + height: kYaruPagePadding, + ), + TextField( + controller: _passwordController, + obscureText: true, + decoration: const InputDecoration(labelText: 'password'), + ), + const SizedBox( + height: kYaruPagePadding, + ), + TextField( + controller: _passwordHintController, + obscureText: true, + decoration: const InputDecoration(labelText: 'Password hint'), + ) + ], + ), + actions: [ + ElevatedButton( + onPressed: () => model + .addUser( + name: _usernameController.text, + fullname: _fullNameController.text, + accountType: _accountType.index, + password: _passwordController.text, + passwordHint: _passwordHintController.text, + ) + .then((_) { + model.init().then((value) => Navigator.pop(context)); + }), + child: Text(context.l10n.confirm), + ) + ], + ); + } +} + +class _UserTile extends StatelessWidget { + const _UserTile({required this.deleteUser, required this.init}); + + final Future Function({ + required int id, + required String name, + required bool removeFiles, + }) deleteUser; + final Future Function() init; + + static Widget create({ + required BuildContext context, + required XdgUser user, + required Future Function({ + required int id, + required String name, + required bool removeFiles, + }) deleteUser, + required final Future Function() init, + }) { + return ChangeNotifierProvider( + create: (context) => UserModel(user)..init(), + child: _UserTile( + deleteUser: deleteUser, + init: init, + ), + ); + } + + @override + Widget build(BuildContext context) { + final model = context.watch(); + final theme = Theme.of(context); + + return YaruTile( + leading: model.iconFile != null + ? CircleAvatar( + radius: 20, + backgroundImage: FileImage(model.iconFile!), + ) + : CircleAvatar( + radius: 20, + backgroundColor: theme.colorScheme.inverseSurface, + child: Center( + child: Text( + model.userName?.substring(0, 1) ?? '', + style: TextStyle( + fontSize: 20, + color: theme.colorScheme.onInverseSurface, + ), + ), + ), + ), + title: Text(model.userName ?? ''), + subtitle: Text( + model.accountType?.name ?? '', + ), + trailing: Row( + children: [ + YaruIconButton( + icon: const Icon(YaruIcons.pen), + onPressed: () => showDialog( + context: context, + builder: (context) => ChangeNotifierProvider.value( + value: model, + child: const _EditUserDialog(), + ), + ), + ), + if (model.id != null || model.userName == null) + YaruIconButton( + icon: const Icon(YaruIcons.trash), + onPressed: () => showDialog( + context: context, + builder: (context) => ConfirmationDialog( + iconData: YaruIcons.trash, + onConfirm: () => deleteUser( + id: model.id!, + name: model.userName!, + removeFiles: true, + ).then((_) { + init().then((value) => Navigator.pop(context)); + }), + ), + ), + ), + ], + ), + ); + } +} + +class _EditUserDialog extends StatefulWidget { + const _EditUserDialog(); + + @override + State<_EditUserDialog> createState() => _EditUserDialogState(); +} + +class _EditUserDialogState extends State<_EditUserDialog> { + late TextEditingController userNameController; + + @override + void initState() { + super.initState(); + userNameController = TextEditingController(); + } + + @override + void dispose() { + userNameController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final model = context.watch(); + userNameController.text = model.userName ?? ''; + return SimpleDialog( + titlePadding: EdgeInsets.zero, + contentPadding: const EdgeInsets.all(kYaruPagePadding), + title: YaruTitleBar( + title: Text(model.userName ?? ''), + ), + children: [ + TextField( + controller: userNameController, + onSubmitted: (value) => model.userName = value, + ) + ], + ); + } +} diff --git a/lib/view/pages/accounts/user_model.dart b/lib/view/pages/accounts/user_model.dart new file mode 100644 index 00000000..83302788 --- /dev/null +++ b/lib/view/pages/accounts/user_model.dart @@ -0,0 +1,47 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:safe_change_notifier/safe_change_notifier.dart'; +import 'package:xdg_accounts/xdg_accounts.dart'; + +class UserModel extends SafeChangeNotifier { + UserModel(this._user); + + final XdgUser _user; + StreamSubscription? _userNameSub; + + String? get userName => _user.userName; + set userName(String? value) { + if (value == null) return; + _user.setUserName(value, allowInteractiveAuthorization: true); + } + + int? get id => _user.uid; + + File? get iconFile { + String? iconFile; + try { + iconFile = _user.iconFile; + } on Exception catch (_) { + return null; + } + + if (iconFile == null || iconFile.endsWith('.face')) { + return null; + } else { + return File(_user.iconFile!.toString()); + } + } + + XdgAccountType? get accountType => _user.accountType; + + Future init() async { + _userNameSub = _user.userNameChanged.listen((event) => notifyListeners()); + } + + @override + void dispose() { + _userNameSub?.cancel(); + super.dispose(); + } +} diff --git a/lib/view/pages/page_items.dart b/lib/view/pages/page_items.dart index cb06f2cf..c2c538a3 100644 --- a/lib/view/pages/page_items.dart +++ b/lib/view/pages/page_items.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:settings/l10n/l10n.dart'; import 'package:settings/view/pages/accessibility/accessibility_page.dart'; +import 'package:settings/view/pages/accounts/accounts_page.dart'; import 'package:settings/view/pages/appearance/appearance_page.dart'; import 'package:settings/view/pages/apps/apps_page.dart'; import 'package:settings/view/pages/bluetooth/bluetooth_page.dart'; @@ -23,7 +24,6 @@ import 'package:settings/view/pages/removable_media/removable_media_page.dart'; import 'package:settings/view/pages/search/search_page.dart'; import 'package:settings/view/pages/settings_page_item.dart'; import 'package:settings/view/pages/sound/sound_page.dart'; -import 'package:settings/view/pages/users/users.dart'; import 'package:settings/view/pages/wallpaper/wallpaper_page.dart'; import 'package:yaru_icons/yaru_icons.dart'; @@ -170,10 +170,10 @@ List getPageItems(BuildContext context) => [ title: context.l10n.accessibilityPageTitle, ), SettingsPageItem( - titleBuilder: UsersPage.createTitle, + titleBuilder: AccountsPage.createTitle, iconBuilder: (context, selected) => const Icon(YaruIcons.users), - builder: UsersPage.create, - searchMatches: UsersPage.searchMatches, + builder: AccountsPage.create, + searchMatches: AccountsPage.searchMatches, title: context.l10n.usersPageTitle, ), SettingsPageItem( diff --git a/lib/view/pages/privacy/house_keeping_page.dart b/lib/view/pages/privacy/house_keeping_page.dart index 51c77ded..b3059536 100644 --- a/lib/view/pages/privacy/house_keeping_page.dart +++ b/lib/view/pages/privacy/house_keeping_page.dart @@ -82,7 +82,7 @@ class HouseKeepingPage extends StatelessWidget { trailing: _TrashButton( onPressed: () => showDialog( context: context, - builder: (context) => _ConfirmationDialog( + builder: (context) => ConfirmationDialog( title: context.l10n.houseKeepingRecentFilesClearAction, iconData: YaruIcons.clock, onConfirm: () { @@ -144,7 +144,7 @@ class HouseKeepingPage extends StatelessWidget { trailing: _TrashButton( onPressed: () => showDialog( context: context, - builder: (context) => _ConfirmationDialog( + builder: (context) => ConfirmationDialog( title: context.l10n.houseKeepingEmptyTrash, iconData: YaruIcons.trash_full, onConfirm: () { @@ -160,7 +160,7 @@ class HouseKeepingPage extends StatelessWidget { trailing: _TrashButton( onPressed: () => showDialog( context: context, - builder: (context) => _ConfirmationDialog( + builder: (context) => ConfirmationDialog( title: context.l10n.houseKeepingRemoveTempFiles, iconData: YaruIcons.document, onConfirm: () { @@ -178,8 +178,9 @@ class HouseKeepingPage extends StatelessWidget { } } -class _ConfirmationDialog extends StatefulWidget { - const _ConfirmationDialog({ +class ConfirmationDialog extends StatefulWidget { + const ConfirmationDialog({ + super.key, this.onConfirm, required this.iconData, this.title, @@ -190,10 +191,10 @@ class _ConfirmationDialog extends StatefulWidget { final String? title; @override - State<_ConfirmationDialog> createState() => _ConfirmationDialogState(); + State createState() => _ConfirmationDialogState(); } -class _ConfirmationDialogState extends State<_ConfirmationDialog> +class _ConfirmationDialogState extends State with SingleTickerProviderStateMixin { late AnimationController controller; late Animation sizeAnimation; diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index 2814e68a..00000000 --- a/pubspec.lock +++ /dev/null @@ -1,1265 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _fe_analyzer_shared: - dependency: transitive - description: - name: _fe_analyzer_shared - sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a - url: "https://pub.dev" - source: hosted - version: "61.0.0" - analyzer: - dependency: transitive - description: - name: analyzer - sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 - url: "https://pub.dev" - source: hosted - version: "5.13.0" - archive: - dependency: transitive - description: - name: archive - sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" - url: "https://pub.dev" - source: hosted - version: "3.3.7" - 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" - barcode: - dependency: transitive - description: - name: barcode - sha256: "789f898eef0bd88312470bdb2cc996f895ad7dd5f89e9adde84b204546a90b45" - url: "https://pub.dev" - source: hosted - version: "2.2.4" - bidi: - dependency: transitive - description: - name: bidi - sha256: "6794b226bc939731308b8539c49bb6c2fdbf0e78c3a65e9b9e81e727c256dfe6" - url: "https://pub.dev" - source: hosted - version: "2.0.7" - bluez: - dependency: "direct main" - description: - name: bluez - sha256: bfd004c81e3de0f06dce8580bc39a4600e4a6efe465a866b31d4d954c9f356aa - url: "https://pub.dev" - source: hosted - version: "0.8.1" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - build: - dependency: transitive - description: - name: build - sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" - url: "https://pub.dev" - source: hosted - version: "2.4.1" - build_config: - dependency: transitive - description: - name: build_config - sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 - url: "https://pub.dev" - source: hosted - version: "1.1.1" - build_daemon: - dependency: transitive - description: - name: build_daemon - sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" - url: "https://pub.dev" - source: hosted - version: "4.0.0" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - sha256: "6c4dd11d05d056e76320b828a1db0fc01ccd376922526f8e9d6c796a5adbac20" - url: "https://pub.dev" - source: hosted - version: "2.2.1" - build_runner: - dependency: "direct dev" - description: - name: build_runner - sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" - url: "https://pub.dev" - source: hosted - version: "2.4.6" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41" - url: "https://pub.dev" - source: hosted - version: "7.2.10" - built_collection: - dependency: transitive - description: - name: built_collection - sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.dev" - source: hosted - version: "5.1.1" - built_value: - dependency: transitive - description: - name: built_value - sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166" - url: "https://pub.dev" - source: hosted - version: "8.6.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" - clock: - dependency: transitive - description: - name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" - source: hosted - version: "1.1.1" - code_builder: - dependency: transitive - description: - name: code_builder - sha256: "4ad01d6e56db961d29661561effde45e519939fdaeb46c351275b182eac70189" - url: "https://pub.dev" - source: hosted - version: "4.5.0" - collection: - dependency: "direct main" - description: - name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.dev" - source: hosted - version: "1.17.1" - convert: - dependency: transitive - description: - name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" - source: hosted - version: "3.1.1" - coverage: - dependency: transitive - description: - name: coverage - sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097" - url: "https://pub.dev" - source: hosted - version: "1.6.3" - cross_file: - dependency: transitive - description: - name: cross_file - sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" - url: "https://pub.dev" - source: hosted - version: "0.3.3+4" - crypto: - dependency: transitive - description: - name: crypto - sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.dev" - source: hosted - version: "3.0.3" - cupertino_icons: - dependency: transitive - description: - name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be - url: "https://pub.dev" - source: hosted - version: "1.0.5" - dart_style: - dependency: transitive - description: - name: dart_style - sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" - url: "https://pub.dev" - source: hosted - version: "2.3.2" - dbus: - dependency: "direct main" - description: - name: dbus - sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" - url: "https://pub.dev" - source: hosted - version: "0.7.8" - duration: - dependency: "direct main" - description: - name: duration - sha256: "0548a12d235dab185c677ef660995f23fdc06a02a2b984aa23805f6a03d82815" - url: "https://pub.dev" - source: hosted - version: "3.0.13" - equatable: - dependency: "direct main" - description: - name: equatable - sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 - url: "https://pub.dev" - source: hosted - version: "2.0.5" - 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: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 - url: "https://pub.dev" - source: hosted - version: "2.0.2" - file: - dependency: transitive - description: - name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" - url: "https://pub.dev" - source: hosted - version: "7.0.0" - file_selector: - dependency: "direct main" - description: - name: file_selector - sha256: "59b35aa4af7988be7ec88f9ddaa6c71c5b54bf0f8b35009389d9343b10e9c3af" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - file_selector_android: - dependency: transitive - description: - name: file_selector_android - sha256: "43e5c719f671b9181bef1bf2851135c3ad993a9a6c804a4ccb07579cfee84e34" - url: "https://pub.dev" - source: hosted - version: "0.5.0+2" - file_selector_ios: - dependency: transitive - description: - name: file_selector_ios - sha256: "54542b6b35e3ced6246df5fae13cf0b879d14669d0fdff1a53a098f16e23328b" - url: "https://pub.dev" - source: hosted - version: "0.5.1+4" - file_selector_linux: - dependency: "direct main" - description: - name: file_selector_linux - sha256: "770eb1ab057b5ae4326d1c24cc57710758b9a46026349d021d6311bd27580046" - url: "https://pub.dev" - source: hosted - version: "0.9.2" - file_selector_macos: - dependency: transitive - description: - name: file_selector_macos - sha256: "4ada532862917bf16e3adb3891fe3a5917a58bae03293e497082203a80909412" - url: "https://pub.dev" - source: hosted - version: "0.9.3+1" - file_selector_platform_interface: - dependency: transitive - description: - name: file_selector_platform_interface - sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c" - url: "https://pub.dev" - source: hosted - version: "2.6.0" - file_selector_web: - dependency: transitive - description: - name: file_selector_web - sha256: e292740c469df0aeeaba0895bf622bea351a05e87d22864c826bf21c4780e1d7 - url: "https://pub.dev" - source: hosted - version: "0.9.2" - file_selector_windows: - dependency: transitive - description: - name: file_selector_windows - sha256: "1372760c6b389842b77156203308940558a2817360154084368608413835fc26" - url: "https://pub.dev" - source: hosted - version: "0.9.3" - filesize: - dependency: "direct main" - description: - name: filesize - sha256: f53df1f27ff60e466eefcd9df239e02d4722d5e2debee92a87dfd99ac66de2af - url: "https://pub.dev" - source: hosted - version: "2.0.1" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - flex_color_picker: - dependency: "direct main" - description: - name: flex_color_picker - sha256: f37476ab3e80dcaca94e428e159944d465dd16312fda9ff41e07e86f04bfa51c - url: "https://pub.dev" - source: hosted - version: "3.3.0" - flex_seed_scheme: - dependency: transitive - description: - name: flex_seed_scheme - sha256: "29c12aba221eb8a368a119685371381f8035011d18de5ba277ad11d7dfb8657f" - url: "https://pub.dev" - source: hosted - version: "1.4.0" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - flutter_localizations: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_localized_locales: - dependency: "direct main" - description: - name: flutter_localized_locales - sha256: f219350dffcfd56692b4e41953710c2975888dd9c507d977ec6853d7ea140336 - url: "https://pub.dev" - source: hosted - version: "2.0.4" - flutter_spinbox: - dependency: "direct main" - description: - name: flutter_spinbox - sha256: "38d8c1a3a39f0fa72823d4470785f5e165f2deb53531ca7803b54ba45e4dbd46" - url: "https://pub.dev" - source: hosted - version: "0.13.1" - flutter_svg: - dependency: "direct main" - description: - name: flutter_svg - sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" - url: "https://pub.dev" - source: hosted - version: "2.0.7" - 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" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" - url: "https://pub.dev" - source: hosted - version: "3.2.0" - get_it: - dependency: transitive - description: - name: get_it - sha256: "529de303c739fca98cd7ece5fca500d8ff89649f1bb4b4e94fb20954abcd7468" - url: "https://pub.dev" - source: hosted - version: "7.6.0" - glob: - dependency: transitive - description: - name: glob - sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - graphs: - dependency: transitive - description: - name: graphs - sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 - url: "https://pub.dev" - source: hosted - version: "2.3.1" - gsettings: - dependency: "direct main" - description: - name: gsettings - sha256: "1b0ce661f5436d2db1e51f3c4295a49849f03d304003a7ba177d01e3a858249c" - url: "https://pub.dev" - source: hosted - version: "0.2.8" - gtk: - dependency: transitive - description: - name: gtk - sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c - url: "https://pub.dev" - source: hosted - version: "2.1.0" - handy_window: - dependency: "direct main" - description: - name: handy_window - sha256: "458a9f7d4ae23816e8f33c76596f943a04e7eff13d864e0867f3b40f1647d63d" - url: "https://pub.dev" - source: hosted - version: "0.3.1" - http: - dependency: "direct main" - description: - name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - http_multi_server: - dependency: transitive - description: - name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.dev" - source: hosted - version: "3.2.1" - 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: a72242c9a0ffb65d03de1b7113bc4e189686fc07c7147b8b41811d0dd0e0d9bf - url: "https://pub.dev" - source: hosted - version: "4.0.17" - intl: - dependency: "direct main" - description: - name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 - url: "https://pub.dev" - source: hosted - version: "0.18.0" - io: - dependency: transitive - description: - name: io - sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.dev" - source: hosted - version: "1.0.4" - 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" - lints: - dependency: transitive - description: - name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - linux_datetime_service: - dependency: "direct main" - description: - path: "." - ref: HEAD - resolved-ref: a78261de84040901fae06f31cf94217460030765 - url: "https://github.com/ubuntu-flutter-community/linux_datetime" - source: git - version: "1.0.0" - linux_system_info: - dependency: "direct main" - description: - path: "." - ref: update_dbus_ffi_and_xml - resolved-ref: "88733f49b4b8929380a2cfe62ff19adab4429d78" - url: "https://github.com/Feichtmeier/linux_system_info.git" - source: git - version: "0.0.7" - logging: - dependency: transitive - description: - name: logging - sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - matcher: - dependency: transitive - description: - name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" - url: "https://pub.dev" - source: hosted - version: "0.12.15" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.dev" - source: hosted - version: "0.2.0" - meta: - dependency: "direct main" - description: - name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" - url: "https://pub.dev" - source: hosted - version: "1.9.1" - mime: - dependency: "direct main" - description: - name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.dev" - source: hosted - version: "1.0.4" - mockingjay: - dependency: "direct dev" - description: - name: mockingjay - sha256: c31b9850139a2a54d6bcfa02af022a8b15bf7c0bb83b0d5881e001e396fa91de - url: "https://pub.dev" - source: hosted - version: "0.3.0" - mockito: - dependency: "direct dev" - description: - name: mockito - sha256: "7d5b53bcd556c1bc7ffbe4e4d5a19c3e112b7e925e9e172dd7c6ad0630812616" - url: "https://pub.dev" - source: hosted - version: "5.4.2" - mocktail: - dependency: transitive - description: - name: mocktail - sha256: "80a996cd9a69284b3dc521ce185ffe9150cde69767c2d3a0720147d93c0cef53" - url: "https://pub.dev" - source: hosted - version: "0.3.0" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - nm: - dependency: "direct main" - description: - name: nm - sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" - url: "https://pub.dev" - source: hosted - version: "0.5.0" - node_preamble: - dependency: transitive - description: - name: node_preamble - sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - package_config: - dependency: transitive - description: - name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - path: - dependency: transitive - description: - name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.dev" - source: hosted - version: "1.8.3" - path_parsing: - dependency: transitive - description: - name: path_parsing - sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf - url: "https://pub.dev" - source: hosted - version: "1.0.1" - path_provider: - dependency: "direct main" - description: - name: path_provider - sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" - url: "https://pub.dev" - source: hosted - version: "2.0.15" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - sha256: "5d44fc3314d969b84816b569070d7ace0f1dea04bd94a83f74c4829615d22ad8" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - sha256: "1b744d3d774e5a879bb76d6cd1ecee2ba2c6960c03b1020cd35212f6aa267ac5" - url: "https://pub.dev" - source: hosted - version: "2.3.0" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - sha256: ba2b77f0c52a33db09fc8caf85b12df691bf28d983e84cf87ff6d693cfa007b3 - url: "https://pub.dev" - source: hosted - version: "2.2.0" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - sha256: bced5679c7df11190e1ddc35f3222c858f328fff85c3942e46e7f5589bf9eb84 - url: "https://pub.dev" - source: hosted - version: "2.1.0" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - sha256: ee0e0d164516b90ae1f970bdf29f726f1aa730d7cfc449ecc74c495378b705da - url: "https://pub.dev" - source: hosted - version: "2.2.0" - pdf: - dependency: "direct main" - description: - name: pdf - sha256: "9f75fc7f5580ea5e635b5724de58fb27f684c9ad03ed46fdc1aac768e4557315" - url: "https://pub.dev" - source: hosted - version: "3.10.4" - 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: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" - url: "https://pub.dev" - source: hosted - version: "3.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd" - url: "https://pub.dev" - source: hosted - version: "2.1.5" - pointycastle: - dependency: transitive - description: - name: pointycastle - sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" - url: "https://pub.dev" - source: hosted - version: "3.7.3" - pool: - dependency: transitive - description: - name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" - source: hosted - version: "1.5.1" - provider: - dependency: "direct main" - description: - name: provider - sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f - url: "https://pub.dev" - source: hosted - version: "6.0.5" - pub_semver: - dependency: transitive - description: - name: pub_semver - sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - pubspec_parse: - dependency: transitive - description: - name: pubspec_parse - sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 - url: "https://pub.dev" - source: hosted - version: "1.2.3" - qr: - dependency: transitive - description: - name: qr - sha256: "64957a3930367bf97cc211a5af99551d630f2f4625e38af10edd6b19131b64b3" - url: "https://pub.dev" - source: hosted - version: "3.0.1" - safe_change_notifier: - dependency: "direct main" - description: - name: safe_change_notifier - sha256: "0c23a11c00b8b749bcd65937ea58430662ea681d69be8fd6239251111960dc21" - url: "https://pub.dev" - source: hosted - version: "0.3.1" - screen_retriever: - dependency: transitive - description: - name: screen_retriever - sha256: "4931f226ca158123ccd765325e9fbf360bfed0af9b460a10f960f9bb13d58323" - url: "https://pub.dev" - source: hosted - version: "0.1.6" - shelf: - dependency: transitive - description: - name: shelf - sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 - url: "https://pub.dev" - source: hosted - version: "1.4.1" - shelf_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - shelf_static: - dependency: transitive - description: - name: shelf_static - sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e - url: "https://pub.dev" - source: hosted - version: "1.1.2" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" - url: "https://pub.dev" - source: hosted - version: "1.0.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_gen: - dependency: transitive - description: - name: source_gen - sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - source_map_stack_trace: - dependency: transitive - description: - name: source_map_stack_trace - sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - source_maps: - dependency: transitive - description: - name: source_maps - sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" - url: "https://pub.dev" - source: hosted - version: "0.10.12" - source_span: - dependency: transitive - description: - name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" - source: hosted - version: "1.9.1" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" - source: hosted - version: "1.11.0" - state_notifier: - dependency: transitive - description: - name: state_notifier - sha256: "8fe42610f179b843b12371e40db58c9444f8757f8b69d181c97e50787caed289" - url: "https://pub.dev" - source: hosted - version: "0.7.2+1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" - source: hosted - version: "2.1.1" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - 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: - dependency: transitive - description: - name: test - sha256: "3dac9aecf2c3991d09b9cdde4f98ded7b30804a88a0d7e4e7e1678e78d6b97f4" - url: "https://pub.dev" - source: hosted - version: "1.24.1" - test_api: - dependency: transitive - description: - name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb - url: "https://pub.dev" - source: hosted - version: "0.5.1" - test_core: - dependency: transitive - description: - name: test_core - sha256: "5138dbffb77b2289ecb12b81c11ba46036590b72a64a7a90d6ffb880f1a29e93" - url: "https://pub.dev" - source: hosted - version: "0.5.1" - timing: - dependency: transitive - description: - name: timing - sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - tuple: - dependency: transitive - 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" - ubuntu_service: - dependency: "direct main" - description: - name: ubuntu_service - sha256: f6ad4dfb099af41e750c59aad00d67a96e22df00f4962d2e25d56ae3db78be49 - url: "https://pub.dev" - source: hosted - version: "0.2.4" - udisks: - dependency: "direct main" - description: - name: udisks - sha256: "847144fb868b9e3602895e89f438f77c2a4fda9e4b02f7d368dc1d2c6a40b475" - url: "https://pub.dev" - source: hosted - version: "0.4.0" - upower: - dependency: "direct main" - description: - name: upower - sha256: cf042403154751180affa1d15614db7fa50234bc2373cd21c3db666c38543ebf - url: "https://pub.dev" - source: hosted - version: "0.7.0" - url_launcher: - dependency: "direct main" - description: - name: url_launcher - sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e" - url: "https://pub.dev" - source: hosted - version: "6.1.12" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - sha256: "78cb6dea3e93148615109e58e42c35d1ffbf5ef66c44add673d0ab75f12ff3af" - url: "https://pub.dev" - source: hosted - version: "6.0.37" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" - url: "https://pub.dev" - source: hosted - version: "6.1.4" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" - url: "https://pub.dev" - source: hosted - version: "3.0.5" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" - url: "https://pub.dev" - source: hosted - version: "3.0.6" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea - url: "https://pub.dev" - source: hosted - version: "2.1.3" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 - url: "https://pub.dev" - source: hosted - version: "2.0.18" - url_launcher_windows: - dependency: transitive - description: - name: url_launcher_windows - sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" - url: "https://pub.dev" - source: hosted - version: "3.0.7" - vector_graphics: - dependency: transitive - description: - name: vector_graphics - sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f" - url: "https://pub.dev" - source: hosted - version: "1.1.7" - vector_graphics_codec: - dependency: transitive - description: - name: vector_graphics_codec - sha256: "7451721781d967db9933b63f5733b1c4533022c0ba373a01bdd79d1a5457f69f" - url: "https://pub.dev" - source: hosted - version: "1.1.7" - vector_graphics_compiler: - dependency: transitive - description: - name: vector_graphics_compiler - sha256: "80a13c613c8bde758b1464a1755a7b3a8f2b6cec61fbf0f5a53c94c30f03ba2e" - url: "https://pub.dev" - source: hosted - version: "1.1.7" - vector_math: - dependency: transitive - description: - name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: "0fae432c85c4ea880b33b497d32824b97795b04cdaa74d270219572a1f50268d" - url: "https://pub.dev" - source: hosted - version: "11.9.0" - watcher: - dependency: transitive - description: - name: watcher - sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" - url: "https://pub.dev" - source: hosted - version: "1.1.0" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b - url: "https://pub.dev" - source: hosted - version: "2.4.0" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - win32: - dependency: transitive - description: - name: win32 - sha256: f2add6fa510d3ae152903412227bda57d0d5a8da61d2c39c1fb022c9429a41c0 - url: "https://pub.dev" - source: hosted - version: "5.0.6" - window_manager: - dependency: transitive - description: - name: window_manager - sha256: "9eef00e393e7f9308309ce9a8b2398c9ee3ca78b50c96e8b4f9873945693ac88" - url: "https://pub.dev" - source: hosted - version: "0.3.5" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff - url: "https://pub.dev" - source: hosted - version: "1.0.1" - xml: - dependency: "direct main" - 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" - yaru: - dependency: "direct main" - description: - name: yaru - sha256: "2a44d7ee43fe3f87ca0bde691d44285387a49ac03d38653c5dd671feebcfb8e8" - url: "https://pub.dev" - source: hosted - version: "0.9.0" - yaru_color_generator: - dependency: transitive - description: - name: yaru_color_generator - sha256: "78b96cefc4eef763e4786f891ce336cdd55ef8edc55494c4bea2bc9d10ef9c96" - url: "https://pub.dev" - source: hosted - version: "0.1.0" - yaru_colors: - dependency: "direct main" - description: - name: yaru_colors - sha256: "42814cafa3c4a6876962559ae9d8b9ff088a59635e649e4eae86d35905496063" - url: "https://pub.dev" - source: hosted - version: "0.1.7" - yaru_icons: - dependency: "direct main" - description: - name: yaru_icons - sha256: "6094c54ff42e4633df09f5efcd63cea1e2398b0633251430206b0df71ec7d389" - url: "https://pub.dev" - source: hosted - version: "2.1.0" - yaru_widgets: - dependency: "direct main" - description: - name: yaru_widgets - sha256: f1218b9b7b085f790fcc7a67e0170c8ce2e567dece3f75e8cfb36fdfc1a7071b - url: "https://pub.dev" - source: hosted - version: "2.6.0" - yaru_window: - dependency: transitive - description: - name: yaru_window - sha256: "55c8f039d13aaa1b211a8cf0b7731ae2fdcac9b1be1e0994eb14ad1d17fecaf7" - url: "https://pub.dev" - source: hosted - version: "0.1.3" - yaru_window_linux: - dependency: transitive - description: - name: yaru_window_linux - sha256: c45606cf75880ae6427bbe176dc5313356f16c876c7013a19aeee782882c40c2 - url: "https://pub.dev" - source: hosted - version: "0.1.3" - yaru_window_manager: - dependency: transitive - description: - name: yaru_window_manager - sha256: "2d358263d19ae6598df21d6d8c0d25e75c79a82f459b63b0013a13e395c48b23" - url: "https://pub.dev" - source: hosted - version: "0.1.2" - yaru_window_platform_interface: - dependency: transitive - description: - name: yaru_window_platform_interface - sha256: e9f8cd34e207d7f7b771ae70dee347ed974cee06b981819c4181b3e474e52254 - url: "https://pub.dev" - source: hosted - version: "0.1.2" - yaru_window_web: - dependency: transitive - description: - name: yaru_window_web - sha256: "3ff30758a330d7626d54643df0cca6c179782f401aba7752da9cc0d60c9a6f74" - url: "https://pub.dev" - source: hosted - version: "0.0.3" -sdks: - dart: ">=3.0.0 <4.0.0" - flutter: ">=3.10.0" diff --git a/pubspec.yaml b/pubspec.yaml index 98972c13..f7c369fb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -46,6 +46,8 @@ dependencies: udisks: ^0.4.0 upower: ^0.7.0 url_launcher: ^6.0.20 + xdg_accounts: + git: https://github.com/ubuntu-flutter-community/xdg_accounts xml: ^6.2.2 yaru: ^0.9.0 yaru_colors: ^0.1.6