v1.26.10 login exception handling with bloc 8.0
This commit is contained in:
commit
208ada4251
@ -52,6 +52,11 @@ android {
|
|||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
compileSdkVersion 33
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
keyAlias keystoreProperties['keyAlias']
|
keyAlias keystoreProperties['keyAlias']
|
||||||
|
@ -5,18 +5,10 @@
|
|||||||
additional functionality it is fine to subclass or reimplement
|
additional functionality it is fine to subclass or reimplement
|
||||||
FlutterApplication and put your custom class here. -->
|
FlutterApplication and put your custom class here. -->
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<application
|
<application android:name="${applicationName}" android:label="WorkoutTest" android:icon="@mipmap/launcher_icon">
|
||||||
android:name="${applicationName}"
|
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" />
|
||||||
android:label="WorkoutTest"
|
<meta-data android:name="com.facebook.sdk.ClientToken" android:value="@string/facebook_client_token"/>
|
||||||
android:icon="@mipmap/launcher_icon">
|
<activity android:name="io.flutter.embedding.android.FlutterActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize" android:allowBackup="false" android:fullBackupContent="false">
|
||||||
<activity android:name="io.flutter.embedding.android.FlutterActivity"
|
|
||||||
android:launchMode="singleTop"
|
|
||||||
android:theme="@style/LaunchTheme"
|
|
||||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
|
||||||
android:hardwareAccelerated="true"
|
|
||||||
android:windowSoftInputMode="adjustResize"
|
|
||||||
android:allowBackup="false"
|
|
||||||
android:fullBackupContent="false">
|
|
||||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||||
the Android process has started. This theme is visible to the user
|
the Android process has started. This theme is visible to the user
|
||||||
while the Flutter UI initializes. After that, this theme continues
|
while the Flutter UI initializes. After that, this theme continues
|
||||||
@ -65,4 +57,7 @@
|
|||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
<queries>
|
||||||
|
<provider android:authorities="com.facebook.katana.provider.PlatformProvider" />
|
||||||
|
</queries>
|
||||||
</manifest>
|
</manifest>
|
@ -1,13 +1,14 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">WorkoutTest</string>
|
<string name="app_name">WorkoutTest</string>
|
||||||
|
|
||||||
<!-- Replace "000000000000" with your Facebook App ID here. -->
|
<!-- Replace "000000000000" with your Facebook App ID here. -->
|
||||||
<string name="facebook_app_id">584181112271127</string>
|
<string name="facebook_app_id">584181112271127</string>
|
||||||
|
<string name="facebook_client_token">60d565f451ce32de3d7eeb26274bbddd</string>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Replace "000000000000" with your Facebook App ID here.
|
Replace "000000000000" with your Facebook App ID here.
|
||||||
**NOTE**: The scheme needs to start with `fb` and then your ID.
|
**NOTE**: The scheme needs to start with `fb` and then your ID.
|
||||||
-->
|
-->
|
||||||
<string name="fb_login_protocol_scheme">fb584181112271127</string>
|
<string name="fb_login_protocol_scheme">fb584181112271127</string>
|
||||||
</resources>
|
</resources>
|
@ -88,40 +88,59 @@ class LoginBloc extends Bloc<LoginEvent, LoginState> with Trans {
|
|||||||
|
|
||||||
void _onSubmit(LoginSubmit event, Emitter<LoginState> emit) async {
|
void _onSubmit(LoginSubmit event, Emitter<LoginState> emit) async {
|
||||||
emit(LoginLoading());
|
emit(LoginLoading());
|
||||||
await userRepository.getUser();
|
try {
|
||||||
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn!));
|
await userRepository.getUser();
|
||||||
Track().track(TrackingEvent.login, eventValue: "email");
|
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn!));
|
||||||
Cache().setLoginType(LoginType.email);
|
Track().track(TrackingEvent.login, eventValue: "email");
|
||||||
|
Cache().setLoginType(LoginType.email);
|
||||||
emit(LoginSuccess());
|
} on Exception catch(e) {
|
||||||
|
emit(LoginError(message: e.toString()));
|
||||||
|
} finally {
|
||||||
|
emit(LoginSuccess());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onLoginFB(LoginFB event, Emitter<LoginState> emit) async {
|
void _onLoginFB(LoginFB event, Emitter<LoginState> emit) async {
|
||||||
emit(LoginLoading());
|
emit(LoginLoading());
|
||||||
Cache().setLoginType(LoginType.fb);
|
try {
|
||||||
await userRepository.getUserByFB();
|
Cache().setLoginType(LoginType.fb);
|
||||||
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn!));
|
await userRepository.getUserByFB();
|
||||||
Track().track(TrackingEvent.login, eventValue: "FB");
|
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn!));
|
||||||
emit(LoginSuccess());
|
Track().track(TrackingEvent.login, eventValue: "FB");
|
||||||
|
} on Exception catch(e) {
|
||||||
|
emit(LoginError(message: e.toString()));
|
||||||
|
} finally {
|
||||||
|
emit(LoginSuccess());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onLoginGoogle(LoginGoogle event, Emitter<LoginState> emit) async {
|
void _onLoginGoogle(LoginGoogle event, Emitter<LoginState> emit) async {
|
||||||
emit(LoginLoading());
|
emit(LoginLoading());
|
||||||
Cache().setLoginType(LoginType.google);
|
try {
|
||||||
await userRepository.getUserByGoogle();
|
Cache().setLoginType(LoginType.google);
|
||||||
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn!));
|
await userRepository.getUserByGoogle();
|
||||||
Track().track(TrackingEvent.login, eventValue: "Google");
|
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn!));
|
||||||
|
Track().track(TrackingEvent.login, eventValue: "Google");
|
||||||
|
|
||||||
emit(LoginSuccess());
|
} on Exception catch(e) {
|
||||||
|
emit(LoginError(message: e.toString()));
|
||||||
|
} finally {
|
||||||
|
emit(LoginSuccess());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onLoginApple(LoginApple event, Emitter<LoginState> emit) async {
|
void _onLoginApple(LoginApple event, Emitter<LoginState> emit) async {
|
||||||
emit(LoginLoading());
|
emit(LoginLoading());
|
||||||
Cache().setLoginType(LoginType.apple);
|
try {
|
||||||
await userRepository.getUserByApple();
|
Cache().setLoginType(LoginType.apple);
|
||||||
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn!));
|
await userRepository.getUserByApple();
|
||||||
Track().track(TrackingEvent.login, eventValue: "Apple");
|
accountBloc.add(AccountLogInFinished(customer: Cache().userLoggedIn!));
|
||||||
emit(LoginSuccess());
|
Track().track(TrackingEvent.login, eventValue: "Apple");
|
||||||
|
} on Exception catch(e) {
|
||||||
|
emit(LoginError(message: e.toString()));
|
||||||
|
} finally {
|
||||||
|
emit(LoginSuccess());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onRegistrationSubmit(RegistrationSubmit event, Emitter<LoginState> emit) async {
|
void _onRegistrationSubmit(RegistrationSubmit event, Emitter<LoginState> emit) async {
|
||||||
|
@ -161,7 +161,7 @@ class SalesBloc extends Bloc<SalesEvent, SalesState> with Logging {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String productSetString = splitTestRepository.getSplitTestValue("product_set_2");
|
String productSetString = splitTestRepository.getSplitTestValue("product_set_5");
|
||||||
log("ProductSetString: $productSetString");
|
log("ProductSetString: $productSetString");
|
||||||
try {
|
try {
|
||||||
productSet = int.parse(productSetString);
|
productSet = int.parse(productSetString);
|
||||||
|
@ -296,7 +296,7 @@ class DropdownSearchState<T> extends State<DropdownSearch<T?>> {
|
|||||||
initialValue: widget.selectedItem,
|
initialValue: widget.selectedItem,
|
||||||
builder: (FormFieldState<T> state) {
|
builder: (FormFieldState<T> state) {
|
||||||
if (state.value != value) {
|
if (state.value != value) {
|
||||||
WidgetsBinding.instance!.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
state.didChange(value);
|
state.didChange(value);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,7 @@ class _SelectDialogState<T> extends State<SelectDialog<T?>> {
|
|||||||
content: _errorWidget(error),
|
content: _errorWidget(error),
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
TextButton(
|
TextButton(
|
||||||
child: new Text("OK"),
|
child: const Text("OK"),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
Navigator.of(context).pop(false);
|
Navigator.of(context).pop(false);
|
||||||
},
|
},
|
||||||
|
@ -1127,7 +1127,7 @@ class _AnimationWrapperState extends State<_AnimationWrapper> {
|
|||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
WidgetsBinding.instance!.addPostFrameCallback((_) {
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
if (mounted) {
|
if (mounted) {
|
||||||
setState(() {
|
setState(() {
|
||||||
opacity = 1.0;
|
opacity = 1.0;
|
||||||
|
@ -54,10 +54,11 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||||
import 'package:aitrainer_app/util/app_localization.dart';
|
import 'package:aitrainer_app/util/app_localization.dart';
|
||||||
import 'package:flutter_uxcam/flutter_uxcam.dart';
|
//import 'package:flutter_uxcam/flutter_uxcam.dart';
|
||||||
import 'package:google_fonts/google_fonts.dart';
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
|
import 'package:matomo_tracker/matomo_tracker.dart';
|
||||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||||
import 'package:flutter_smartlook/flutter_smartlook.dart';
|
//import 'package:flutter_smartlook/flutter_smartlook.dart';
|
||||||
import 'package:upgrader/upgrader.dart';
|
import 'package:upgrader/upgrader.dart';
|
||||||
import 'bloc/account/account_bloc.dart';
|
import 'bloc/account/account_bloc.dart';
|
||||||
import 'bloc/body_development/body_development_bloc.dart';
|
import 'bloc/body_development/body_development_bloc.dart';
|
||||||
@ -104,7 +105,8 @@ Future<Null> _reportError(dynamic error, dynamic stackTrace) async {
|
|||||||
);
|
);
|
||||||
final String platform = Platform.isAndroid ? "Android" : "iOS";
|
final String platform = Platform.isAndroid ? "Android" : "iOS";
|
||||||
final String version = Cache().packageInfo != null ? Cache().packageInfo!.version + "+" + Cache().packageInfo!.buildNumber : "";
|
final String version = Cache().packageInfo != null ? Cache().packageInfo!.version + "+" + Cache().packageInfo!.buildNumber : "";
|
||||||
final sentryId = await Sentry.captureException(error, stackTrace: stackTrace, hint: "Platform: $platform, Version: $version, User: $customerId");
|
final sentryId =
|
||||||
|
await Sentry.captureException(error, stackTrace: stackTrace, hint: "Platform: $platform, Version: $version, User: $customerId");
|
||||||
|
|
||||||
print('Capture exception result : SentryId : $sentryId');
|
print('Capture exception result : SentryId : $sentryId');
|
||||||
}
|
}
|
||||||
@ -146,7 +148,12 @@ Future<Null> main() async {
|
|||||||
Future<void> initThirdParty() async {
|
Future<void> initThirdParty() async {
|
||||||
if (!isInDebugMode) {
|
if (!isInDebugMode) {
|
||||||
//await FlurryData.initialize(androidKey: "JNYCTCWBT34FM3J8TV36", iosKey: "3QBG7BSMGPDH24S8TRQP", enableLog: true);
|
//await FlurryData.initialize(androidKey: "JNYCTCWBT34FM3J8TV36", iosKey: "3QBG7BSMGPDH24S8TRQP", enableLog: true);
|
||||||
FlutterUxcam.optIntoSchematicRecordings();
|
await MatomoTracker.instance.initialize(
|
||||||
|
siteId: 3,
|
||||||
|
url: 'https://matomo.workouttest.com/matomo.php',
|
||||||
|
//visitorId: 'customer_1',
|
||||||
|
);
|
||||||
|
//FlutterUxcam.optIntoSchematicRecordings();
|
||||||
}
|
}
|
||||||
await FirebaseApi().initializeFlutterFire();
|
await FirebaseApi().initializeFlutterFire();
|
||||||
}
|
}
|
||||||
@ -154,11 +161,11 @@ Future<Null> main() async {
|
|||||||
final WorkoutTreeRepository menuTreeRepository = WorkoutTreeRepository();
|
final WorkoutTreeRepository menuTreeRepository = WorkoutTreeRepository();
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
if (!isInDebugMode) {
|
if (!isInDebugMode) {
|
||||||
FlutterUxcam.startWithKey("wvdstyoml4tiwfd");
|
//FlutterUxcam.startWithKey("wvdstyoml4tiwfd");
|
||||||
|
|
||||||
SetupOptions options = (new SetupOptionsBuilder('682883e5cd71a46160c4f6ed070530ee593f49c6')).build();
|
//SetupOptions options = (new SetupOptionsBuilder('682883e5cd71a46160c4f6ed070530ee593f49c6')).build();
|
||||||
Smartlook.setupAndStartRecording(options);
|
//Smartlook.setupAndStartRecording(options);
|
||||||
Smartlook.setEventTrackingMode(EventTrackingMode.FULL_TRACKING);
|
//Smartlook.setEventTrackingMode(EventTrackingMode.FULL_TRACKING);
|
||||||
}
|
}
|
||||||
await initThirdParty();
|
await initThirdParty();
|
||||||
final FirebaseAnalytics analytics = FirebaseAnalytics.instance;
|
final FirebaseAnalytics analytics = FirebaseAnalytics.instance;
|
||||||
@ -194,7 +201,8 @@ Future<Null> main() async {
|
|||||||
BlocProvider<TestSetExecuteBloc>(
|
BlocProvider<TestSetExecuteBloc>(
|
||||||
create: (BuildContext context) => TestSetExecuteBloc(),
|
create: (BuildContext context) => TestSetExecuteBloc(),
|
||||||
),
|
),
|
||||||
BlocProvider<TutorialBloc>(create: (BuildContext context) => TutorialBloc(tutorialName: ActivityDone.tutorialExecuteFirstTest.toStr())),
|
BlocProvider<TutorialBloc>(
|
||||||
|
create: (BuildContext context) => TutorialBloc(tutorialName: ActivityDone.tutorialExecuteFirstTest.toStr())),
|
||||||
BlocProvider<TrainingPlanBloc>(create: (context) {
|
BlocProvider<TrainingPlanBloc>(create: (context) {
|
||||||
final MenuBloc menuBloc = BlocProvider.of<MenuBloc>(context);
|
final MenuBloc menuBloc = BlocProvider.of<MenuBloc>(context);
|
||||||
return TrainingPlanBloc(menuBloc: menuBloc, trainingPlanRepository: TrainingPlanRepository());
|
return TrainingPlanBloc(menuBloc: menuBloc, trainingPlanRepository: TrainingPlanRepository());
|
||||||
@ -216,9 +224,6 @@ class WorkoutTestApp extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
|
|
||||||
// Only call clearSavedSettings() during testing to reset internal values.
|
|
||||||
Upgrader().clearSavedSettings(); // REMOVE this for release builds
|
|
||||||
Upgrader().installAppStoreListingURL(Platform.isAndroid
|
Upgrader().installAppStoreListingURL(Platform.isAndroid
|
||||||
? "https://play.google.com/store/apps/details?id=com.aitrainer.aitrainer_app"
|
? "https://play.google.com/store/apps/details?id=com.aitrainer.aitrainer_app"
|
||||||
: "https://apps.apple.com/hu/app/workouttest/id1515271425");
|
: "https://apps.apple.com/hu/app/workouttest/id1515271425");
|
||||||
|
@ -34,12 +34,13 @@ import 'package:aitrainer_app/util/track.dart';
|
|||||||
import 'package:firebase_remote_config/firebase_remote_config.dart';
|
import 'package:firebase_remote_config/firebase_remote_config.dart';
|
||||||
//import 'package:flurry_data/flurry_data.dart';
|
//import 'package:flurry_data/flurry_data.dart';
|
||||||
import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';
|
import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';
|
||||||
import 'package:flutter_uxcam/flutter_uxcam.dart';
|
//import 'package:flutter_uxcam/flutter_uxcam.dart';
|
||||||
|
import 'package:matomo_tracker/matomo_tracker.dart';
|
||||||
import 'package:package_info/package_info.dart';
|
import 'package:package_info/package_info.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:aitrainer_app/model/exercise_type.dart';
|
import 'package:aitrainer_app/model/exercise_type.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
import 'package:flutter_smartlook/flutter_smartlook.dart';
|
//import 'package:flutter_smartlook/flutter_smartlook.dart';
|
||||||
|
|
||||||
import 'customer_exercise_device.dart';
|
import 'customer_exercise_device.dart';
|
||||||
import 'exercise_device.dart';
|
import 'exercise_device.dart';
|
||||||
@ -175,7 +176,7 @@ class Cache with Logging {
|
|||||||
List<Exercise>? _exercisesTrainee;
|
List<Exercise>? _exercisesTrainee;
|
||||||
ExercisePlan? _traineeExercisePlan;
|
ExercisePlan? _traineeExercisePlan;
|
||||||
|
|
||||||
RemoteConfig? remoteConfig;
|
FirebaseRemoteConfig? remoteConfig;
|
||||||
|
|
||||||
LinkedHashMap<String, int> _badges = LinkedHashMap();
|
LinkedHashMap<String, int> _badges = LinkedHashMap();
|
||||||
|
|
||||||
@ -544,7 +545,8 @@ class Cache with Logging {
|
|||||||
|
|
||||||
ExercisePlan? getMyExercisePlan() => _myExercisePlan;
|
ExercisePlan? getMyExercisePlan() => _myExercisePlan;
|
||||||
|
|
||||||
void setMyExercisePlanDetails(LinkedHashMap<int, ExercisePlanDetail> listExercisePlanDetail) => _myExercisesPlanDetails = listExercisePlanDetail;
|
void setMyExercisePlanDetails(LinkedHashMap<int, ExercisePlanDetail> listExercisePlanDetail) =>
|
||||||
|
_myExercisesPlanDetails = listExercisePlanDetail;
|
||||||
|
|
||||||
void addToMyExercisePlanDetails(ExercisePlanDetail detail) => _myExercisesPlanDetails[detail.exerciseTypeId] = detail;
|
void addToMyExercisePlanDetails(ExercisePlanDetail detail) => _myExercisesPlanDetails[detail.exerciseTypeId] = detail;
|
||||||
|
|
||||||
@ -558,7 +560,8 @@ class Cache with Logging {
|
|||||||
|
|
||||||
void deleteMyExercisePlanDetail(ExercisePlanDetail detail) => this.deleteMyExercisePlanDetailByExerciseTypeId(detail.exerciseTypeId);
|
void deleteMyExercisePlanDetail(ExercisePlanDetail detail) => this.deleteMyExercisePlanDetailByExerciseTypeId(detail.exerciseTypeId);
|
||||||
|
|
||||||
void deletedMyExercisePlanDetail(ExercisePlanDetail detail) => this._myExercisesPlanDetails[detail.exerciseTypeId]!.change = ModelChange.deleted;
|
void deletedMyExercisePlanDetail(ExercisePlanDetail detail) =>
|
||||||
|
this._myExercisesPlanDetails[detail.exerciseTypeId]!.change = ModelChange.deleted;
|
||||||
|
|
||||||
void deleteMyExercisePlanDetailByExerciseTypeId(int exerciseTypeId) {
|
void deleteMyExercisePlanDetailByExerciseTypeId(int exerciseTypeId) {
|
||||||
this._myExercisesPlanDetails[exerciseTypeId]!.change = ModelChange.delete;
|
this._myExercisesPlanDetails[exerciseTypeId]!.change = ModelChange.delete;
|
||||||
@ -686,14 +689,21 @@ class Cache with Logging {
|
|||||||
|
|
||||||
Future<void> initCustomer(int customerId) async {
|
Future<void> initCustomer(int customerId) async {
|
||||||
log(" *** initCustomer");
|
log(" *** initCustomer");
|
||||||
await PackageApi().getCustomerPackage(customerId);
|
try {
|
||||||
|
await PackageApi().getCustomerPackage(customerId);
|
||||||
|
} on Exception catch (_) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!isInDebugMode) {
|
if (!isInDebugMode) {
|
||||||
//FlurryData.setUserId(customerId.toString());
|
//FlurryData.setUserId(customerId.toString());
|
||||||
FlutterUxcam.setUserProperty("username", customerId.toString());
|
//FlutterUxcam.setUserProperty("username", customerId.toString());
|
||||||
FlutterUxcam.setUserIdentity(customerId.toString());
|
//FlutterUxcam.setUserIdentity(customerId.toString());
|
||||||
Smartlook.setUserIdentifier(customerId.toString());
|
//Smartlook.setUserIdentifier(customerId.toString());
|
||||||
|
//Smartlook.instance.
|
||||||
Track().track(TrackingEvent.enter);
|
Track().track(TrackingEvent.enter);
|
||||||
|
MatomoTracker.instance
|
||||||
|
.trackEvent(eventName: TrackingEvent.enter.enumToString(), eventCategory: "", action: TrackingEvent.enter.enumToString(), eventValue: customerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Future.forEach(ActivityDone.values, (element) async {
|
await Future.forEach(ActivityDone.values, (element) async {
|
||||||
@ -751,8 +761,8 @@ class Cache with Logging {
|
|||||||
List<Tutorial>? get tutorials => this._tutorials;
|
List<Tutorial>? get tutorials => this._tutorials;
|
||||||
setTutorials(List<Tutorial>? value) => this._tutorials = value;
|
setTutorials(List<Tutorial>? value) => this._tutorials = value;
|
||||||
|
|
||||||
RemoteConfig? getRemoteConfig() => this.remoteConfig;
|
FirebaseRemoteConfig? getRemoteConfig() => this.remoteConfig;
|
||||||
setRemoteConfig(RemoteConfig? remoteConfig) => this.remoteConfig = remoteConfig;
|
setRemoteConfig(FirebaseRemoteConfig? remoteConfig) => this.remoteConfig = remoteConfig;
|
||||||
|
|
||||||
List<Description>? getDescriptions() => this._descriptions;
|
List<Description>? getDescriptions() => this._descriptions;
|
||||||
setDescriptions(List<Description>? value) => this._descriptions = value;
|
setDescriptions(List<Description>? value) => this._descriptions = value;
|
||||||
|
@ -2,8 +2,9 @@ import 'package:aitrainer_app/model/cache.dart';
|
|||||||
import 'package:aitrainer_app/service/logging.dart';
|
import 'package:aitrainer_app/service/logging.dart';
|
||||||
import 'package:firebase_remote_config/firebase_remote_config.dart';
|
import 'package:firebase_remote_config/firebase_remote_config.dart';
|
||||||
|
|
||||||
|
|
||||||
class RemoteConfigRepository with Logging {
|
class RemoteConfigRepository with Logging {
|
||||||
RemoteConfig? remoteConfig;
|
FirebaseRemoteConfig? remoteConfig;
|
||||||
|
|
||||||
String getConfigValue(String configKey, String baseValue) {
|
String getConfigValue(String configKey, String baseValue) {
|
||||||
String value = "";
|
String value = "";
|
||||||
|
@ -3,8 +3,9 @@ import 'package:aitrainer_app/repository/description_repository.dart';
|
|||||||
import 'package:aitrainer_app/service/logging.dart';
|
import 'package:aitrainer_app/service/logging.dart';
|
||||||
import 'package:firebase_remote_config/firebase_remote_config.dart';
|
import 'package:firebase_remote_config/firebase_remote_config.dart';
|
||||||
|
|
||||||
|
|
||||||
class SplitTestRepository with Logging {
|
class SplitTestRepository with Logging {
|
||||||
final RemoteConfig? _remoteConfig = Cache().remoteConfig;
|
final FirebaseRemoteConfig? _remoteConfig = Cache().remoteConfig;
|
||||||
final DescriptionRepository descriptionRepository = DescriptionRepository();
|
final DescriptionRepository descriptionRepository = DescriptionRepository();
|
||||||
|
|
||||||
String getSplitTestValue(String remoteConfigKey) {
|
String getSplitTestValue(String remoteConfigKey) {
|
||||||
|
@ -384,13 +384,14 @@ class FirebaseApi with logging.Logging {
|
|||||||
RemoteConfig? remoteConfig;
|
RemoteConfig? remoteConfig;
|
||||||
try {
|
try {
|
||||||
remoteConfig = RemoteConfig.instance;
|
remoteConfig = RemoteConfig.instance;
|
||||||
await remoteConfig.setConfigSettings(RemoteConfigSettings(
|
await remoteConfig.setConfigSettings(
|
||||||
|
RemoteConfigSettings(
|
||||||
fetchTimeout: const Duration(seconds: 10),
|
fetchTimeout: const Duration(seconds: 10),
|
||||||
minimumFetchInterval: const Duration(seconds: 1),
|
minimumFetchInterval: const Duration(seconds: 1),
|
||||||
));
|
));
|
||||||
|
|
||||||
RemoteConfigValue(null, ValueSource.valueStatic);
|
//RemoteConfigValue(null, ValueSource.valueStatic);
|
||||||
Cache().setRemoteConfig(remoteConfig);
|
//Cache().setRemoteConfig(remoteConfig);
|
||||||
} on Exception catch (e) {
|
} on Exception catch (e) {
|
||||||
print('Unable to fetch remote config. Cached or default values will be used: $e');
|
print('Unable to fetch remote config. Cached or default values will be used: $e');
|
||||||
if (remoteConfig != null) {
|
if (remoteConfig != null) {
|
||||||
|
@ -44,62 +44,44 @@ class PackageApi {
|
|||||||
final List<String> headRecord = element.split("***");
|
final List<String> headRecord = element.split("***");
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
if (headRecord[0] == "ExerciseDevice") {
|
if (headRecord[0] == "ExerciseDevice") {
|
||||||
final List<ExerciseDevice> devices =
|
final List<ExerciseDevice> devices = json.map((device) => ExerciseDevice.fromJson(device)).toList();
|
||||||
json.map((device) => ExerciseDevice.fromJson(device)).toList();
|
|
||||||
Cache().setDevices(devices);
|
Cache().setDevices(devices);
|
||||||
} else if (headRecord[0] == "Product") {
|
} else if (headRecord[0] == "Product") {
|
||||||
final List<Product> products =
|
final List<Product> products = json.map((product) => Product.fromJson(product)).toList();
|
||||||
json.map((product) => Product.fromJson(product)).toList();
|
|
||||||
Cache().setProducts(products);
|
Cache().setProducts(products);
|
||||||
} else if (headRecord[0] == "Property") {
|
} else if (headRecord[0] == "Property") {
|
||||||
final List<Property> properties =
|
final List<Property> properties = json.map((property) => Property.fromJson(property)).toList();
|
||||||
json.map((property) => Property.fromJson(property)).toList();
|
|
||||||
Cache().setProperties(properties);
|
Cache().setProperties(properties);
|
||||||
} else if (headRecord[0] == "ExerciseTree") {
|
} else if (headRecord[0] == "ExerciseTree") {
|
||||||
exerciseTree = json
|
exerciseTree = json.map((exerciseTree) => ExerciseTree.fromJson(exerciseTree)).toList();
|
||||||
.map((exerciseTree) => ExerciseTree.fromJson(exerciseTree))
|
|
||||||
.toList();
|
|
||||||
} else if (headRecord[0] == "ExerciseType") {
|
} else if (headRecord[0] == "ExerciseType") {
|
||||||
final List<ExerciseType> exerciseTypes = json
|
final List<ExerciseType> exerciseTypes = json.map((exerciseType) => ExerciseType.fromJson(exerciseType)).toList();
|
||||||
.map((exerciseType) => ExerciseType.fromJson(exerciseType))
|
|
||||||
.toList();
|
|
||||||
await Future.forEach(exerciseTypes, (elem) async {
|
await Future.forEach(exerciseTypes, (elem) async {
|
||||||
final ExerciseType exerciseType = elem as ExerciseType;
|
final ExerciseType exerciseType = elem as ExerciseType;
|
||||||
exerciseType.imageUrl = await ExerciseTypeApi()
|
exerciseType.imageUrl = await ExerciseTypeApi().buildImage(exerciseType.imageUrl, exerciseType.exerciseTypeId);
|
||||||
.buildImage(exerciseType.imageUrl, exerciseType.exerciseTypeId);
|
|
||||||
});
|
});
|
||||||
Cache().setExerciseTypes(exerciseTypes);
|
Cache().setExerciseTypes(exerciseTypes);
|
||||||
} else if (headRecord[0] == "ExerciseAbility") {
|
} else if (headRecord[0] == "ExerciseAbility") {
|
||||||
} else if (headRecord[0] == "ExercisePlanTemplate") {
|
} else if (headRecord[0] == "ExercisePlanTemplate") {
|
||||||
final List<ExercisePlanTemplate> exercisePlanTemplates = json
|
final List<ExercisePlanTemplate> exercisePlanTemplates =
|
||||||
.map((exercisePlanTemplate) =>
|
json.map((exercisePlanTemplate) => ExercisePlanTemplate.fromJson(exercisePlanTemplate)).toList();
|
||||||
ExercisePlanTemplate.fromJson(exercisePlanTemplate))
|
|
||||||
.toList();
|
|
||||||
Cache().setExercisePlanTemplates(exercisePlanTemplates);
|
Cache().setExercisePlanTemplates(exercisePlanTemplates);
|
||||||
} else if (headRecord[0] == "ExerciseTreeParents") {
|
} else if (headRecord[0] == "ExerciseTreeParents") {
|
||||||
exerciseTreeParents = json
|
exerciseTreeParents = json.map((exerciseTreeParent) => ExerciseTreeParents.fromJson(exerciseTreeParent)).toList();
|
||||||
.map((exerciseTreeParent) =>
|
|
||||||
ExerciseTreeParents.fromJson(exerciseTreeParent))
|
|
||||||
.toList();
|
|
||||||
} else if (headRecord[0] == "Evaluation") {
|
} else if (headRecord[0] == "Evaluation") {
|
||||||
final List<Evaluation> evaluations =
|
final List<Evaluation> evaluations = json.map((evaluation) => Evaluation.fromJson(evaluation)).toList();
|
||||||
json.map((evaluation) => Evaluation.fromJson(evaluation)).toList();
|
|
||||||
Cache().evaluations = evaluations;
|
Cache().evaluations = evaluations;
|
||||||
} else if (headRecord[0] == "Sport") {
|
} else if (headRecord[0] == "Sport") {
|
||||||
final List<Sport> sports =
|
final List<Sport> sports = json.map((sport) => Sport.fromJson(sport)).toList();
|
||||||
json.map((sport) => Sport.fromJson(sport)).toList();
|
|
||||||
Cache().setSports(sports);
|
Cache().setSports(sports);
|
||||||
} else if (headRecord[0] == "Tutorial") {
|
} else if (headRecord[0] == "Tutorial") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<Tutorial> tutorials =
|
final List<Tutorial> tutorials = json.map((tutorial) => Tutorial.fromJson(tutorial)).toList();
|
||||||
json.map((tutorial) => Tutorial.fromJson(tutorial)).toList();
|
|
||||||
|
|
||||||
Cache().setTutorials(tutorials);
|
Cache().setTutorials(tutorials);
|
||||||
} else if (headRecord[0] == "Description") {
|
} else if (headRecord[0] == "Description") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<Description>? descriptions = json
|
final List<Description>? descriptions = json.map((description) => Description.fromJson(description)).toList();
|
||||||
.map((description) => Description.fromJson(description))
|
|
||||||
.toList();
|
|
||||||
//print("Description: $descriptions");
|
//print("Description: $descriptions");
|
||||||
Cache().setDescriptions(descriptions);
|
Cache().setDescriptions(descriptions);
|
||||||
} else if (headRecord[0] == "Faq") {
|
} else if (headRecord[0] == "Faq") {
|
||||||
@ -109,8 +91,7 @@ class PackageApi {
|
|||||||
Cache().setFaqs(faqs);
|
Cache().setFaqs(faqs);
|
||||||
} else if (headRecord[0] == "TrainingPlan") {
|
} else if (headRecord[0] == "TrainingPlan") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<TrainingPlan>? plans =
|
final List<TrainingPlan>? plans = json.map((plan) => TrainingPlan.fromJson(plan)).toList();
|
||||||
json.map((plan) => TrainingPlan.fromJson(plan)).toList();
|
|
||||||
|
|
||||||
List<TrainingPlan> activePlans = [];
|
List<TrainingPlan> activePlans = [];
|
||||||
if (plans != null) {
|
if (plans != null) {
|
||||||
@ -123,38 +104,31 @@ class PackageApi {
|
|||||||
Cache().setTrainingPlans(activePlans);
|
Cache().setTrainingPlans(activePlans);
|
||||||
} else if (headRecord[0] == "SplitTests") {
|
} else if (headRecord[0] == "SplitTests") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<SplitTest>? tests =
|
final List<SplitTest>? tests = json.map((test) => SplitTest.fromJson(test)).toList();
|
||||||
json.map((test) => SplitTest.fromJson(test)).toList();
|
|
||||||
//print("A/B tests: $tests");
|
//print("A/B tests: $tests");
|
||||||
Cache().setSplitTests(tests);
|
Cache().setSplitTests(tests);
|
||||||
} else if (headRecord[0] == "TrainingPlanDay") {
|
} else if (headRecord[0] == "TrainingPlanDay") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<TrainingPlanDay>? days =
|
final List<TrainingPlanDay>? days = json.map((day) => TrainingPlanDay.fromJson(day)).toList();
|
||||||
json.map((day) => TrainingPlanDay.fromJson(day)).toList();
|
|
||||||
Cache().setTrainingPlanDays(days);
|
Cache().setTrainingPlanDays(days);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
exerciseTree =
|
exerciseTree = this.getExerciseTreeParents(exerciseTree, exerciseTreeParents);
|
||||||
this.getExerciseTreeParents(exerciseTree, exerciseTreeParents);
|
|
||||||
|
|
||||||
await Future.forEach(exerciseTree, (element) async {
|
await Future.forEach(exerciseTree, (element) async {
|
||||||
ExerciseTree tree = element as ExerciseTree;
|
ExerciseTree tree = element as ExerciseTree;
|
||||||
tree.imageUrl =
|
tree.imageUrl = await ExerciseTreeApi().buildImage(tree.imageUrl, tree.treeId);
|
||||||
await ExerciseTreeApi().buildImage(tree.imageUrl, tree.treeId);
|
|
||||||
});
|
});
|
||||||
Cache().setExerciseTree(exerciseTree);
|
Cache().setExerciseTree(exerciseTree);
|
||||||
|
|
||||||
TrainingPlanDayRepository trainingPlanDayRepository =
|
TrainingPlanDayRepository trainingPlanDayRepository = TrainingPlanDayRepository();
|
||||||
TrainingPlanDayRepository();
|
|
||||||
trainingPlanDayRepository.assignTrainingPlanDays();
|
trainingPlanDayRepository.assignTrainingPlanDays();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ExerciseTree> getExerciseTreeParents(
|
List<ExerciseTree> getExerciseTreeParents(final List<ExerciseTree> exerciseTree, final List<ExerciseTreeParents> exerciseTreeParents) {
|
||||||
final List<ExerciseTree> exerciseTree,
|
|
||||||
final List<ExerciseTreeParents> exerciseTreeParents) {
|
|
||||||
List<ExerciseTree> copyList = ExerciseTreeApi().copyList(exerciseTree);
|
List<ExerciseTree> copyList = ExerciseTreeApi().copyList(exerciseTree);
|
||||||
|
|
||||||
int treeIndex = 0;
|
int treeIndex = 0;
|
||||||
@ -184,8 +158,7 @@ class PackageApi {
|
|||||||
|
|
||||||
Future<void> getCustomerPackage(int customerId) async {
|
Future<void> getCustomerPackage(int customerId) async {
|
||||||
try {
|
try {
|
||||||
final body = await _client.get(
|
final body = await _client.get("app_customer_package/" + customerId.toString(), "");
|
||||||
"app_customer_package/" + customerId.toString(), "");
|
|
||||||
|
|
||||||
final List<String> models = body.split("|||");
|
final List<String> models = body.split("|||");
|
||||||
await Future.forEach(models, (elem) async {
|
await Future.forEach(models, (elem) async {
|
||||||
@ -197,33 +170,24 @@ class PackageApi {
|
|||||||
Cache().userLoggedIn = customer;
|
Cache().userLoggedIn = customer;
|
||||||
} else if (headRecord[0] == "CustomerExerciseDevice") {
|
} else if (headRecord[0] == "CustomerExerciseDevice") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<CustomerExerciseDevice> devices = json
|
final List<CustomerExerciseDevice> devices = json.map((device) => CustomerExerciseDevice.fromJson(device)).toList();
|
||||||
.map((device) => CustomerExerciseDevice.fromJson(device))
|
|
||||||
.toList();
|
|
||||||
Cache().setCustomerDevices(devices);
|
Cache().setCustomerDevices(devices);
|
||||||
// ToDo
|
// ToDo
|
||||||
} else if (headRecord[0] == "Exercises") {
|
} else if (headRecord[0] == "Exercises") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<Exercise> exercises = json
|
final List<Exercise> exercises = json.map((exerciseType) => Exercise.fromJson(exerciseType)).toList();
|
||||||
.map((exerciseType) => Exercise.fromJson(exerciseType))
|
|
||||||
.toList();
|
|
||||||
Cache().setExercises(exercises);
|
Cache().setExercises(exercises);
|
||||||
} else if (headRecord[0] == "Purchase") {
|
} else if (headRecord[0] == "Purchase") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<Purchase> purchases =
|
final List<Purchase> purchases = json.map((purchase) => Purchase.fromJson(purchase)).toList();
|
||||||
json.map((purchase) => Purchase.fromJson(purchase)).toList();
|
|
||||||
Cache().setPurchases(purchases);
|
Cache().setPurchases(purchases);
|
||||||
} else if (headRecord[0] == "CustomerProperty") {
|
} else if (headRecord[0] == "CustomerProperty") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<CustomerProperty> customerProperties = json
|
final List<CustomerProperty> customerProperties = json.map((property) => CustomerProperty.fromJson(property)).toList();
|
||||||
.map((property) => CustomerProperty.fromJson(property))
|
|
||||||
.toList();
|
|
||||||
CustomerApi().initProperties(customerProperties);
|
CustomerApi().initProperties(customerProperties);
|
||||||
} else if (headRecord[0] == "CustomerPropertyAll") {
|
} else if (headRecord[0] == "CustomerPropertyAll") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<CustomerProperty> allCustomerProperties = json
|
final List<CustomerProperty> allCustomerProperties = json.map((property) => CustomerProperty.fromJson(property)).toList();
|
||||||
.map((property) => CustomerProperty.fromJson(property))
|
|
||||||
.toList();
|
|
||||||
print(" All Properties ---- $allCustomerProperties");
|
print(" All Properties ---- $allCustomerProperties");
|
||||||
Cache().setCustomerPropertyAll(allCustomerProperties);
|
Cache().setCustomerPropertyAll(allCustomerProperties);
|
||||||
} else if (headRecord[0] == "ExerciseResult") {
|
} else if (headRecord[0] == "ExerciseResult") {
|
||||||
@ -235,14 +199,12 @@ class PackageApi {
|
|||||||
// ToDo */
|
// ToDo */
|
||||||
} else if (headRecord[0] == "CustomerActivity") {
|
} else if (headRecord[0] == "CustomerActivity") {
|
||||||
final Iterable json = jsonDecode(headRecord[1]);
|
final Iterable json = jsonDecode(headRecord[1]);
|
||||||
final List<CustomerActivity> customerActivities = json
|
final List<CustomerActivity> customerActivities = json.map((activity) => CustomerActivity.fromJson(activity)).toList();
|
||||||
.map((activity) => CustomerActivity.fromJson(activity))
|
|
||||||
.toList();
|
|
||||||
Cache().setCustomerActivities(customerActivities);
|
Cache().setCustomerActivities(customerActivities);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} on NotFoundException catch (_) {
|
} on NotFoundException catch (e) {
|
||||||
throw Exception("Please log in");
|
throw Exception("Please log in $e");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,8 +7,9 @@ import 'package:aitrainer_app/model/tracking.dart' as model;
|
|||||||
import 'package:firebase_analytics/firebase_analytics.dart';
|
import 'package:firebase_analytics/firebase_analytics.dart';
|
||||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||||
//import 'package:flurry_data/flurry_data.dart';
|
//import 'package:flurry_data/flurry_data.dart';
|
||||||
import 'package:flutter_uxcam/flutter_uxcam.dart';
|
//import 'package:flutter_uxcam/flutter_uxcam.dart';
|
||||||
import 'package:flutter_smartlook/flutter_smartlook.dart';
|
//import 'package:flutter_smartlook/flutter_smartlook.dart';
|
||||||
|
import 'package:matomo_tracker/matomo_tracker.dart';
|
||||||
|
|
||||||
class Track with Logging {
|
class Track with Logging {
|
||||||
static final Track _singleton = Track._internal();
|
static final Track _singleton = Track._internal();
|
||||||
@ -23,8 +24,8 @@ class Track with Logging {
|
|||||||
void track(TrackingEvent event, {String eventValue = ""}) {
|
void track(TrackingEvent event, {String eventValue = ""}) {
|
||||||
if (!isInDebugMode) {
|
if (!isInDebugMode) {
|
||||||
//FlurryData.logEvent(event.enumToString());
|
//FlurryData.logEvent(event.enumToString());
|
||||||
Smartlook.setGlobalEventProperty(event.toString(), eventValue, false);
|
//Smartlook.setGlobalEventProperty(event.toString(), eventValue, false);
|
||||||
FlutterUxcam.logEventWithProperties(event.enumToString(), {"value": eventValue});
|
//FlutterUxcam.logEventWithProperties(event.enumToString(), {"value": eventValue});
|
||||||
model.Tracking tracking = model.Tracking();
|
model.Tracking tracking = model.Tracking();
|
||||||
tracking.customerId = Cache().userLoggedIn == null ? 0 : Cache().userLoggedIn!.customerId!;
|
tracking.customerId = Cache().userLoggedIn == null ? 0 : Cache().userLoggedIn!.customerId!;
|
||||||
tracking.event = event.enumToString();
|
tracking.event = event.enumToString();
|
||||||
@ -37,6 +38,7 @@ class Track with Logging {
|
|||||||
|
|
||||||
FirebaseMessaging.instance.subscribeToTopic(event.enumToString());
|
FirebaseMessaging.instance.subscribeToTopic(event.enumToString());
|
||||||
analytics.logEvent(name: event.enumToString(), parameters: {"value": eventValue});
|
analytics.logEvent(name: event.enumToString(), parameters: {"value": eventValue});
|
||||||
|
MatomoTracker.instance.trackEvent(eventName: event.enumToString(), eventCategory: "", action: eventValue, eventValue: tracking.customerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,17 +70,7 @@ class _HomePageState extends State<AitrainerHome> with Logging, Trans {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
key: _scaffoldKey,
|
key: _scaffoldKey,
|
||||||
body: UpgradeAlert(
|
body: UpgradeAlert(
|
||||||
appcastConfig: cfg,
|
upgrader: Upgrader(appcastConfig: cfg, messages: MyLocalizedUpgraderMessages(context: context)),
|
||||||
dialogStyle: UpgradeDialogStyle.cupertino,
|
|
||||||
countryCode: AppLanguage().appLocal.languageCode,
|
|
||||||
showIgnore: false,
|
|
||||||
showLater: false,
|
|
||||||
showReleaseNotes: false,
|
|
||||||
debugLogging: true,
|
|
||||||
//debugAlwaysUpgrade: true,
|
|
||||||
//debugDisplayOnce: true,
|
|
||||||
//minAppVersion: Cache().packageInfo != null ? Cache().packageInfo!.version : "99.99.99",
|
|
||||||
messages: MyLocalizedUpgraderMessages(context: context),
|
|
||||||
child: BlocConsumer<SessionBloc, SessionState>(listener: (context, state) {
|
child: BlocConsumer<SessionBloc, SessionState>(listener: (context, state) {
|
||||||
if (state is SessionFailure) {
|
if (state is SessionFailure) {
|
||||||
showDialog(
|
showDialog(
|
||||||
@ -148,6 +138,8 @@ class MyLocalizedUpgraderMessages extends UpgraderMessages with Trans {
|
|||||||
return t('Want to update?');
|
return t('Want to update?');
|
||||||
case UpgraderMessage.title:
|
case UpgraderMessage.title:
|
||||||
return t('Update App?');
|
return t('Update App?');
|
||||||
|
case UpgraderMessage.releaseNotes:
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Messages that are not provided above can still use the default values.
|
// Messages that are not provided above can still use the default values.
|
||||||
|
290
pubspec.lock
290
pubspec.lock
@ -7,14 +7,21 @@ packages:
|
|||||||
name: _fe_analyzer_shared
|
name: _fe_analyzer_shared
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "31.0.0"
|
version: "47.0.0"
|
||||||
|
_flutterfire_internals:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: _flutterfire_internals
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.4"
|
||||||
analyzer:
|
analyzer:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: analyzer
|
name: analyzer
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.8.0"
|
version: "4.7.0"
|
||||||
animated_widgets:
|
animated_widgets:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -42,7 +49,7 @@ packages:
|
|||||||
name: async
|
name: async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.8.2"
|
version: "2.9.0"
|
||||||
badges:
|
badges:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -56,14 +63,14 @@ packages:
|
|||||||
name: bloc
|
name: bloc
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.0.3"
|
version: "8.1.0"
|
||||||
bloc_test:
|
bloc_test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: bloc_test
|
name: bloc_test
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "9.0.3"
|
version: "9.1.0"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -77,7 +84,7 @@ packages:
|
|||||||
name: build
|
name: build
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1"
|
version: "2.3.1"
|
||||||
build_config:
|
build_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -91,21 +98,21 @@ packages:
|
|||||||
name: build_daemon
|
name: build_daemon
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "3.1.0"
|
||||||
build_resolvers:
|
build_resolvers:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: build_resolvers
|
name: build_resolvers
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.6"
|
version: "2.0.10"
|
||||||
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.8"
|
version: "2.1.11"
|
||||||
build_runner_core:
|
build_runner_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -140,7 +147,7 @@ packages:
|
|||||||
name: characters
|
name: characters
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.1"
|
||||||
charcode:
|
charcode:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -169,34 +176,41 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.0"
|
version: "1.3.0"
|
||||||
cli_util:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: cli_util
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "0.3.5"
|
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.1"
|
||||||
|
cloud_firestore_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: cloud_firestore_platform_interface
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "5.8.1"
|
||||||
|
cloud_firestore_web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: cloud_firestore_web
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.1"
|
||||||
code_builder:
|
code_builder:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: code_builder
|
name: code_builder
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.0"
|
version: "4.3.0"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.15.0"
|
version: "1.16.0"
|
||||||
confetti:
|
confetti:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -259,56 +273,56 @@ packages:
|
|||||||
name: dart_style
|
name: dart_style
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1"
|
version: "2.2.4"
|
||||||
device_info_plus:
|
device_info_plus:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_info_plus
|
name: device_info_plus
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.2.2"
|
version: "4.1.3"
|
||||||
device_info_plus_linux:
|
device_info_plus_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_info_plus_linux
|
name: device_info_plus_linux
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "3.0.0"
|
||||||
device_info_plus_macos:
|
device_info_plus_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_info_plus_macos
|
name: device_info_plus_macos
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.2"
|
version: "3.0.0"
|
||||||
device_info_plus_platform_interface:
|
device_info_plus_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_info_plus_platform_interface
|
name: device_info_plus_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0+1"
|
version: "3.0.0"
|
||||||
device_info_plus_web:
|
device_info_plus_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_info_plus_web
|
name: device_info_plus_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "3.0.0"
|
||||||
device_info_plus_windows:
|
device_info_plus_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: device_info_plus_windows
|
name: device_info_plus_windows
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "4.1.0"
|
||||||
devicelocale:
|
devicelocale:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: devicelocale
|
name: devicelocale
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.0"
|
version: "0.5.5"
|
||||||
diff_match_patch:
|
diff_match_patch:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -322,14 +336,14 @@ packages:
|
|||||||
name: equatable
|
name: equatable
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.3"
|
version: "2.0.5"
|
||||||
extended_tabs:
|
extended_tabs:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: extended_tabs
|
name: extended_tabs
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.3.0"
|
version: "4.0.1"
|
||||||
ezanimation:
|
ezanimation:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -343,14 +357,14 @@ packages:
|
|||||||
name: fake_async
|
name: fake_async
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.3.1"
|
||||||
ffi:
|
ffi:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: ffi
|
name: ffi
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.2"
|
version: "2.0.1"
|
||||||
file:
|
file:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -364,133 +378,133 @@ packages:
|
|||||||
name: firebase_analytics
|
name: firebase_analytics
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "9.1.2"
|
version: "10.0.1"
|
||||||
firebase_analytics_platform_interface:
|
firebase_analytics_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_analytics_platform_interface
|
name: firebase_analytics_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.1"
|
version: "3.3.9"
|
||||||
firebase_analytics_web:
|
firebase_analytics_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_analytics_web
|
name: firebase_analytics_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.0+8"
|
version: "0.5.1"
|
||||||
firebase_auth:
|
firebase_auth:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_auth
|
name: firebase_auth
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.3.11"
|
version: "4.0.1"
|
||||||
firebase_auth_platform_interface:
|
firebase_auth_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_auth_platform_interface
|
name: firebase_auth_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.2.1"
|
version: "6.10.3"
|
||||||
firebase_auth_web:
|
firebase_auth_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_auth_web
|
name: firebase_auth_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.3.9"
|
version: "5.0.1"
|
||||||
firebase_core:
|
firebase_core:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_core
|
name: firebase_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.13.1"
|
version: "2.0.0"
|
||||||
firebase_core_platform_interface:
|
firebase_core_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_core_platform_interface
|
name: firebase_core_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.2.5"
|
version: "4.5.1"
|
||||||
firebase_core_web:
|
firebase_core_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_core_web
|
name: firebase_core_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.6.1"
|
version: "2.0.0"
|
||||||
firebase_dynamic_links:
|
firebase_dynamic_links:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_dynamic_links
|
name: firebase_dynamic_links
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.1.1"
|
version: "5.0.1"
|
||||||
firebase_dynamic_links_platform_interface:
|
firebase_dynamic_links_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_dynamic_links_platform_interface
|
name: firebase_dynamic_links_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.2+1"
|
version: "0.2.3+17"
|
||||||
firebase_in_app_messaging:
|
firebase_in_app_messaging:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_in_app_messaging
|
name: firebase_in_app_messaging
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.0+9"
|
version: "0.7.0+1"
|
||||||
firebase_in_app_messaging_platform_interface:
|
firebase_in_app_messaging_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_in_app_messaging_platform_interface
|
name: firebase_in_app_messaging_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+21"
|
||||||
firebase_messaging:
|
firebase_messaging:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_messaging
|
name: firebase_messaging
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "11.2.11"
|
version: "14.0.1"
|
||||||
firebase_messaging_platform_interface:
|
firebase_messaging_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_messaging_platform_interface
|
name: firebase_messaging_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.2.1"
|
version: "4.2.2"
|
||||||
firebase_messaging_web:
|
firebase_messaging_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_messaging_web
|
name: firebase_messaging_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.9"
|
version: "3.2.2"
|
||||||
firebase_remote_config:
|
firebase_remote_config:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_remote_config
|
name: firebase_remote_config
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.2"
|
version: "3.0.1"
|
||||||
firebase_remote_config_platform_interface:
|
firebase_remote_config_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_remote_config_platform_interface
|
name: firebase_remote_config_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.21"
|
||||||
firebase_remote_config_web:
|
firebase_remote_config_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: firebase_remote_config_web
|
name: firebase_remote_config_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.7"
|
version: "1.1.10"
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -498,13 +512,6 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
fl_chart:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: fl_chart
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "0.50.0"
|
|
||||||
flutter:
|
flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -523,28 +530,28 @@ packages:
|
|||||||
name: flutter_bloc
|
name: flutter_bloc
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "8.0.1"
|
version: "8.1.1"
|
||||||
flutter_facebook_auth:
|
flutter_facebook_auth:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_facebook_auth
|
name: flutter_facebook_auth
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "4.3.4"
|
version: "4.4.1+1"
|
||||||
flutter_facebook_auth_platform_interface:
|
flutter_facebook_auth_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: flutter_facebook_auth_platform_interface
|
name: flutter_facebook_auth_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.2.0"
|
||||||
flutter_facebook_auth_web:
|
flutter_facebook_auth_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: flutter_facebook_auth_web
|
name: flutter_facebook_auth_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.2"
|
version: "3.2.0"
|
||||||
flutter_fadein:
|
flutter_fadein:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -580,6 +587,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.6"
|
version: "1.0.6"
|
||||||
|
flutter_lints:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: flutter_lints
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1"
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -641,13 +655,6 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.2"
|
version: "1.1.2"
|
||||||
flutter_smartlook:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: flutter_smartlook
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "3.0.9"
|
|
||||||
flutter_svg:
|
flutter_svg:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -660,13 +667,6 @@ packages:
|
|||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
flutter_uxcam:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: flutter_uxcam
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "2.0.1"
|
|
||||||
flutter_web_plugins:
|
flutter_web_plugins:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description: flutter
|
description: flutter
|
||||||
@ -706,14 +706,28 @@ packages:
|
|||||||
name: google_sign_in
|
name: google_sign_in
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.2.4"
|
version: "5.4.2"
|
||||||
|
google_sign_in_android:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_android
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "6.1.1"
|
||||||
|
google_sign_in_ios:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: google_sign_in_ios
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "5.5.0"
|
||||||
google_sign_in_platform_interface:
|
google_sign_in_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: google_sign_in_platform_interface
|
name: google_sign_in_platform_interface
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.3.0"
|
||||||
google_sign_in_web:
|
google_sign_in_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -741,7 +755,7 @@ packages:
|
|||||||
name: http
|
name: http
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.13.4"
|
version: "0.13.5"
|
||||||
http_multi_server:
|
http_multi_server:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -790,7 +804,7 @@ packages:
|
|||||||
name: js
|
name: js
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.3"
|
version: "0.6.4"
|
||||||
json_annotation:
|
json_annotation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -812,6 +826,13 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.2"
|
version: "0.5.2"
|
||||||
|
lints:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: lints
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.0"
|
||||||
logging:
|
logging:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -832,21 +853,28 @@ packages:
|
|||||||
name: matcher
|
name: matcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.11"
|
version: "0.12.12"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.3"
|
version: "0.1.5"
|
||||||
|
matomo_tracker:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: matomo_tracker
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "1.5.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.7.0"
|
version: "1.8.0"
|
||||||
mime:
|
mime:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -860,7 +888,7 @@ packages:
|
|||||||
name: mockito
|
name: mockito
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.1.0"
|
version: "5.3.2"
|
||||||
mocktail:
|
mocktail:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -874,7 +902,7 @@ packages:
|
|||||||
name: modal_progress_hud_nsn
|
name: modal_progress_hud_nsn
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.0-nullsafety-1"
|
version: "0.3.0"
|
||||||
nested:
|
nested:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -923,14 +951,14 @@ packages:
|
|||||||
name: package_info_plus
|
name: package_info_plus
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "1.4.3+1"
|
||||||
package_info_plus_linux:
|
package_info_plus_linux:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: package_info_plus_linux
|
name: package_info_plus_linux
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.3"
|
version: "1.0.5"
|
||||||
package_info_plus_macos:
|
package_info_plus_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -951,21 +979,21 @@ packages:
|
|||||||
name: package_info_plus_web
|
name: package_info_plus_web
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "1.0.5"
|
||||||
package_info_plus_windows:
|
package_info_plus_windows:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: package_info_plus_windows
|
name: package_info_plus_windows
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "2.1.0"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.0"
|
version: "1.8.2"
|
||||||
path_drawing:
|
path_drawing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1007,7 +1035,7 @@ 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.1.5"
|
version: "2.1.7"
|
||||||
path_provider_macos:
|
path_provider_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1028,7 +1056,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.5"
|
version: "2.1.3"
|
||||||
percent_indicator:
|
percent_indicator:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1133,21 +1161,21 @@ packages:
|
|||||||
name: rxdart
|
name: rxdart
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.27.3"
|
version: "0.27.5"
|
||||||
sentry:
|
sentry:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sentry
|
name: sentry
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.4.0"
|
version: "6.13.0"
|
||||||
sentry_flutter:
|
sentry_flutter:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sentry_flutter
|
name: sentry_flutter
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.4.0"
|
version: "6.13.0"
|
||||||
share:
|
share:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1161,7 +1189,7 @@ packages:
|
|||||||
name: shared_preferences
|
name: shared_preferences
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.13"
|
version: "2.0.15"
|
||||||
shared_preferences_android:
|
shared_preferences_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1245,7 +1273,7 @@ packages:
|
|||||||
name: sign_in_with_apple
|
name: sign_in_with_apple
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.3.0"
|
version: "4.1.0"
|
||||||
sign_in_with_apple_platform_interface:
|
sign_in_with_apple_platform_interface:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1271,7 +1299,7 @@ packages:
|
|||||||
name: source_gen
|
name: source_gen
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.2.6"
|
||||||
source_map_stack_trace:
|
source_map_stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1292,21 +1320,21 @@ packages:
|
|||||||
name: source_span
|
name: source_span
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.1"
|
version: "1.9.0"
|
||||||
sqflite:
|
sqflite:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sqflite
|
name: sqflite
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.2"
|
version: "2.1.0+1"
|
||||||
sqflite_common:
|
sqflite_common:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: sqflite_common
|
name: sqflite_common
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.1"
|
version: "2.3.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1320,7 +1348,7 @@ packages:
|
|||||||
name: stop_watch_timer
|
name: stop_watch_timer
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.1"
|
version: "2.0.0"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1341,56 +1369,63 @@ packages:
|
|||||||
name: string_scanner
|
name: string_scanner
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.1"
|
||||||
|
sync_scroll_library:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: sync_scroll_library
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.1"
|
||||||
syncfusion_flutter_calendar:
|
syncfusion_flutter_calendar:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: syncfusion_flutter_calendar
|
name: syncfusion_flutter_calendar
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "20.1.47"
|
version: "20.3.50"
|
||||||
syncfusion_flutter_charts:
|
syncfusion_flutter_charts:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: syncfusion_flutter_charts
|
name: syncfusion_flutter_charts
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "20.1.47+1"
|
version: "20.3.50"
|
||||||
syncfusion_flutter_core:
|
syncfusion_flutter_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: syncfusion_flutter_core
|
name: syncfusion_flutter_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "20.1.47"
|
version: "20.3.50"
|
||||||
syncfusion_flutter_datagrid:
|
syncfusion_flutter_datagrid:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: syncfusion_flutter_datagrid
|
name: syncfusion_flutter_datagrid
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "20.1.47"
|
version: "20.3.50"
|
||||||
syncfusion_flutter_datepicker:
|
syncfusion_flutter_datepicker:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: syncfusion_flutter_datepicker
|
name: syncfusion_flutter_datepicker
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "20.1.47"
|
version: "20.3.50"
|
||||||
syncfusion_flutter_gauges:
|
syncfusion_flutter_gauges:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: syncfusion_flutter_gauges
|
name: syncfusion_flutter_gauges
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "20.1.47"
|
version: "20.3.50"
|
||||||
syncfusion_localizations:
|
syncfusion_localizations:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: syncfusion_localizations
|
name: syncfusion_localizations
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "20.1.47"
|
version: "20.3.50"
|
||||||
synchronized:
|
synchronized:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1404,28 +1439,28 @@ packages:
|
|||||||
name: term_glyph
|
name: term_glyph
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0"
|
version: "1.2.1"
|
||||||
test:
|
test:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: test
|
name: test
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.19.5"
|
version: "1.21.4"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.8"
|
version: "0.4.12"
|
||||||
test_core:
|
test_core:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_core
|
name: test_core
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.9"
|
version: "0.4.16"
|
||||||
timeline_tile:
|
timeline_tile:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@ -1439,7 +1474,7 @@ packages:
|
|||||||
name: timezone
|
name: timezone
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.8.0"
|
version: "0.9.0"
|
||||||
timing:
|
timing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1453,7 +1488,7 @@ packages:
|
|||||||
name: toggle_switch
|
name: toggle_switch
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "2.0.1"
|
||||||
tuple:
|
tuple:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1482,20 +1517,27 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.4"
|
version: "2.0.4"
|
||||||
|
universal_platform:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: universal_platform
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0+1"
|
||||||
upgrader:
|
upgrader:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: upgrader
|
name: upgrader
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.13.0"
|
version: "4.8.1"
|
||||||
url_launcher:
|
url_launcher:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: url_launcher
|
name: url_launcher
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.0.20"
|
version: "6.1.6"
|
||||||
url_launcher_android:
|
url_launcher_android:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1530,7 +1572,7 @@ packages:
|
|||||||
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.5"
|
version: "2.1.1"
|
||||||
url_launcher_web:
|
url_launcher_web:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1558,7 +1600,7 @@ packages:
|
|||||||
name: vector_math
|
name: vector_math
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.2"
|
||||||
version:
|
version:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1621,7 +1663,7 @@ packages:
|
|||||||
name: wakelock
|
name: wakelock
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.1+2"
|
version: "0.6.2"
|
||||||
wakelock_macos:
|
wakelock_macos:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1719,7 +1761,7 @@ packages:
|
|||||||
name: win32
|
name: win32
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.4.4"
|
version: "2.7.0"
|
||||||
xdg_directories:
|
xdg_directories:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -1742,5 +1784,5 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.0"
|
version: "3.1.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.16.0 <3.0.0"
|
dart: ">=2.18.0-0 <3.0.0"
|
||||||
flutter: ">=2.10.0"
|
flutter: ">=3.3.0-0"
|
||||||
|
141
pubspec.yaml
141
pubspec.yaml
@ -18,77 +18,92 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
|||||||
version: 1.1.26+107
|
version: 1.1.26+107
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.12.0 <3.0.0"
|
sdk: ">=2.12.0 <3.9.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
|
||||||
cupertino_icons: ^1.0.0
|
|
||||||
google_fonts: ^2.1.0
|
|
||||||
devicelocale: ^0.5.0
|
|
||||||
sentry_flutter: ^6.4.0
|
|
||||||
flutter_bloc: ^8.0.1
|
|
||||||
equatable: ^2.0.3
|
|
||||||
|
|
||||||
flutter_radar_chart: ^0.2.1
|
|
||||||
rainbow_color: ^2.0.1
|
|
||||||
percent_indicator: ^4.0.0
|
|
||||||
fl_chart: ^0.50.0
|
|
||||||
infinite_listview: ^1.1.0
|
|
||||||
toggle_switch: ^1.4.0
|
|
||||||
keyboard_actions: ^3.4.0
|
|
||||||
badges: ^2.0.1
|
|
||||||
stop_watch_timer: ^1.3.1
|
|
||||||
#location: ^3.2.4
|
|
||||||
modal_progress_hud_nsn: ^0.1.0-nullsafety-1
|
|
||||||
flutter_html: ^2.0.0
|
|
||||||
wakelock: ^0.6.1+2
|
|
||||||
timeline_tile: ^2.0.0
|
|
||||||
purchases_flutter: ^3.9.5
|
|
||||||
package_info: ^2.0.0
|
|
||||||
ezanimation: ^0.6.0
|
|
||||||
confetti: ^0.6.0
|
|
||||||
crypto: ^3.0.0
|
|
||||||
carousel_slider: ^4.0.0
|
|
||||||
convex_bottom_bar: ^3.0.0
|
|
||||||
flutter_app_badger: ^1.2.0
|
|
||||||
extended_tabs: ^2.2.0
|
|
||||||
upgrader: ^3.11.0
|
|
||||||
web_browser: ^0.5.0
|
|
||||||
flutter_fadein: ^2.0.0
|
|
||||||
mailto: ^2.0.0
|
|
||||||
url_launcher: ^6.0.9
|
|
||||||
|
|
||||||
firebase_core: ^1.10.5
|
|
||||||
firebase_analytics: ^9.1.2
|
|
||||||
firebase_messaging: ^11.2.11
|
|
||||||
firebase_auth: ^3.3.3
|
|
||||||
firebase_remote_config: ^2.0.2
|
|
||||||
firebase_dynamic_links: ^4.1.1
|
|
||||||
firebase_in_app_messaging: ^0.6.0+4
|
|
||||||
|
|
||||||
syncfusion_flutter_gauges: ^20.1.47
|
|
||||||
syncfusion_flutter_datagrid: ^20.1.47
|
|
||||||
syncfusion_flutter_charts: ^20.1.47
|
|
||||||
syncfusion_flutter_calendar: ^20.1.47
|
|
||||||
syncfusion_localizations: ^20.1.47
|
|
||||||
|
|
||||||
flutter_facebook_auth: ^4.3.4
|
|
||||||
google_sign_in: ^5.2.4
|
|
||||||
sign_in_with_apple: ^3.3.0
|
|
||||||
|
|
||||||
flutter_smartlook: ^3.0.9
|
|
||||||
#flurry_data: ^0.0.1
|
|
||||||
flutter_uxcam: ^2.0.1
|
|
||||||
|
|
||||||
animated_widgets: ^1.0.6
|
animated_widgets: ^1.0.6
|
||||||
flutter_fancy_tree_view: ^0.5.1+1
|
|
||||||
|
|
||||||
mockito: ^5.0.3
|
badges: ^2.0.1
|
||||||
sqflite: ^2.0.0+3
|
|
||||||
|
carousel_slider: ^4.0.0
|
||||||
|
confetti: ^0.6.0
|
||||||
|
convex_bottom_bar: ^3.0.0
|
||||||
|
crypto: ^3.0.0
|
||||||
|
cupertino_icons: ^1.0.0
|
||||||
|
|
||||||
|
equatable: ^2.0.5
|
||||||
|
extended_tabs: ^4.0.1
|
||||||
|
ezanimation: ^0.6.0
|
||||||
|
|
||||||
|
devicelocale: ^0.5.5
|
||||||
|
|
||||||
|
firebase_core: ^2.0.0
|
||||||
|
firebase_analytics: ^10.0.1
|
||||||
|
firebase_messaging: ^14.0.1
|
||||||
|
firebase_auth: ^4.0.1
|
||||||
|
firebase_remote_config: ^3.0.1
|
||||||
|
firebase_dynamic_links: ^5.0.1
|
||||||
|
firebase_in_app_messaging: ^0.7.0+1
|
||||||
|
|
||||||
|
flutter_app_badger: ^1.2.0
|
||||||
|
flutter_bloc: ^8.1.1
|
||||||
|
flutter_html: ^2.0.0
|
||||||
|
flutter_fancy_tree_view: ^0.5.1+1
|
||||||
|
flutter_facebook_auth: ^4.4.1+1
|
||||||
|
flutter_fadein: ^2.0.0
|
||||||
|
flutter_lints: ^2.0.1
|
||||||
|
flutter_radar_chart: ^0.2.1
|
||||||
flutter_secure_storage: ^5.0.2
|
flutter_secure_storage: ^5.0.2
|
||||||
|
#flutter_smartlook: ^4.0.1
|
||||||
|
|
||||||
|
google_fonts: ^2.1.0
|
||||||
|
google_sign_in: ^5.4.2
|
||||||
|
|
||||||
|
infinite_listview: ^1.1.0
|
||||||
|
|
||||||
|
keyboard_actions: ^3.4.0
|
||||||
|
|
||||||
|
mailto: ^2.0.0
|
||||||
|
matomo_tracker: ^1.5.0
|
||||||
|
mockito: ^5.3.2
|
||||||
|
modal_progress_hud_nsn: ^0.3.0
|
||||||
|
|
||||||
|
package_info: ^2.0.2
|
||||||
|
percent_indicator: ^4.0.0
|
||||||
|
purchases_flutter: ^3.9.5
|
||||||
|
|
||||||
|
rainbow_color: ^2.0.1
|
||||||
|
|
||||||
|
sentry_flutter: ^6.13.0
|
||||||
|
sign_in_with_apple: ^4.1.0
|
||||||
|
sqflite: ^2.1.0+1
|
||||||
|
stop_watch_timer: ^2.0.0
|
||||||
|
|
||||||
|
syncfusion_flutter_gauges: ^20.3.50
|
||||||
|
syncfusion_flutter_datagrid: ^20.3.50
|
||||||
|
syncfusion_flutter_charts: ^20.3.50
|
||||||
|
syncfusion_flutter_calendar: ^20.3.50
|
||||||
|
syncfusion_localizations: ^20.3.50
|
||||||
|
|
||||||
|
timeline_tile: ^2.0.0
|
||||||
|
toggle_switch: ^2.0.1
|
||||||
|
|
||||||
|
upgrader: ^4.8.1
|
||||||
|
url_launcher: ^6.0.9
|
||||||
|
|
||||||
|
wakelock: ^0.6.2
|
||||||
|
web_browser: ^0.5.0
|
||||||
|
|
||||||
|
|
||||||
|
#fl_chart: ^0.50.0
|
||||||
|
#location: ^3.2.4
|
||||||
|
#flurry_data: ^0.0.1
|
||||||
|
#flutter_uxcam: ^2.1.5
|
||||||
#social_share: ^2.1.1
|
#social_share: ^2.1.1
|
||||||
|
|
||||||
|
|
||||||
flutter_localizations:
|
flutter_localizations:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
@ -100,7 +115,7 @@ dev_dependencies:
|
|||||||
test: '>=1.0.0 <2.0.0'
|
test: '>=1.0.0 <2.0.0'
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
bloc_test: ^9.0.3
|
bloc_test: ^9.1.0
|
||||||
|
|
||||||
build_runner:
|
build_runner:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user