4 Commits

14 changed files with 232 additions and 221 deletions

View File

@@ -307,7 +307,7 @@ Future<void> setupDependencies() async {
getIt.registerFactory<VerifyCodeBloc>(() => VerifyCodeBloc(getIt(), getIt(), getIt()));
getIt.registerFactory<ProfileBloc>(() => ProfileBloc(getIt(), getIt(), getIt()));
getIt.registerLazySingleton<ProfileBloc>(() => ProfileBloc(getIt(), getIt(), getIt()));
getIt.registerFactory<EditProfileBloc>(
() => EditProfileBloc(getIt(), getIt()),

View File

@@ -27,6 +27,7 @@ class PaymentMethodSheet extends StatefulWidget {
class _PaymentMethodSheetState extends State<PaymentMethodSheet> {
int? _selectedPaymentMethod = -2;
int? _processingCardId; // <-- Переменная для отслеживания отправленного запроса
@override
void initState() {
@@ -36,56 +37,20 @@ class _PaymentMethodSheetState extends State<PaymentMethodSheet> {
@override
Widget build(BuildContext context) {
return BlocBuilder<PaymentMethodSheetBloc, PaymentMethodSheetState>(
return BlocConsumer<PaymentMethodSheetBloc, PaymentMethodSheetState>(
listener: (context, state) {
if (state.status == PaymentMethodSheetStatus.success && _processingCardId != null) {
final updatedCard = state.cards.cast<PaymentCard?>().firstWhere(
(c) => c?.id == _processingCardId,
orElse: () => state.cards.cast<PaymentCard?>().firstWhere((c) => c?.isMain == true, orElse: () => null),
);
_processingCardId = null;
Navigator.pop(context, updatedCard);
}
},
builder: (context, state) {
if (state.status == PaymentMethodSheetStatus.loading) {
return Align(
alignment: Alignment.bottomCenter,
child: ClipRRect(
borderRadius: const BorderRadius.vertical(top: Radius.circular(30)),
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 20, sigmaY: 20),
child: Container(
height: 450,
decoration: BoxDecoration(
color: const Color(0x00000032).withOpacity(0.6),
borderRadius: const BorderRadius.vertical(top: Radius.circular(30)),
),
child: const Center(
child: CircularProgressIndicator(color: Colors.white),
),
),
),
),
);
}
if (state.status == PaymentMethodSheetStatus.failure) {
return Align(
alignment: Alignment.bottomCenter,
child: ClipRRect(
borderRadius: const BorderRadius.vertical(top: Radius.circular(30)),
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 20, sigmaY: 20),
child: Container(
height: 450,
decoration: BoxDecoration(
color: const Color(0x00000032).withOpacity(0.6),
borderRadius: const BorderRadius.vertical(top: Radius.circular(30)),
),
child: Center(
child: Text(
state.errorMessage ?? 'Ошибка загрузки карт',
style: const TextStyle(color: Colors.white),
),
),
),
),
),
);
}
if (state.status == PaymentMethodSheetStatus.success && _selectedPaymentMethod == -2) {
if (widget.initialSelectedCard != null) {
final initialIndex = state.cards.indexWhere(
@@ -98,14 +63,6 @@ class _PaymentMethodSheetState extends State<PaymentMethodSheet> {
}
}
// Находим карту с isMain: true при загрузке
/*if (_selectedPaymentMethod == null) {
final mainCardIndex = state.cards.indexWhere((card) => card.isMain);
if (mainCardIndex != -1) {
_selectedPaymentMethod = mainCardIndex;
}
}*/
return Align(
alignment: Alignment.bottomCenter,
child: ClipRRect(
@@ -122,47 +79,6 @@ class _PaymentMethodSheetState extends State<PaymentMethodSheet> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: Row(
children: [
GestureDetector(
onTap: () => Navigator.pop(context),
child: Row(
children: [
Icon(
Icons.arrow_back_ios_sharp,
color: const Color(0x99FFFFFF),
size: 20,
),
Icon(
Icons.arrow_back_ios_sharp,
color: const Color(0x66FFFFFF),
size: 20,
),
Icon(
Icons.arrow_back_ios_sharp,
color: const Color(0x22FFFFFF),
size: 20,
),
],
),
),
const SizedBox(width: 12),
Expanded(
child: Text(
'Выберите способ оплаты',
style: const TextStyle(
color: Colors.white,
fontSize: 16,
fontWeight: FontWeight.w600,
),
overflow: TextOverflow.ellipsis,
),
),
],
),
),
const SizedBox(height: 20),
@@ -198,13 +114,14 @@ class _PaymentMethodSheetState extends State<PaymentMethodSheet> {
onTap: () async {
setState(() {
_selectedPaymentMethod = index;
_processingCardId = card.id;
});
// Отправляем событие в Блок
context.read<PaymentMethodSheetBloc>().add(
SelectPaymentCardRequested(card),
);
Navigator.pop(context, card);
},
),
);
@@ -223,8 +140,7 @@ class _PaymentMethodSheetState extends State<PaymentMethodSheet> {
color: Colors.transparent,
child: InkWell(
onTap: () {
Navigator.pop(context);
context.go('/home/payment-methods/add-card');
context.read<PaymentMethodSheetBloc>().add(AddPaymentCardRequested());
},
borderRadius: BorderRadius.circular(24),
child: Center(

View File

@@ -324,7 +324,6 @@ class _TariffSheetState extends State<TariffSheet> {
getIt<SetMainPaymentCardUsecase>(),
getIt<GetProfileUseCase>(),
getIt<AddPaymentCardUsecase>(),
)..add(PaymentMethodSheetStarted()),
child: PaymentMethodSheet(
initialSelectedCard: state.useBalance ? null : state.selectedCard,

View File

@@ -47,7 +47,7 @@ class SideMenu extends StatelessWidget {
),
const SizedBox(height: 4),
Text(
'Баланс ${state.balance} руб.',
'Баланс ${state.balance} баллов',
style: const TextStyle(
color: Colors.white70,
fontSize: 14,

View File

@@ -4,9 +4,9 @@ sealed class PaymentMethodSheetEvent {}
class PaymentMethodSheetStarted extends PaymentMethodSheetEvent {}
class AddCardButtonPressed extends PaymentMethodSheetEvent {}
class SelectPaymentCardRequested extends PaymentMethodSheetEvent {
final PaymentCard card;
SelectPaymentCardRequested(this.card);
}
class AddPaymentCardRequested extends PaymentMethodSheetEvent {}

View File

@@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart';
import 'package:intl/intl.dart';
import '../../core/app_colors.dart';
import '../../di/service_locator.dart';
import '../../domain/entities/user_profile.dart';
import '../components/custom_app_bar.dart';
import '../components/gradient_button.dart';
@@ -106,7 +107,7 @@ class _EditProfileScreenState extends State<EditProfileScreen> {
}
if (state.isSuccess) {
context.read<ProfileBloc>().add(ProfileUpdated());
getIt<ProfileBloc>().add(ProfileUpdated());
context.pop();
}
if (state.error != null) {

View File

@@ -1,10 +1,10 @@
import 'package:be_happy/domain/usecase/add_payment_card_usecase.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import '../../core/app_colors.dart';
import '../../di/service_locator.dart';
import '../../domain/entities/payment_card.dart';
import '../../domain/usecase/add_payment_card_usecase.dart';
import '../../domain/usecase/get_payment_cards_usecase.dart';
import '../../domain/usecase/get_profile_usecase.dart';
import '../../domain/usecase/set_main_payment_card_usecase.dart';

View File

@@ -22,6 +22,43 @@ class PhoneScreen extends StatefulWidget {
class _PhoneScreenState extends State<PhoneScreen> {
final TextEditingController _phoneController = TextEditingController();
@override
void initState() {
super.initState();
// Вызываем диалог сразу после отрисовки первого кадра экрана
WidgetsBinding.instance.addPostFrameCallback((_) {
_showTestModeDialog();
});
}
// Метод для отображения диалогового окна
void _showTestModeDialog() {
showDialog(
context: context,
barrierDismissible: false, // Запрещает закрывать окно кликом по фону
builder: (BuildContext context) {
return AlertDialog(
title: const Text(
'Внимание!',
style: TextStyle(fontWeight: FontWeight.bold),
),
content: const Text('Приложение находится в тестовом режиме!'),
actions: [
TextButton(
onPressed: () {
Navigator.of(context).pop(); // Закрывает диалоговое окно
},
child: const Text(
'Продолжить',
style: TextStyle(color: Colors.blueAccent),
),
),
],
);
},
);
}
@override
void dispose() {
_phoneController.dispose();
@@ -219,7 +256,6 @@ class _PhoneScreenState extends State<PhoneScreen> {
}
}
// 🔹 Кликабельный текст для политики
class ClickableText extends StatelessWidget {
final String text;
final VoidCallback onTap;
@@ -237,12 +273,12 @@ class ClickableText extends StatelessWidget {
child: Text(
text,
style: const TextStyle(
color: Colors.blueAccent,
decorationColor: Colors.blueAccent,
decoration: TextDecoration.underline,
fontSize: 12
color: Colors.blueAccent,
decorationColor: Colors.blueAccent,
decoration: TextDecoration.underline,
fontSize: 12
),
),
);
}
}
}

View File

@@ -59,14 +59,14 @@ class _SendPhotoViewState extends State<SendPhotoView> {
_getImage(ImageSource.camera);
},
),
ListTile(
leading: const Icon(Icons.photo_library),
title: const Text('Выбрать из галереи'),
onTap: () {
Navigator.pop(context);
_getImage(ImageSource.gallery);
},
),
// ListTile(
// leading: const Icon(Icons.photo_library),
// title: const Text('Выбрать из галереи'),
// onTap: () {
// Navigator.pop(context);
// _getImage(ImageSource.gallery);
// },
// ),
ListTile(
leading: const Icon(Icons.cancel),
title: const Text('Отмена'),

View File

@@ -47,7 +47,7 @@ class SupportScreen extends StatelessWidget {
LinkRow(
icon: 'assets/icons/call.png',
title: 'Позвонить',
onTap: () => openLink('tel:+375000000000'),
onTap: () => openLink('tel:+375257110909'),
),
const Divider(height: 1, color: Colors.white24),
const SizedBox(height: 12),

View File

@@ -1,3 +1,4 @@
import 'package:be_happy/domain/usecase/add_payment_card_usecase.dart';
import 'package:be_happy/presentation/viewmodel/payment_methods_bloc.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -6,7 +7,6 @@ import 'package:go_router/go_router.dart';
import '../../core/app_colors.dart';
import '../../di/service_locator.dart';
import '../../domain/entities/payment_card.dart';
import '../../domain/usecase/add_payment_card_usecase.dart';
import '../../domain/usecase/get_payment_cards_usecase.dart';
import '../../domain/usecase/get_profile_usecase.dart';
import '../../domain/usecase/set_main_payment_card_usecase.dart';

View File

@@ -1,5 +1,3 @@
import 'dart:async';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:url_launcher/url_launcher.dart';
@@ -12,25 +10,23 @@ import '../../domain/usecase/set_main_payment_card_usecase.dart';
import '../event/payment_method_sheet_event.dart';
import '../state/payment_method_sheet_state.dart';
class PaymentMethodSheetBloc
extends Bloc<PaymentMethodSheetEvent, PaymentMethodSheetState> {
class PaymentMethodSheetBloc extends Bloc<PaymentMethodSheetEvent, PaymentMethodSheetState> {
final GetPaymentCardsUsecase _getPaymentCardsUsecase;
final GetProfileUseCase _getProfileUseCase;
final SetMainPaymentCardUsecase _setMainPaymentCardUsecase;
final AddPaymentCardUsecase _addPaymentCardUsecase;
PaymentMethodSheetBloc(this._getPaymentCardsUsecase,
this._setMainPaymentCardUsecase, this._getProfileUseCase,
this._addPaymentCardUsecase)
: super(
PaymentMethodSheetState(status: PaymentMethodSheetStatus.initial)) {
PaymentMethodSheetBloc(this._getPaymentCardsUsecase, this._setMainPaymentCardUsecase, this._getProfileUseCase, this._addPaymentCardUsecase)
: super(PaymentMethodSheetState(status: PaymentMethodSheetStatus.initial)) {
on<PaymentMethodSheetStarted>(_onStarted);
on<AddCardButtonPressed>(_onAddCardButtonPressed);
on<SelectPaymentCardRequested>(_onSelectCard);
on<AddPaymentCardRequested>(_onAddPaymentCardRequested);
}
Future<void> _onStarted(PaymentMethodSheetStarted event,
Emitter<PaymentMethodSheetState> emit,) async {
Future<void> _onStarted(
PaymentMethodSheetStarted event,
Emitter<PaymentMethodSheetState> emit,
) async {
emit(state.copyWith(status: PaymentMethodSheetStatus.loading));
try {
@@ -57,10 +53,10 @@ class PaymentMethodSheetBloc
));
}
}
Future<void> _onSelectCard(SelectPaymentCardRequested event,
Emitter<PaymentMethodSheetState> emit,) async {
// Включаем локальный лоадер на шторке, либо просто ждем ответа
Future<void> _onSelectCard(
SelectPaymentCardRequested event,
Emitter<PaymentMethodSheetState> emit,
) async {
emit(state.copyWith(status: PaymentMethodSheetStatus.loading));
final result = await _setMainPaymentCardUsecase(event.card.id);
@@ -73,8 +69,7 @@ class PaymentMethodSheetBloc
cards: cardsResult.data ?? [],
));
} else {
emit(state.copyWith(status: PaymentMethodSheetStatus.failure,
errorMessage: 'Ошибка обновления списка карт'));
emit(state.copyWith(status: PaymentMethodSheetStatus.failure, errorMessage: 'Ошибка обновления списка карт'));
}
} else {
emit(state.copyWith(
@@ -84,7 +79,6 @@ class PaymentMethodSheetBloc
}
}
// Выносим загрузку в отдельный метод для переиспользования
Future<void> _loadCards(Emitter<PaymentMethodSheetState> emit) async {
try {
final result = await _getPaymentCardsUsecase();
@@ -107,8 +101,12 @@ class PaymentMethodSheetBloc
}
}
FutureOr<void> _onAddCardButtonPressed(AddCardButtonPressed event,
Emitter<PaymentMethodSheetState> emit) async {
Future<void> _onAddPaymentCardRequested(
AddPaymentCardRequested event,
Emitter<PaymentMethodSheetState> emit,
) async {
emit(state.copyWith(status: PaymentMethodSheetStatus.loading));
try {
final result = await _addPaymentCardUsecase();
@@ -118,9 +116,8 @@ class PaymentMethodSheetBloc
if (formUrlString != null && formUrlString.isNotEmpty) {
final url = Uri.parse(formUrlString);
if (await canLaunchUrl(url)
) {
launchUrl(
if (await canLaunchUrl(url)) {
await launchUrl(
url,
mode: LaunchMode.externalApplication,
);
@@ -138,11 +135,9 @@ class PaymentMethodSheetBloc
));
}
} else if (result is Failure) {
String errorMessage = 'Ошибка при добавлении карты';
emit(state.copyWith(
status: PaymentMethodSheetStatus.failure,
errorMessage: errorMessage,
errorMessage: 'Ошибка при добавлении карты',
));
}
} catch (e) {

View File

@@ -29,18 +29,18 @@ packages:
dependency: "direct main"
description:
name: async
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
url: "https://pub.dev"
source: hosted
version: "2.13.0"
version: "2.13.1"
bloc:
dependency: transitive
description:
name: bloc
sha256: a48653a82055a900b88cd35f92429f068c5a8057ae9b136d197b3d56c57efb81
sha256: e03b235924e4f509c27b5d6b2f949200e0a91149a9818b4f65eeb56662b75413
url: "https://pub.dev"
source: hosted
version: "9.2.0"
version: "9.2.1"
boolean_selector:
dependency: transitive
description:
@@ -89,6 +89,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.2"
code_assets:
dependency: transitive
description:
name: code_assets
sha256: bf394f466ba9205f1812a0433b392d6af280f155f56651eda7c18cc32ed493b8
url: "https://pub.dev"
source: hosted
version: "1.2.1"
collection:
dependency: transitive
description:
@@ -101,10 +109,10 @@ packages:
dependency: transitive
description:
name: cross_file
sha256: "28bb3ae56f117b5aec029d702a90f57d285cd975c3c5c281eaca38dbc47c5937"
sha256: "92c9c43c383bfa1c32079d3bc492d55d6d4318044b7b47edaff8971cbb555c51"
url: "https://pub.dev"
source: hosted
version: "0.3.5+2"
version: "0.3.5+4"
crypto:
dependency: "direct main"
description:
@@ -125,10 +133,10 @@ packages:
dependency: "direct main"
description:
name: cupertino_icons
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd"
url: "https://pub.dev"
source: hosted
version: "1.0.8"
version: "1.0.9"
device_info_plus:
dependency: "direct main"
description:
@@ -149,26 +157,26 @@ packages:
dependency: "direct main"
description:
name: dio
sha256: aff32c08f92787a557dd5c0145ac91536481831a01b4648136373cddb0e64f8c
sha256: ea2bad3c89a27635ce2d85cce4d6b199da49a5a48ec77b03e45b65a3b90922b0
url: "https://pub.dev"
source: hosted
version: "5.9.2"
version: "5.10.0"
dio_web_adapter:
dependency: transitive
description:
name: dio_web_adapter
sha256: "2f9e64323a7c3c7ef69567d5c800424a11f8337b8b228bad02524c9fb3c1f340"
sha256: dd58dc3861eb36edb13b217efc006a1c21e5bbc341de8c229b85634fa5e362e4
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.2.0"
equatable:
dependency: "direct main"
description:
name: equatable
sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b"
sha256: "3bce007a596ff8b3119c45d68aaef631272537c03d30e5d4534dd24bf4c5eaa2"
url: "https://pub.dev"
source: hosted
version: "2.0.8"
version: "2.1.0"
fake_async:
dependency: transitive
description:
@@ -205,10 +213,10 @@ packages:
dependency: transitive
description:
name: file_selector_macos
sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c"
sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a"
url: "https://pub.dev"
source: hosted
version: "0.9.4+4"
version: "0.9.5"
file_selector_platform_interface:
dependency: transitive
description:
@@ -274,10 +282,10 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: c2fe1001710127dfa7da89977a08d591398370d099aacdaa6d44da7eb14b8476
sha256: "3854fe5e3bff0b113c658f260b90c95dea17c92db0f2addeac2e343dd9969785"
url: "https://pub.dev"
source: hosted
version: "2.0.31"
version: "2.0.35"
flutter_secure_storage:
dependency: "direct main"
description:
@@ -356,18 +364,18 @@ packages:
dependency: transitive
description:
name: geolocator_apple
sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22
sha256: "853803d6bb1713c094e935b4a5ae5f19c0308acf81da13fa9ff84fb4c70c0b73"
url: "https://pub.dev"
source: hosted
version: "2.3.13"
version: "2.3.14"
geolocator_platform_interface:
dependency: transitive
description:
name: geolocator_platform_interface
sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67"
sha256: cdb082e4f048b69da244117b7914cc60d2a8897546ffaa4f2529c786ded7aee2
url: "https://pub.dev"
source: hosted
version: "4.2.6"
version: "4.2.8"
geolocator_web:
dependency: transitive
description:
@@ -400,6 +408,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "14.8.1"
hooks:
dependency: transitive
description:
name: hooks
sha256: "9a62a50b50b769a737bc0a8ff381f333529df3ab746b2f6b02e83760231455ba"
url: "https://pub.dev"
source: hosted
version: "2.0.2"
html:
dependency: "direct main"
description:
@@ -428,26 +444,26 @@ packages:
dependency: transitive
description:
name: image
sha256: f9881ff4998044947ec38d098bc7c8316ae1186fa786eddffdb867b9bc94dfce
sha256: "6300175e00616bbc832e2fc91bfa4d776af5402c81c7151bee6905bb08473c52"
url: "https://pub.dev"
source: hosted
version: "4.8.0"
version: "4.9.1"
image_picker:
dependency: "direct main"
description:
name: image_picker
sha256: "784210112be18ea55f69d7076e2c656a4e24949fa9e76429fe53af0c0f4fa320"
sha256: d8402284df184bc05f4a2210c6c23983b0720f4cd87cbd05c5390a78af602667
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.2.3"
image_picker_android:
dependency: transitive
description:
name: image_picker_android
sha256: "28f3987ca0ec702d346eae1d90eda59603a2101b52f1e234ded62cff1d5cfa6e"
sha256: "6f3a1995eafb000333174fae92202622033b0ee7fd917a6cd3730295264df84a"
url: "https://pub.dev"
source: hosted
version: "0.8.13+1"
version: "0.8.13+19"
image_picker_for_web:
dependency: transitive
description:
@@ -460,10 +476,10 @@ packages:
dependency: transitive
description:
name: image_picker_ios
sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e
sha256: b9c4a438a9ff4f60808c9cf0039b93a42bb6c2211ef6ebb647394b2b3fa84588
url: "https://pub.dev"
source: hosted
version: "0.8.13"
version: "0.8.13+6"
image_picker_linux:
dependency: transitive
description:
@@ -476,10 +492,10 @@ packages:
dependency: transitive
description:
name: image_picker_macos
sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04
sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91"
url: "https://pub.dev"
source: hosted
version: "0.2.2"
version: "0.2.2+1"
image_picker_platform_interface:
dependency: transitive
description:
@@ -504,6 +520,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.19.0"
jni:
dependency: transitive
description:
name: jni
sha256: c2230682d5bc2362c1c9e8d3c7f406d9cbba23ab3f2e203a025dd47e0fb2e68f
url: "https://pub.dev"
source: hosted
version: "1.0.0"
jni_flutter:
dependency: transitive
description:
name: jni_flutter
sha256: "8b59e590786050b1cd866677dddaf76b1ade5e7bc751abe04b86e84d379d3ba6"
url: "https://pub.dev"
source: hosted
version: "1.0.1"
js:
dependency: transitive
description:
@@ -516,10 +548,10 @@ packages:
dependency: transitive
description:
name: json_annotation
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80"
url: "https://pub.dev"
source: hosted
version: "4.9.0"
version: "4.12.0"
leak_tracker:
dependency: transitive
description:
@@ -616,6 +648,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.0"
objective_c:
dependency: transitive
description:
name: objective_c
sha256: "6cb691c686fa2838c6deb34980d426145c2a5d537491cb83d463c33cdbc726ed"
url: "https://pub.dev"
source: hosted
version: "9.4.1"
package_config:
dependency: transitive
description:
name: package_config
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
url: "https://pub.dev"
source: hosted
version: "2.2.0"
path:
dependency: "direct main"
description:
@@ -628,42 +676,42 @@ packages:
dependency: transitive
description:
name: path_provider
sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
sha256: a7f4874f987173da295a61c181b8ee71dab59b332a486b391babf26a1b884825
url: "https://pub.dev"
source: hosted
version: "2.1.5"
version: "2.1.6"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
sha256: "3b4c1fc3aa55ddc9cd4aa6759984330d5c8e66aa7702a6223c61540dc6380c37"
sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd"
url: "https://pub.dev"
source: hosted
version: "2.2.19"
version: "2.3.1"
path_provider_foundation:
dependency: transitive
description:
name: path_provider_foundation
sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd"
sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699"
url: "https://pub.dev"
source: hosted
version: "2.4.2"
version: "2.6.0"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16"
url: "https://pub.dev"
source: hosted
version: "2.2.1"
version: "2.2.2"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.3"
path_provider_windows:
dependency: transitive
description:
@@ -712,30 +760,46 @@ packages:
url: "https://pub.dev"
source: hosted
version: "6.1.5+1"
pub_semver:
dependency: transitive
description:
name: pub_semver
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
record_use:
dependency: transitive
description:
name: record_use
sha256: "2551bd8eecfe95d14ae75f6021ad0248be5c27f138c2ec12fcb52b500b3ba1ed"
url: "https://pub.dev"
source: hosted
version: "0.6.0"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
sha256: c3025c5534b01739267eb7d76959bbc25a6d10f6988e1c2a3036940133dd10bf
url: "https://pub.dev"
source: hosted
version: "2.5.3"
version: "2.5.5"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e
sha256: "0634e64bd719f89c012f392938e173521f535d3ecaf66558fa94a056d22b5cc7"
url: "https://pub.dev"
source: hosted
version: "2.4.13"
version: "2.4.27"
shared_preferences_foundation:
dependency: transitive
description:
name: shared_preferences_foundation
sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f"
url: "https://pub.dev"
source: hosted
version: "2.5.4"
version: "2.5.6"
shared_preferences_linux:
dependency: transitive
description:
@@ -748,10 +812,10 @@ packages:
dependency: transitive
description:
name: shared_preferences_platform_interface
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9"
url: "https://pub.dev"
source: hosted
version: "2.4.1"
version: "2.4.2"
shared_preferences_web:
dependency: transitive
description:
@@ -777,10 +841,10 @@ packages:
dependency: transitive
description:
name: source_span
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
url: "https://pub.dev"
source: hosted
version: "1.10.1"
version: "1.10.2"
stack_trace:
dependency: transitive
description:
@@ -841,18 +905,18 @@ packages:
dependency: transitive
description:
name: url_launcher_android
sha256: "81777b08c498a292d93ff2feead633174c386291e35612f8da438d6e92c4447e"
sha256: b413d49b73867ac08dd2f9890efd3cc11f2a0e577618d50843440a1fb3776c32
url: "https://pub.dev"
source: hosted
version: "6.3.20"
version: "6.3.32"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7
sha256: "580fe5dfb51671ae38191d316e027f6b76272b026370708c2d898799750a02b0"
url: "https://pub.dev"
source: hosted
version: "6.3.4"
version: "6.4.1"
url_launcher_linux:
dependency: transitive
description:
@@ -865,10 +929,10 @@ packages:
dependency: transitive
description:
name: url_launcher_macos
sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f
sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18"
url: "https://pub.dev"
source: hosted
version: "3.2.3"
version: "3.2.5"
url_launcher_platform_interface:
dependency: transitive
description:
@@ -881,10 +945,10 @@ packages:
dependency: transitive
description:
name: url_launcher_web
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34"
url: "https://pub.dev"
source: hosted
version: "2.4.1"
version: "2.4.3"
url_launcher_windows:
dependency: transitive
description:
@@ -913,10 +977,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360"
url: "https://pub.dev"
source: hosted
version: "15.0.0"
version: "15.2.0"
web:
dependency: transitive
description:
@@ -953,10 +1017,10 @@ packages:
dependency: transitive
description:
name: xml
sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025"
sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4"
url: "https://pub.dev"
source: hosted
version: "6.6.1"
version: "7.0.1"
yaml:
dependency: transitive
description:
@@ -974,5 +1038,5 @@ packages:
source: hosted
version: "4.2.1"
sdks:
dart: ">=3.10.0-0 <4.0.0"
flutter: ">=3.32.0"
dart: ">=3.12.0 <4.0.0"
flutter: ">=3.44.0"

View File

@@ -2,7 +2,7 @@ name: be_happy
description: ""
publish_to: 'none'
version: 1.0.0+13
version: 1.0.0+16
environment:
sdk: ^3.8.1
@@ -26,7 +26,7 @@ dependencies:
go_router: ^14.0.0
android_id: ^0.4.0
device_info_plus: ^12.3.0
mobile_scanner: ^7.0.0
mobile_scanner: ^7.2.0
yandex_mapkit: ^4.2.1
geolocator: ^11.0.0
crypto: ^3.0.3