pull/66/head
Kherel 2021-09-29 20:28:47 +02:00
parent 3e7d003f21
commit 2c4d0ea7d1
17 changed files with 167 additions and 78 deletions

View File

@ -91,7 +91,7 @@
"status": "Status — Good", "status": "Status — Good",
"bottom_sheet": { "bottom_sheet": {
"1": "It's your personal internet address that will point to the server and other services of yours.", "1": "It's your personal internet address that will point to the server and other services of yours.",
"2": "{} — expires on {}" "2": "{}"
} }
}, },
"backup": { "backup": {

View File

@ -91,7 +91,7 @@
"status": "Статус — в норме", "status": "Статус — в норме",
"bottom_sheet": { "bottom_sheet": {
"1": "Это ваш личный адрес в интернете, который будет указывать на сервер и другие ваши сервисы.", "1": "Это ваш личный адрес в интернете, который будет указывать на сервер и другие ваши сервисы.",
"2": "{} — продлен до {}" "2": "{}"
} }
}, },
"backup": { "backup": {
@ -161,6 +161,13 @@
"bottom_sheet": { "bottom_sheet": {
"1": "Подключиться к серверу и создать пользователя можно по адресу:" "1": "Подключиться к серверу и создать пользователя можно по адресу:"
} }
},
"vpn": {
"title": "VPN сервер",
"subtitle": "Закрытый VPN сервер",
"bottom_sheet": {
"1": "Создать подключиться к VPN-серверу. Движок для безопасной и масштабируемой инфраструктуры VPN"
}
} }
}, },
"users": { "users": {

View File

@ -51,7 +51,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
local_auth: ef62030a2731330b95df7ef1331bd15f6a64b8a6 local_auth: 25938960984c3a7f6e3253e3f8d962fdd16852bd
package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68

View File

@ -38,6 +38,13 @@ final headline4Style = defaultTextStyle.copyWith(
color: BrandColors.headlineColor, color: BrandColors.headlineColor,
); );
final headline4UnderlinedStyle = defaultTextStyle.copyWith(
fontSize: 18,
fontWeight: NamedFontWeight.medium,
color: BrandColors.headlineColor,
decoration: TextDecoration.underline,
);
final headline5Style = defaultTextStyle.copyWith( final headline5Style = defaultTextStyle.copyWith(
fontSize: 15, fontSize: 15,
fontWeight: NamedFontWeight.medium, fontWeight: NamedFontWeight.medium,

View File

@ -15,13 +15,23 @@ abstract class ApiMap {
if (hasLoger) { if (hasLoger) {
dio.interceptors.add(PrettyDioLogger()); dio.interceptors.add(PrettyDioLogger());
} }
dio..interceptors.add(ConsoleInterceptor()); dio.interceptors.add(ConsoleInterceptor());
(dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate = (dio.httpClientAdapter as DefaultHttpClientAdapter).onHttpClientCreate =
(HttpClient client) { (HttpClient client) {
client.badCertificateCallback = client.badCertificateCallback =
(X509Certificate cert, String host, int port) => true; (X509Certificate cert, String host, int port) => true;
return client; return client;
}; };
dio.interceptors.add(InterceptorsWrapper(onError: (DioError e, handler) {
print(e.requestOptions.path);
print(e.requestOptions.data);
print(e.message);
print(e.response);
return handler.next(e);
}));
return dio; return dio;
} }

View File

@ -14,16 +14,18 @@ class ServicesCubit extends AppConfigDependendCubit<ServicesState> {
Box box = Hive.box(BNames.servicesState); Box box = Hive.box(BNames.servicesState);
final api = ServerApi(); final api = ServerApi();
Future<void> load() async { Future<void> load() async {
var statuses = await api.servicesPowerCheck(); if (appConfigCubit.state is AppConfigFinished) {
emit( var statuses = await api.servicesPowerCheck();
ServicesState( emit(
isPasswordManagerEnable: statuses[ServiceTypes.passwordManager]!, ServicesState(
isCloudEnable: statuses[ServiceTypes.cloud]!, isPasswordManagerEnable: statuses[ServiceTypes.passwordManager]!,
isGitEnable: statuses[ServiceTypes.git]!, isCloudEnable: statuses[ServiceTypes.cloud]!,
isSocialNetworkEnable: statuses[ServiceTypes.socialNetwork]!, isGitEnable: statuses[ServiceTypes.git]!,
isVpnEnable: statuses[ServiceTypes.vpn]!, isSocialNetworkEnable: statuses[ServiceTypes.socialNetwork]!,
), isVpnEnable: statuses[ServiceTypes.vpn]!,
); ),
);
}
} }
@override @override

View File

@ -13,6 +13,7 @@ class UsersCubit extends Cubit<UsersState> {
void load() async { void load() async {
var loadedUsers = box.values.toList(); var loadedUsers = box.values.toList();
if (loadedUsers.isNotEmpty) { if (loadedUsers.isNotEmpty) {
emit(UsersState(loadedUsers)); emit(UsersState(loadedUsers));
} }

View File

@ -18,6 +18,7 @@ import 'logic/cubit/app_settings/app_settings_cubit.dart';
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await HiveConfig.init(); await HiveConfig.init();
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
Bloc.observer = SimpleBlocObserver(); Bloc.observer = SimpleBlocObserver();
Wakelock.enable(); Wakelock.enable();
await getItSetup(); await getItSetup();

View File

@ -13,7 +13,8 @@ enum TextType {
medium, medium,
small, small,
onboardingTitle, onboardingTitle,
buttonTitleText // risen button title text, buttonTitleText, // risen button title text,
h4Underlined,
} }
class BrandText extends StatelessWidget { class BrandText extends StatelessWidget {
@ -25,6 +26,7 @@ class BrandText extends StatelessWidget {
this.overflow, this.overflow,
this.softWrap, this.softWrap,
this.textAlign, this.textAlign,
this.maxLines,
}) : super(key: key); }) : super(key: key);
final String? text; final String? text;
@ -33,6 +35,7 @@ class BrandText extends StatelessWidget {
final TextOverflow? overflow; final TextOverflow? overflow;
final bool? softWrap; final bool? softWrap;
final TextAlign? textAlign; final TextAlign? textAlign;
final int? maxLines;
factory BrandText.h1( factory BrandText.h1(
String? text, { String? text, {
@ -80,6 +83,24 @@ class BrandText extends StatelessWidget {
text, text,
type: TextType.h4, type: TextType.h4,
style: style, style: style,
softWrap: true,
overflow: TextOverflow.ellipsis,
maxLines: 2,
textAlign: textAlign,
);
factory BrandText.h4Underlined(
String? text, {
TextStyle? style,
TextAlign? textAlign,
}) =>
BrandText(
text,
type: TextType.h4Underlined,
style: style,
softWrap: true,
overflow: TextOverflow.ellipsis,
maxLines: 2,
textAlign: textAlign, textAlign: textAlign,
); );
@ -148,6 +169,11 @@ class BrandText extends StatelessWidget {
? headline4Style.copyWith(color: Colors.white) ? headline4Style.copyWith(color: Colors.white)
: headline4Style; : headline4Style;
break; break;
case TextType.h4Underlined:
style = isDark
? headline4UnderlinedStyle.copyWith(color: Colors.white)
: headline4UnderlinedStyle;
break;
case TextType.h5: case TextType.h5:
style = isDark style = isDark
? headline5Style.copyWith(color: Colors.white) ? headline5Style.copyWith(color: Colors.white)
@ -185,6 +211,7 @@ class BrandText extends StatelessWidget {
return Text( return Text(
text!, text!,
style: style, style: style,
maxLines: maxLines,
overflow: overflow, overflow: overflow,
softWrap: softWrap, softWrap: softWrap,
textAlign: textAlign, textAlign: textAlign,

View File

@ -28,7 +28,7 @@ class ProvidersPage extends StatefulWidget {
class _ProvidersPageState extends State<ProvidersPage> { class _ProvidersPageState extends State<ProvidersPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished; var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished;
final cards = ProviderType.values final cards = ProviderType.values
.map( .map(
@ -75,7 +75,7 @@ class _Card extends StatelessWidget {
String? message; String? message;
late String stableText; late String stableText;
late VoidCallback onTap; late VoidCallback onTap;
var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished; var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished;
AppConfigState appConfig = context.watch<AppConfigCubit>().state; AppConfigState appConfig = context.watch<AppConfigCubit>().state;
var domainName = var domainName =
@ -179,7 +179,7 @@ class _ProviderDetails extends StatelessWidget {
BrandText.body1('providers.domain.bottom_sheet.1'.tr()), BrandText.body1('providers.domain.bottom_sheet.1'.tr()),
SizedBox(height: 10), SizedBox(height: 10),
BrandText.body1( BrandText.body1(
'providers.domain.bottom_sheet.2'.tr(args: [domainName, 'Date'])), 'providers.domain.bottom_sheet.2'.tr(args: [domainName])),
SizedBox(height: 10), SizedBox(height: 10),
BrandText.body1('providers.domain.status'.tr()), BrandText.body1('providers.domain.status'.tr()),
]; ];

View File

@ -41,7 +41,7 @@ class ServicesPage extends StatefulWidget {
class _ServicesPageState extends State<ServicesPage> { class _ServicesPageState extends State<ServicesPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished; var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished;
return Scaffold( return Scaffold(
appBar: PreferredSize( appBar: PreferredSize(
@ -77,7 +77,7 @@ class _Card extends StatelessWidget {
final ServiceTypes serviceType; final ServiceTypes serviceType;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished; var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished;
var changeTab = context.read<ChangeTab>().onPress; var changeTab = context.read<ChangeTab>().onPress;
var serviceState = context.watch<ServicesCubit>().state; var serviceState = context.watch<ServicesCubit>().state;
@ -169,7 +169,7 @@ class _Card extends StatelessWidget {
), ),
if (hasSwitchJob) if (hasSwitchJob)
Positioned( Positioned(
bottom: 30, bottom: 24,
left: 0, left: 0,
right: 0, right: 0,
child: BackdropFilter( child: BackdropFilter(

View File

@ -24,7 +24,9 @@ class _Fab extends StatelessWidget {
isScrollControlled: true, isScrollControlled: true,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
builder: (BuildContext context) { builder: (BuildContext context) {
return _NewUser(); return Padding(
padding: MediaQuery.of(context).viewInsets,
child: _NewUser());
}, },
); );
}, },

View File

@ -1,9 +1,11 @@
part of 'users.dart'; part of 'users.dart';
class _User extends StatelessWidget { class _User extends StatelessWidget {
const _User({Key? key, required this.user}) : super(key: key); const _User({Key? key, required this.user, required this.rootUser})
: super(key: key);
final User user; final User user;
final bool rootUser;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return InkWell( return InkWell(
@ -29,7 +31,11 @@ class _User extends StatelessWidget {
), ),
), ),
SizedBox(width: 20), SizedBox(width: 20),
BrandText.h4(user.login), Flexible(
child: rootUser
? BrandText.h4Underlined(user.login)
: BrandText.h4(user.login),
),
], ],
), ),
), ),

View File

@ -76,7 +76,9 @@ class _UserDetails extends StatelessWidget {
), ),
onPressed: () { onPressed: () {
context.read<UsersCubit>().remove(user); context.read<UsersCubit>().remove(user);
Navigator.of(context)..pop()..pop(); Navigator.of(context)
..pop()
..pop();
}, },
), ),
], ],
@ -115,9 +117,12 @@ class _UserDetails extends StatelessWidget {
vertical: 20, vertical: 20,
horizontal: 15, horizontal: 15,
), ),
child: BrandText.h1( child: AutoSizeText(
user.login, user.login,
style: headline1Style,
softWrap: true, softWrap: true,
minFontSize: 9,
maxLines: 3,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
)), )),
], ],

View File

@ -1,7 +1,11 @@
import 'package:auto_size_text/auto_size_text.dart';
import 'package:cubit_form/cubit_form.dart'; import 'package:cubit_form/cubit_form.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
import 'package:selfprivacy/config/brand_colors.dart'; import 'package:selfprivacy/config/brand_colors.dart';
import 'package:selfprivacy/config/brand_theme.dart'; import 'package:selfprivacy/config/brand_theme.dart';
import 'package:selfprivacy/config/hive_config.dart';
import 'package:selfprivacy/config/text_themes.dart';
import 'package:selfprivacy/logic/cubit/app_config/app_config_cubit.dart'; import 'package:selfprivacy/logic/cubit/app_config/app_config_cubit.dart';
import 'package:selfprivacy/logic/cubit/forms/user/user_form_cubit.dart'; import 'package:selfprivacy/logic/cubit/forms/user/user_form_cubit.dart';
import 'package:selfprivacy/logic/cubit/jobs/jobs_cubit.dart'; import 'package:selfprivacy/logic/cubit/jobs/jobs_cubit.dart';
@ -34,6 +38,11 @@ class UsersPage extends StatelessWidget {
final usersCubitState = context.watch<UsersCubit>().state; final usersCubitState = context.watch<UsersCubit>().state;
var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished; var isReady = context.watch<AppConfigCubit>().state is AppConfigFinished;
final users = usersCubitState.users; final users = usersCubitState.users;
//Todo: listen box events
User? user = Hive.box(BNames.appConfig).get(BNames.rootUser);
if (user != null) {
users.insert(0, user);
}
final isEmpty = usersCubitState.isEmpty; final isEmpty = usersCubitState.isEmpty;
Widget child; Widget child;
@ -47,10 +56,14 @@ class UsersPage extends StatelessWidget {
text: 'users.add_new_user'.tr(), text: 'users.add_new_user'.tr(),
), ),
) )
: ListView( : ListView.builder(
children: [ itemCount: users.length,
...users.map((user) => _User(user: user)).toList(), itemBuilder: (BuildContext context, int index) {
], return _User(
user: users[index],
rootUser: index == 0,
);
},
); );
} }

View File

@ -28,7 +28,7 @@ packages:
name: args name: args
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.2.0"
asn1lib: asn1lib:
dependency: transitive dependency: transitive
description: description:
@ -43,20 +43,27 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.8.1" version: "2.8.1"
auto_size_text:
dependency: "direct main"
description:
name: auto_size_text
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0-nullsafety.0"
basic_utils: basic_utils:
dependency: "direct main" dependency: "direct main"
description: description:
name: basic_utils name: basic_utils
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.6.0" version: "3.5.0"
bloc: bloc:
dependency: transitive dependency: transitive
description: description:
name: bloc name: bloc
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "7.2.0" version: "7.2.1"
boolean_selector: boolean_selector:
dependency: transitive dependency: transitive
description: description:
@ -91,14 +98,14 @@ packages:
name: build_resolvers name: build_resolvers
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.3" version: "2.0.4"
build_runner: build_runner:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_runner name: build_runner
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.2" version: "2.1.1"
build_runner_core: build_runner_core:
dependency: transitive dependency: transitive
description: description:
@ -119,7 +126,7 @@ packages:
name: built_value name: built_value
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "8.1.0" version: "8.1.2"
characters: characters:
dependency: transitive dependency: transitive
description: description:
@ -147,7 +154,7 @@ packages:
name: cli_util name: cli_util
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.3.0" version: "0.3.3"
clock: clock:
dependency: transitive dependency: transitive
description: description:
@ -175,7 +182,7 @@ packages:
name: convert name: convert
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.0" version: "3.0.1"
coverage: coverage:
dependency: transitive dependency: transitive
description: description:
@ -203,7 +210,7 @@ packages:
name: cubit_form name: cubit_form
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.16" version: "1.0.18"
cupertino_icons: cupertino_icons:
dependency: "direct main" dependency: "direct main"
description: description:
@ -217,7 +224,7 @@ packages:
name: dart_style name: dart_style
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "2.0.3"
dio: dio:
dependency: "direct main" dependency: "direct main"
description: description:
@ -266,7 +273,7 @@ packages:
name: extended_masked_text name: extended_masked_text
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.1" version: "2.3.1"
fake_async: fake_async:
dependency: transitive dependency: transitive
description: description:
@ -320,7 +327,7 @@ packages:
name: flutter_launcher_icons name: flutter_launcher_icons
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.9.0" version: "0.9.2"
flutter_localizations: flutter_localizations:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -332,7 +339,7 @@ packages:
name: flutter_markdown name: flutter_markdown
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.6.2" version: "0.6.5"
flutter_plugin_android_lifecycle: flutter_plugin_android_lifecycle:
dependency: transitive dependency: transitive
description: description:
@ -346,7 +353,7 @@ packages:
name: flutter_secure_storage name: flutter_secure_storage
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.2.0" version: "4.2.1"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -384,7 +391,7 @@ packages:
name: graphs name: graphs
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0" version: "2.0.0"
hive: hive:
dependency: "direct main" dependency: "direct main"
description: description:
@ -447,7 +454,7 @@ packages:
name: io name: io
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.0.3"
ionicons: ionicons:
dependency: "direct main" dependency: "direct main"
description: description:
@ -475,14 +482,14 @@ packages:
name: json_serializable name: json_serializable
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.1.3" version: "4.1.4"
local_auth: local_auth:
dependency: "direct main" dependency: "direct main"
description: description:
name: local_auth name: local_auth
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.8" version: "1.1.7"
logging: logging:
dependency: transitive dependency: transitive
description: description:
@ -580,14 +587,14 @@ packages:
name: path_provider_linux name: path_provider_linux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
path_provider_macos: path_provider_macos:
dependency: transitive dependency: transitive
description: description:
name: path_provider_macos name: path_provider_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
path_provider_platform_interface: path_provider_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -601,7 +608,7 @@ packages:
name: path_provider_windows name: path_provider_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "2.0.3"
pedantic: pedantic:
dependency: transitive dependency: transitive
description: description:
@ -622,21 +629,21 @@ packages:
name: platform name: platform
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.0" version: "3.0.2"
plugin_platform_interface: plugin_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: plugin_platform_interface name: plugin_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.1"
pointycastle: pointycastle:
dependency: "direct main" dependency: "direct main"
description: description:
name: pointycastle name: pointycastle
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.3.4" version: "3.3.2"
pool: pool:
dependency: transitive dependency: transitive
description: description:
@ -657,7 +664,7 @@ packages:
name: process name: process
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.2.1" version: "4.2.3"
provider: provider:
dependency: "direct main" dependency: "direct main"
description: description:
@ -706,7 +713,7 @@ packages:
name: share_plus_linux name: share_plus_linux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.3" version: "2.0.4"
share_plus_macos: share_plus_macos:
dependency: transitive dependency: transitive
description: description:
@ -741,21 +748,21 @@ packages:
name: shared_preferences name: shared_preferences
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.6" version: "2.0.7"
shared_preferences_linux: shared_preferences_linux:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_linux name: shared_preferences_linux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
shared_preferences_macos: shared_preferences_macos:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_macos name: shared_preferences_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
shared_preferences_platform_interface: shared_preferences_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -769,21 +776,21 @@ packages:
name: shared_preferences_web name: shared_preferences_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
shared_preferences_windows: shared_preferences_windows:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_windows name: shared_preferences_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
shelf: shelf:
dependency: transitive dependency: transitive
description: description:
name: shelf name: shelf
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.4" version: "1.2.0"
shelf_packages_handler: shelf_packages_handler:
dependency: transitive dependency: transitive
description: description:
@ -797,7 +804,7 @@ packages:
name: shelf_static name: shelf_static
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.0" version: "1.1.0"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
@ -816,14 +823,14 @@ packages:
name: source_gen name: source_gen
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.2" version: "1.0.3"
source_helper: source_helper:
dependency: transitive dependency: transitive
description: description:
name: source_helper name: source_helper
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0" version: "1.2.1"
source_map_stack_trace: source_map_stack_trace:
dependency: transitive dependency: transitive
description: description:
@ -935,42 +942,42 @@ packages:
name: url_launcher name: url_launcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.6" version: "6.0.9"
url_launcher_linux: url_launcher_linux:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_linux name: url_launcher_linux
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.1"
url_launcher_macos: url_launcher_macos:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_macos name: url_launcher_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.1"
url_launcher_platform_interface: url_launcher_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_platform_interface name: url_launcher_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.3" version: "2.0.4"
url_launcher_web: url_launcher_web:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "2.0.4"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_windows name: url_launcher_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.0" version: "2.0.2"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
@ -991,35 +998,35 @@ packages:
name: wakelock name: wakelock
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.5.2" version: "0.5.3+3"
wakelock_macos: wakelock_macos:
dependency: transitive dependency: transitive
description: description:
name: wakelock_macos name: wakelock_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.0+1" version: "0.1.0+2"
wakelock_platform_interface: wakelock_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: wakelock_platform_interface name: wakelock_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.1+1" version: "0.2.1+2"
wakelock_web: wakelock_web:
dependency: transitive dependency: transitive
description: description:
name: wakelock_web name: wakelock_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.0+1" version: "0.2.0+2"
wakelock_windows: wakelock_windows:
dependency: transitive dependency: transitive
description: description:
name: wakelock_windows name: wakelock_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.0" version: "0.1.0+1"
watcher: watcher:
dependency: transitive dependency: transitive
description: description:
@ -1047,7 +1054,7 @@ packages:
name: win32 name: win32
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.1" version: "2.2.7"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:
@ -1070,5 +1077,5 @@ packages:
source: hosted source: hosted
version: "3.1.0" version: "3.1.0"
sdks: sdks:
dart: ">=2.14.0 <3.0.0" dart: ">=2.13.4 <3.0.0"
flutter: ">=2.5.0" flutter: ">=2.5.0"

View File

@ -39,6 +39,7 @@ dependencies:
rsa_encrypt: ^2.0.0 rsa_encrypt: ^2.0.0
ssh_key: ^0.7.0 ssh_key: ^0.7.0
local_auth: ^1.1.7 local_auth: ^1.1.7
auto_size_text: ^3.0.0-nullsafety.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test: