feat: add sentry
This commit is contained in:
@@ -27,10 +27,6 @@ if (keystorePropertiesFile.exists()) {
|
|||||||
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
|
||||||
}
|
}
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
// START: FlutterFire Configuration
|
|
||||||
apply plugin: 'com.google.gms.google-services'
|
|
||||||
apply plugin: 'com.google.firebase.crashlytics'
|
|
||||||
// END: FlutterFire Configuration
|
|
||||||
apply plugin: 'kotlin-android'
|
apply plugin: 'kotlin-android'
|
||||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
{
|
|
||||||
"project_info": {
|
|
||||||
"project_number": "372003342382",
|
|
||||||
"project_id": "hiddify-flutter",
|
|
||||||
"storage_bucket": "hiddify-flutter.appspot.com"
|
|
||||||
},
|
|
||||||
"client": [
|
|
||||||
{
|
|
||||||
"client_info": {
|
|
||||||
"mobilesdk_app_id": "1:372003342382:android:c33c6eb99da7ceb76fb7bf",
|
|
||||||
"android_client_info": {
|
|
||||||
"package_name": "app.hiddify.com"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "372003342382-hlkjtgug97q8melqpkvat5f9mi7nj3s8.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"api_key": [
|
|
||||||
{
|
|
||||||
"current_key": "AIzaSyDhiPAfkcUkQKcNXCUUcKL51K5UqRd7WXA"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"services": {
|
|
||||||
"appinvite_service": {
|
|
||||||
"other_platform_oauth_client": [
|
|
||||||
{
|
|
||||||
"client_id": "372003342382-hlkjtgug97q8melqpkvat5f9mi7nj3s8.apps.googleusercontent.com",
|
|
||||||
"client_type": 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"configuration_version": "1"
|
|
||||||
}
|
|
||||||
@@ -7,10 +7,6 @@ buildscript {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:7.3.0'
|
classpath 'com.android.tools.build:gradle:7.3.0'
|
||||||
// START: FlutterFire Configuration
|
|
||||||
classpath 'com.google.gms:google-services:4.3.10'
|
|
||||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
|
|
||||||
// END: FlutterFire Configuration
|
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,9 @@
|
|||||||
"sort": "Sort",
|
"sort": "Sort",
|
||||||
"sortBy": "Sort by"
|
"sortBy": "Sort by"
|
||||||
},
|
},
|
||||||
|
"intro": {
|
||||||
|
"start": "Start"
|
||||||
|
},
|
||||||
"home": {
|
"home": {
|
||||||
"pageTitle": "Home",
|
"pageTitle": "Home",
|
||||||
"emptyProfilesMsg": "Begin by adding a subscription profile",
|
"emptyProfilesMsg": "Begin by adding a subscription profile",
|
||||||
@@ -101,6 +104,7 @@
|
|||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"pageTitle": "Settings",
|
"pageTitle": "Settings",
|
||||||
|
"requiresRestartMsg": "for this to take effect restart the app",
|
||||||
"general": {
|
"general": {
|
||||||
"sectionTitle": "General",
|
"sectionTitle": "General",
|
||||||
"locale": "Language",
|
"locale": "Language",
|
||||||
@@ -110,6 +114,8 @@
|
|||||||
"dark": "Dark mode",
|
"dark": "Dark mode",
|
||||||
"light": "Light mode"
|
"light": "Light mode"
|
||||||
},
|
},
|
||||||
|
"enableAnalytics": "Enable Analytics",
|
||||||
|
"enableAnalyticsMsg": "Give permission to collect analytics and send crash reports to improve the app",
|
||||||
"trueBlack": "Pure Black",
|
"trueBlack": "Pure Black",
|
||||||
"autoStart": "Start on Boot",
|
"autoStart": "Start on Boot",
|
||||||
"silentStart": "Silent Start",
|
"silentStart": "Silent Start",
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
},
|
},
|
||||||
"sort": "مرتبسازی",
|
"sort": "مرتبسازی",
|
||||||
"sortBy": "مرتبسازی براساس"
|
"sortBy": "مرتبسازی براساس"
|
||||||
|
},
|
||||||
|
"intro": {
|
||||||
|
"start": "شروع"
|
||||||
},
|
},
|
||||||
"home": {
|
"home": {
|
||||||
"pageTitle": "خانه",
|
"pageTitle": "خانه",
|
||||||
@@ -101,6 +104,7 @@
|
|||||||
},
|
},
|
||||||
"settings": {
|
"settings": {
|
||||||
"pageTitle": "تنظیمات",
|
"pageTitle": "تنظیمات",
|
||||||
|
"requiresRestartMsg": "برای اعمال این تنظیم برنامه را بازنشانی کنید",
|
||||||
"general": {
|
"general": {
|
||||||
"sectionTitle": "اصلی",
|
"sectionTitle": "اصلی",
|
||||||
"locale": "زبان",
|
"locale": "زبان",
|
||||||
@@ -110,6 +114,8 @@
|
|||||||
"dark": "تم تیره",
|
"dark": "تم تیره",
|
||||||
"light": "تم روشن"
|
"light": "تم روشن"
|
||||||
},
|
},
|
||||||
|
"enableAnalytics": "فعالسازی آنالیتیکز",
|
||||||
|
"enableAnalyticsMsg": "ارائه دسترسی آنالیز و گزارش خطا برای بهبود عملکرد برنامه",
|
||||||
"trueBlack": "کاملا سیاه",
|
"trueBlack": "کاملا سیاه",
|
||||||
"autoStart": "اجرا با روشن شدن سیستم",
|
"autoStart": "اجرا با روشن شدن سیستم",
|
||||||
"silentStart": "اجرای ساکت",
|
"silentStart": "اجرای ساکت",
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>API_KEY</key>
|
|
||||||
<string>AIzaSyDs7pee9vjdKfUYFbJvHo8rDwqp36dkPRI</string>
|
|
||||||
<key>GCM_SENDER_ID</key>
|
|
||||||
<string>372003342382</string>
|
|
||||||
<key>PLIST_VERSION</key>
|
|
||||||
<string>1</string>
|
|
||||||
<key>BUNDLE_ID</key>
|
|
||||||
<string>com.hiddify.hiddify</string>
|
|
||||||
<key>PROJECT_ID</key>
|
|
||||||
<string>hiddify-flutter</string>
|
|
||||||
<key>STORAGE_BUCKET</key>
|
|
||||||
<string>hiddify-flutter.appspot.com</string>
|
|
||||||
<key>IS_ADS_ENABLED</key>
|
|
||||||
<false></false>
|
|
||||||
<key>IS_ANALYTICS_ENABLED</key>
|
|
||||||
<false></false>
|
|
||||||
<key>IS_APPINVITE_ENABLED</key>
|
|
||||||
<true></true>
|
|
||||||
<key>IS_GCM_ENABLED</key>
|
|
||||||
<true></true>
|
|
||||||
<key>IS_SIGNIN_ENABLED</key>
|
|
||||||
<true></true>
|
|
||||||
<key>GOOGLE_APP_ID</key>
|
|
||||||
<string>1:372003342382:ios:a579c1abfc54046a6fb7bf</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"file_generated_by": "FlutterFire CLI",
|
|
||||||
"purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
|
|
||||||
"GOOGLE_APP_ID": "1:372003342382:ios:a579c1abfc54046a6fb7bf",
|
|
||||||
"FIREBASE_PROJECT_ID": "hiddify-flutter",
|
|
||||||
"GCM_SENDER_ID": "372003342382"
|
|
||||||
}
|
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:firebase_core/firebase_core.dart';
|
|
||||||
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_native_splash/flutter_native_splash.dart';
|
import 'package:flutter_native_splash/flutter_native_splash.dart';
|
||||||
@@ -21,18 +19,17 @@ import 'package:hiddify/services/service_providers.dart';
|
|||||||
import 'package:hiddify/utils/utils.dart';
|
import 'package:hiddify/utils/utils.dart';
|
||||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
import 'package:loggy/loggy.dart';
|
import 'package:loggy/loggy.dart';
|
||||||
|
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||||
import 'package:shared_preferences/shared_preferences.dart';
|
import 'package:shared_preferences/shared_preferences.dart';
|
||||||
import 'package:window_manager/window_manager.dart';
|
import 'package:window_manager/window_manager.dart';
|
||||||
|
|
||||||
final _loggy = Loggy('bootstrap');
|
final _loggy = Loggy('bootstrap');
|
||||||
final _stopWatch = Stopwatch();
|
const _testCrashReport = false;
|
||||||
|
|
||||||
Future<void> lazyBootstrap(
|
Future<void> lazyBootstrap(
|
||||||
WidgetsBinding widgetsBinding,
|
WidgetsBinding widgetsBinding,
|
||||||
Environment env,
|
Environment env,
|
||||||
) async {
|
) async {
|
||||||
_stopWatch.start();
|
|
||||||
|
|
||||||
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
|
FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding);
|
||||||
if (PlatformUtils.isDesktop) await windowManager.ensureInitialized();
|
if (PlatformUtils.isDesktop) await windowManager.ensureInitialized();
|
||||||
|
|
||||||
@@ -45,11 +42,28 @@ Future<void> lazyBootstrap(
|
|||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
if (container.read(autoCrashReportProvider) && !kDebugMode) {
|
final enableAnalytics = container.read(enableAnalyticsProvider);
|
||||||
_loggy.debug("initializing crashlytics");
|
|
||||||
await initCrashlytics();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
await SentryFlutter.init(
|
||||||
|
(options) {
|
||||||
|
if ((enableAnalytics && !kDebugMode) || _testCrashReport) {
|
||||||
|
options.dsn = Environment.sentryDSN;
|
||||||
|
} else {
|
||||||
|
options.dsn = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
options.environment = env.toString();
|
||||||
|
options.debug = kDebugMode;
|
||||||
|
},
|
||||||
|
appRunner: () => _lazyBootstrap(widgetsBinding, container, env),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> _lazyBootstrap(
|
||||||
|
WidgetsBinding widgetsBinding,
|
||||||
|
ProviderContainer container,
|
||||||
|
Environment env,
|
||||||
|
) async {
|
||||||
final debug = container.read(debugModeNotifierProvider) || kDebugMode;
|
final debug = container.read(debugModeNotifierProvider) || kDebugMode;
|
||||||
|
|
||||||
final filesEditor = container.read(filesEditorServiceProvider);
|
final filesEditor = container.read(filesEditorServiceProvider);
|
||||||
@@ -59,7 +73,6 @@ Future<void> lazyBootstrap(
|
|||||||
_loggy.info(
|
_loggy.info(
|
||||||
"os: [${Platform.operatingSystem}](${Platform.operatingSystemVersion}), processor count [${Platform.numberOfProcessors}]",
|
"os: [${Platform.operatingSystem}](${Platform.operatingSystemVersion}), processor count [${Platform.numberOfProcessors}]",
|
||||||
);
|
);
|
||||||
_loggy.info("basic setup took [${_stopWatch.elapsedMilliseconds}]ms");
|
|
||||||
|
|
||||||
final silentStart = container.read(silentStartNotifierProvider);
|
final silentStart = container.read(silentStartNotifierProvider);
|
||||||
if (silentStart) {
|
if (silentStart) {
|
||||||
@@ -81,8 +94,6 @@ Future<void> lazyBootstrap(
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (!silentStart) FlutterNativeSplash.remove();
|
if (!silentStart) FlutterNativeSplash.remove();
|
||||||
_stopWatch.stop();
|
|
||||||
_loggy.info("bootstrapping took [${_stopWatch.elapsedMilliseconds}]ms");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void initLoggers(
|
void initLoggers(
|
||||||
@@ -102,18 +113,6 @@ void initLoggers(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> initCrashlytics() async {
|
|
||||||
switch (Platform.operatingSystem) {
|
|
||||||
case "android" || "ios" || "macos":
|
|
||||||
await Firebase.initializeApp();
|
|
||||||
FlutterError.onError =
|
|
||||||
FirebaseCrashlytics.instance.recordFlutterFatalError;
|
|
||||||
default:
|
|
||||||
_loggy.debug("platform is not supported for crashlytics");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> initAppServices(
|
Future<void> initAppServices(
|
||||||
Result Function<Result>(ProviderListenable<Result>) read,
|
Result Function<Result>(ProviderListenable<Result>) read,
|
||||||
) async {
|
) async {
|
||||||
|
|||||||
@@ -7,6 +7,23 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|||||||
|
|
||||||
part 'general_prefs.g.dart';
|
part 'general_prefs.g.dart';
|
||||||
|
|
||||||
|
@Riverpod(keepAlive: true)
|
||||||
|
class IntroCompleted extends _$IntroCompleted {
|
||||||
|
late final _pref = Pref(
|
||||||
|
ref.watch(sharedPreferencesProvider),
|
||||||
|
"intro_completed",
|
||||||
|
false,
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool build() => _pref.getValue();
|
||||||
|
|
||||||
|
Future<void> update(bool value) {
|
||||||
|
state = value;
|
||||||
|
return _pref.update(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Riverpod(keepAlive: true)
|
@Riverpod(keepAlive: true)
|
||||||
class SilentStartNotifier extends _$SilentStartNotifier {
|
class SilentStartNotifier extends _$SilentStartNotifier {
|
||||||
late final _pref =
|
late final _pref =
|
||||||
@@ -22,11 +39,11 @@ class SilentStartNotifier extends _$SilentStartNotifier {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Riverpod(keepAlive: true)
|
@Riverpod(keepAlive: true)
|
||||||
class AutoCrashReport extends _$AutoCrashReport {
|
class EnableAnalytics extends _$EnableAnalytics {
|
||||||
late final _pref = Pref(
|
late final _pref = Pref(
|
||||||
ref.watch(sharedPreferencesProvider),
|
ref.watch(sharedPreferencesProvider),
|
||||||
"auto_crash_report",
|
"enable_analytics",
|
||||||
false,
|
true,
|
||||||
);
|
);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import 'package:dartx/dartx.dart';
|
|||||||
enum Environment {
|
enum Environment {
|
||||||
prod,
|
prod,
|
||||||
dev;
|
dev;
|
||||||
|
|
||||||
|
static const sentryDSN = String.fromEnvironment("sentry_dsn");
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Release {
|
enum Release {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
export 'app_update_notifier.dart';
|
export 'app_update_notifier.dart';
|
||||||
export 'confirmation_dialogs.dart';
|
export 'confirmation_dialogs.dart';
|
||||||
export 'custom_app_bar.dart';
|
export 'custom_app_bar.dart';
|
||||||
|
export 'general_pref_tiles.dart';
|
||||||
export 'profile_tile.dart';
|
export 'profile_tile.dart';
|
||||||
export 'qr_code_scanner_screen.dart';
|
export 'qr_code_scanner_screen.dart';
|
||||||
|
|||||||
87
lib/features/common/general_pref_tiles.dart
Normal file
87
lib/features/common/general_pref_tiles.dart
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
|
||||||
|
import 'package:go_router/go_router.dart';
|
||||||
|
import 'package:hiddify/core/core_providers.dart';
|
||||||
|
import 'package:hiddify/core/prefs/prefs.dart';
|
||||||
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||||
|
|
||||||
|
class LocalePrefTile extends HookConsumerWidget {
|
||||||
|
const LocalePrefTile({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
|
final t = ref.watch(translationsProvider);
|
||||||
|
|
||||||
|
final locale = ref.watch(localeNotifierProvider);
|
||||||
|
|
||||||
|
return ListTile(
|
||||||
|
title: Text(t.settings.general.locale),
|
||||||
|
subtitle: Text(
|
||||||
|
LocaleNamesLocalizationsDelegate.nativeLocaleNames[locale.name] ??
|
||||||
|
locale.name,
|
||||||
|
),
|
||||||
|
leading: const Icon(Icons.language),
|
||||||
|
onTap: () async {
|
||||||
|
final selectedLocale = await showDialog<AppLocale>(
|
||||||
|
context: context,
|
||||||
|
builder: (context) {
|
||||||
|
return SimpleDialog(
|
||||||
|
title: Text(t.settings.general.locale),
|
||||||
|
children: AppLocale.values
|
||||||
|
.map(
|
||||||
|
(e) => RadioListTile(
|
||||||
|
title: Text(
|
||||||
|
LocaleNamesLocalizationsDelegate
|
||||||
|
.nativeLocaleNames[e.name] ??
|
||||||
|
e.name,
|
||||||
|
),
|
||||||
|
value: e,
|
||||||
|
groupValue: locale,
|
||||||
|
onChanged: (e) => context.pop(e),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.toList(),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
if (selectedLocale != null) {
|
||||||
|
await ref
|
||||||
|
.read(localeNotifierProvider.notifier)
|
||||||
|
.update(selectedLocale);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class EnableAnalyticsPrefTile extends HookConsumerWidget {
|
||||||
|
const EnableAnalyticsPrefTile({
|
||||||
|
super.key,
|
||||||
|
this.onChanged,
|
||||||
|
});
|
||||||
|
|
||||||
|
final ValueChanged<bool>? onChanged;
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
|
final t = ref.watch(translationsProvider);
|
||||||
|
|
||||||
|
final autoReport = ref.watch(enableAnalyticsProvider);
|
||||||
|
|
||||||
|
return SwitchListTile(
|
||||||
|
title: Text(t.settings.general.enableAnalytics),
|
||||||
|
subtitle: Text(
|
||||||
|
t.settings.general.enableAnalyticsMsg,
|
||||||
|
style: Theme.of(context).textTheme.bodySmall,
|
||||||
|
),
|
||||||
|
secondary: const Icon(Icons.bug_report),
|
||||||
|
value: autoReport,
|
||||||
|
onChanged: (value) async {
|
||||||
|
if (onChanged != null) {
|
||||||
|
return onChanged!(value);
|
||||||
|
}
|
||||||
|
return ref.read(enableAnalyticsProvider.notifier).update(value);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_localized_locales/flutter_localized_locales.dart';
|
|
||||||
import 'package:go_router/go_router.dart';
|
import 'package:go_router/go_router.dart';
|
||||||
import 'package:hiddify/core/core_providers.dart';
|
import 'package:hiddify/core/core_providers.dart';
|
||||||
import 'package:hiddify/core/prefs/prefs.dart';
|
import 'package:hiddify/core/prefs/prefs.dart';
|
||||||
|
import 'package:hiddify/features/common/common.dart';
|
||||||
import 'package:hiddify/features/settings/widgets/theme_mode_switch_button.dart';
|
import 'package:hiddify/features/settings/widgets/theme_mode_switch_button.dart';
|
||||||
import 'package:hiddify/services/auto_start_service.dart';
|
import 'package:hiddify/services/auto_start_service.dart';
|
||||||
import 'package:hiddify/utils/utils.dart';
|
import 'package:hiddify/utils/utils.dart';
|
||||||
@@ -15,47 +15,31 @@ class GeneralSettingTiles extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, WidgetRef ref) {
|
Widget build(BuildContext context, WidgetRef ref) {
|
||||||
final t = ref.watch(translationsProvider);
|
final t = ref.watch(translationsProvider);
|
||||||
|
|
||||||
final locale = ref.watch(localeNotifierProvider);
|
|
||||||
|
|
||||||
final theme = ref.watch(themeProvider);
|
final theme = ref.watch(themeProvider);
|
||||||
|
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
ListTile(
|
const LocalePrefTile(),
|
||||||
title: Text(t.settings.general.locale),
|
EnableAnalyticsPrefTile(
|
||||||
subtitle: Text(
|
onChanged: (value) async {
|
||||||
LocaleNamesLocalizationsDelegate.nativeLocaleNames[locale.name] ??
|
await showDialog<bool>(
|
||||||
locale.name,
|
|
||||||
),
|
|
||||||
leading: const Icon(Icons.language),
|
|
||||||
onTap: () async {
|
|
||||||
final selectedLocale = await showDialog<AppLocale>(
|
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return SimpleDialog(
|
return AlertDialog(
|
||||||
title: Text(t.settings.general.locale),
|
title: Text(t.settings.general.enableAnalytics),
|
||||||
children: AppLocale.values
|
content: Text(t.settings.requiresRestartMsg),
|
||||||
.map(
|
actions: [
|
||||||
(e) => RadioListTile(
|
TextButton(
|
||||||
title: Text(
|
onPressed: () => context.pop(true),
|
||||||
LocaleNamesLocalizationsDelegate
|
child: Text(
|
||||||
.nativeLocaleNames[e.name] ??
|
MaterialLocalizations.of(context).okButtonLabel,
|
||||||
e.name,
|
),
|
||||||
),
|
),
|
||||||
value: e,
|
],
|
||||||
groupValue: locale,
|
|
||||||
onChanged: (e) => context.pop(e),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
.toList(),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
if (selectedLocale != null) {
|
return ref.read(enableAnalyticsProvider.notifier).update(value);
|
||||||
await ref
|
|
||||||
.read(localeNotifierProvider.notifier)
|
|
||||||
.update(selectedLocale);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include "generated_plugin_registrant.h"
|
#include "generated_plugin_registrant.h"
|
||||||
|
|
||||||
#include <screen_retriever/screen_retriever_plugin.h>
|
#include <screen_retriever/screen_retriever_plugin.h>
|
||||||
|
#include <sentry_flutter/sentry_flutter_plugin.h>
|
||||||
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
|
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
|
||||||
#include <tray_manager/tray_manager_plugin.h>
|
#include <tray_manager/tray_manager_plugin.h>
|
||||||
#include <url_launcher_linux/url_launcher_plugin.h>
|
#include <url_launcher_linux/url_launcher_plugin.h>
|
||||||
@@ -16,6 +17,9 @@ void fl_register_plugins(FlPluginRegistry* registry) {
|
|||||||
g_autoptr(FlPluginRegistrar) screen_retriever_registrar =
|
g_autoptr(FlPluginRegistrar) screen_retriever_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverPlugin");
|
||||||
screen_retriever_plugin_register_with_registrar(screen_retriever_registrar);
|
screen_retriever_plugin_register_with_registrar(screen_retriever_registrar);
|
||||||
|
g_autoptr(FlPluginRegistrar) sentry_flutter_registrar =
|
||||||
|
fl_plugin_registry_get_registrar_for_plugin(registry, "SentryFlutterPlugin");
|
||||||
|
sentry_flutter_plugin_register_with_registrar(sentry_flutter_registrar);
|
||||||
g_autoptr(FlPluginRegistrar) sqlite3_flutter_libs_registrar =
|
g_autoptr(FlPluginRegistrar) sqlite3_flutter_libs_registrar =
|
||||||
fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin");
|
fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin");
|
||||||
sqlite3_flutter_libs_plugin_register_with_registrar(sqlite3_flutter_libs_registrar);
|
sqlite3_flutter_libs_plugin_register_with_registrar(sqlite3_flutter_libs_registrar);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
screen_retriever
|
screen_retriever
|
||||||
|
sentry_flutter
|
||||||
sqlite3_flutter_libs
|
sqlite3_flutter_libs
|
||||||
tray_manager
|
tray_manager
|
||||||
url_launcher_linux
|
url_launcher_linux
|
||||||
|
|||||||
@@ -5,14 +5,13 @@
|
|||||||
import FlutterMacOS
|
import FlutterMacOS
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
import firebase_core
|
|
||||||
import firebase_crashlytics
|
|
||||||
import flutter_local_notifications
|
import flutter_local_notifications
|
||||||
import mobile_scanner
|
import mobile_scanner
|
||||||
import package_info_plus
|
import package_info_plus
|
||||||
import path_provider_foundation
|
import path_provider_foundation
|
||||||
import protocol_handler
|
import protocol_handler
|
||||||
import screen_retriever
|
import screen_retriever
|
||||||
|
import sentry_flutter
|
||||||
import share_plus
|
import share_plus
|
||||||
import shared_preferences_foundation
|
import shared_preferences_foundation
|
||||||
import sqlite3_flutter_libs
|
import sqlite3_flutter_libs
|
||||||
@@ -21,14 +20,13 @@ import url_launcher_macos
|
|||||||
import window_manager
|
import window_manager
|
||||||
|
|
||||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
|
||||||
FLTFirebaseCrashlyticsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCrashlyticsPlugin"))
|
|
||||||
FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
|
FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
|
||||||
MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin"))
|
MobileScannerPlugin.register(with: registry.registrar(forPlugin: "MobileScannerPlugin"))
|
||||||
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
|
FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))
|
||||||
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
|
||||||
ProtocolHandlerPlugin.register(with: registry.registrar(forPlugin: "ProtocolHandlerPlugin"))
|
ProtocolHandlerPlugin.register(with: registry.registrar(forPlugin: "ProtocolHandlerPlugin"))
|
||||||
ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin"))
|
ScreenRetrieverPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverPlugin"))
|
||||||
|
SentryFlutterPlugin.register(with: registry.registrar(forPlugin: "SentryFlutterPlugin"))
|
||||||
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
|
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
|
||||||
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||||
Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin"))
|
Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin"))
|
||||||
|
|||||||
@@ -1,79 +1,25 @@
|
|||||||
PODS:
|
PODS:
|
||||||
- Firebase/CoreOnly (10.12.0):
|
|
||||||
- FirebaseCore (= 10.12.0)
|
|
||||||
- Firebase/Crashlytics (10.12.0):
|
|
||||||
- Firebase/CoreOnly
|
|
||||||
- FirebaseCrashlytics (~> 10.12.0)
|
|
||||||
- firebase_core (2.15.1):
|
|
||||||
- Firebase/CoreOnly (~> 10.12.0)
|
|
||||||
- FlutterMacOS
|
|
||||||
- firebase_crashlytics (3.3.5):
|
|
||||||
- Firebase/CoreOnly (~> 10.12.0)
|
|
||||||
- Firebase/Crashlytics (~> 10.12.0)
|
|
||||||
- firebase_core
|
|
||||||
- FlutterMacOS
|
|
||||||
- FirebaseCore (10.12.0):
|
|
||||||
- FirebaseCoreInternal (~> 10.0)
|
|
||||||
- GoogleUtilities/Environment (~> 7.8)
|
|
||||||
- GoogleUtilities/Logger (~> 7.8)
|
|
||||||
- FirebaseCoreExtension (10.15.0):
|
|
||||||
- FirebaseCore (~> 10.0)
|
|
||||||
- FirebaseCoreInternal (10.15.0):
|
|
||||||
- "GoogleUtilities/NSData+zlib (~> 7.8)"
|
|
||||||
- FirebaseCrashlytics (10.12.0):
|
|
||||||
- FirebaseCore (~> 10.5)
|
|
||||||
- FirebaseInstallations (~> 10.0)
|
|
||||||
- FirebaseSessions (~> 10.5)
|
|
||||||
- GoogleDataTransport (~> 9.2)
|
|
||||||
- GoogleUtilities/Environment (~> 7.8)
|
|
||||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
|
||||||
- PromisesObjC (~> 2.1)
|
|
||||||
- FirebaseInstallations (10.15.0):
|
|
||||||
- FirebaseCore (~> 10.0)
|
|
||||||
- GoogleUtilities/Environment (~> 7.8)
|
|
||||||
- GoogleUtilities/UserDefaults (~> 7.8)
|
|
||||||
- PromisesObjC (~> 2.1)
|
|
||||||
- FirebaseSessions (10.15.0):
|
|
||||||
- FirebaseCore (~> 10.5)
|
|
||||||
- FirebaseCoreExtension (~> 10.0)
|
|
||||||
- FirebaseInstallations (~> 10.0)
|
|
||||||
- GoogleDataTransport (~> 9.2)
|
|
||||||
- GoogleUtilities/Environment (~> 7.10)
|
|
||||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
|
||||||
- PromisesSwift (~> 2.1)
|
|
||||||
- flutter_local_notifications (0.0.1):
|
- flutter_local_notifications (0.0.1):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- FlutterMacOS (1.0.0)
|
- FlutterMacOS (1.0.0)
|
||||||
- GoogleDataTransport (9.2.5):
|
|
||||||
- GoogleUtilities/Environment (~> 7.7)
|
|
||||||
- nanopb (< 2.30910.0, >= 2.30908.0)
|
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
|
||||||
- GoogleUtilities/Environment (7.11.5):
|
|
||||||
- PromisesObjC (< 3.0, >= 1.2)
|
|
||||||
- GoogleUtilities/Logger (7.11.5):
|
|
||||||
- GoogleUtilities/Environment
|
|
||||||
- "GoogleUtilities/NSData+zlib (7.11.5)"
|
|
||||||
- GoogleUtilities/UserDefaults (7.11.5):
|
|
||||||
- GoogleUtilities/Logger
|
|
||||||
- mobile_scanner (3.0.0):
|
- mobile_scanner (3.0.0):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- nanopb (2.30909.0):
|
|
||||||
- nanopb/decode (= 2.30909.0)
|
|
||||||
- nanopb/encode (= 2.30909.0)
|
|
||||||
- nanopb/decode (2.30909.0)
|
|
||||||
- nanopb/encode (2.30909.0)
|
|
||||||
- package_info_plus (0.0.1):
|
- package_info_plus (0.0.1):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- path_provider_foundation (0.0.1):
|
- path_provider_foundation (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- PromisesObjC (2.3.1)
|
|
||||||
- PromisesSwift (2.3.1):
|
|
||||||
- PromisesObjC (= 2.3.1)
|
|
||||||
- protocol_handler (0.0.1):
|
- protocol_handler (0.0.1):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- screen_retriever (0.0.1):
|
- screen_retriever (0.0.1):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
|
- Sentry/HybridSDK (8.11.0):
|
||||||
|
- SentryPrivate (= 8.11.0)
|
||||||
|
- sentry_flutter (0.0.1):
|
||||||
|
- Flutter
|
||||||
|
- FlutterMacOS
|
||||||
|
- Sentry/HybridSDK (= 8.11.0)
|
||||||
|
- SentryPrivate (8.11.0)
|
||||||
- share_plus (0.0.1):
|
- share_plus (0.0.1):
|
||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
- shared_preferences_foundation (0.0.1):
|
- shared_preferences_foundation (0.0.1):
|
||||||
@@ -102,8 +48,6 @@ PODS:
|
|||||||
- FlutterMacOS
|
- FlutterMacOS
|
||||||
|
|
||||||
DEPENDENCIES:
|
DEPENDENCIES:
|
||||||
- firebase_core (from `Flutter/ephemeral/.symlinks/plugins/firebase_core/macos`)
|
|
||||||
- firebase_crashlytics (from `Flutter/ephemeral/.symlinks/plugins/firebase_crashlytics/macos`)
|
|
||||||
- flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos`)
|
- flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos`)
|
||||||
- FlutterMacOS (from `Flutter/ephemeral`)
|
- FlutterMacOS (from `Flutter/ephemeral`)
|
||||||
- mobile_scanner (from `Flutter/ephemeral/.symlinks/plugins/mobile_scanner/macos`)
|
- mobile_scanner (from `Flutter/ephemeral/.symlinks/plugins/mobile_scanner/macos`)
|
||||||
@@ -111,6 +55,7 @@ DEPENDENCIES:
|
|||||||
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
|
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
|
||||||
- protocol_handler (from `Flutter/ephemeral/.symlinks/plugins/protocol_handler/macos`)
|
- protocol_handler (from `Flutter/ephemeral/.symlinks/plugins/protocol_handler/macos`)
|
||||||
- screen_retriever (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos`)
|
- screen_retriever (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos`)
|
||||||
|
- sentry_flutter (from `Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos`)
|
||||||
- share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`)
|
- share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`)
|
||||||
- shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
|
- shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
|
||||||
- sqlite3_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/sqlite3_flutter_libs/macos`)
|
- sqlite3_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/sqlite3_flutter_libs/macos`)
|
||||||
@@ -120,25 +65,11 @@ DEPENDENCIES:
|
|||||||
|
|
||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
trunk:
|
trunk:
|
||||||
- Firebase
|
- Sentry
|
||||||
- FirebaseCore
|
- SentryPrivate
|
||||||
- FirebaseCoreExtension
|
|
||||||
- FirebaseCoreInternal
|
|
||||||
- FirebaseCrashlytics
|
|
||||||
- FirebaseInstallations
|
|
||||||
- FirebaseSessions
|
|
||||||
- GoogleDataTransport
|
|
||||||
- GoogleUtilities
|
|
||||||
- nanopb
|
|
||||||
- PromisesObjC
|
|
||||||
- PromisesSwift
|
|
||||||
- sqlite3
|
- sqlite3
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
firebase_core:
|
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/firebase_core/macos
|
|
||||||
firebase_crashlytics:
|
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/firebase_crashlytics/macos
|
|
||||||
flutter_local_notifications:
|
flutter_local_notifications:
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos
|
||||||
FlutterMacOS:
|
FlutterMacOS:
|
||||||
@@ -153,6 +84,8 @@ EXTERNAL SOURCES:
|
|||||||
:path: Flutter/ephemeral/.symlinks/plugins/protocol_handler/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/protocol_handler/macos
|
||||||
screen_retriever:
|
screen_retriever:
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos
|
||||||
|
sentry_flutter:
|
||||||
|
:path: Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos
|
||||||
share_plus:
|
share_plus:
|
||||||
:path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos
|
||||||
shared_preferences_foundation:
|
shared_preferences_foundation:
|
||||||
@@ -167,27 +100,16 @@ EXTERNAL SOURCES:
|
|||||||
:path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos
|
:path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
Firebase: 07150e75d142fb9399f6777fa56a187b17f833a0
|
|
||||||
firebase_core: 559d892df9267acc6b7254d46fb3041866777509
|
|
||||||
firebase_crashlytics: 5c146808f99644445d69c3dc2eb20324717edd00
|
|
||||||
FirebaseCore: f86a1394906b97ac445ae49c92552a9425831bed
|
|
||||||
FirebaseCoreExtension: d3f1ea3725fb41f56e8fbfb29eeaff54e7ffb8f6
|
|
||||||
FirebaseCoreInternal: 2f4bee5ed00301b5e56da0849268797a2dd31fb4
|
|
||||||
FirebaseCrashlytics: c4d111b7430c49744c74bcc6346ea00868661ac8
|
|
||||||
FirebaseInstallations: cae95cab0f965ce05b805189de1d4c70b11c76fb
|
|
||||||
FirebaseSessions: ee59a7811bef4c15f65ef6472f3210faa293f9c8
|
|
||||||
flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4
|
flutter_local_notifications: 3805ca215b2fb7f397d78b66db91f6a747af52e4
|
||||||
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
||||||
GoogleDataTransport: 54dee9d48d14580407f8f5fbf2f496e92437a2f2
|
|
||||||
GoogleUtilities: 13e2c67ede716b8741c7989e26893d151b2b2084
|
|
||||||
mobile_scanner: ed7618fb749adc6574563e053f3b8e5002c13994
|
mobile_scanner: ed7618fb749adc6574563e053f3b8e5002c13994
|
||||||
nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431
|
|
||||||
package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce
|
package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce
|
||||||
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
|
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
|
||||||
PromisesObjC: c50d2056b5253dadbd6c2bea79b0674bd5a52fa4
|
|
||||||
PromisesSwift: 28dca69a9c40779916ac2d6985a0192a5cb4a265
|
|
||||||
protocol_handler: 587e1caf6c0b92ce351ab14081968dae49cb8cc6
|
protocol_handler: 587e1caf6c0b92ce351ab14081968dae49cb8cc6
|
||||||
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
|
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
|
||||||
|
Sentry: 39d57e691e311bdb73bc1ab5bbebbd6bc890050d
|
||||||
|
sentry_flutter: b2feefdad5b0f06602347172bc7257e8e9da5562
|
||||||
|
SentryPrivate: 48712023cdfd523735c2edb6b06bedf26c4730a3
|
||||||
share_plus: 76dd39142738f7a68dd57b05093b5e8193f220f7
|
share_plus: 76dd39142738f7a68dd57b05093b5e8193f220f7
|
||||||
shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c
|
shared_preferences_foundation: e2dae3258e06f44cc55f49d42024fd8dd03c590c
|
||||||
sqlite3: 7afcf055d3700254769a4dcba56f27d26b5515c9
|
sqlite3: 7afcf055d3700254769a4dcba56f27d26b5515c9
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
||||||
<plist version="1.0">
|
|
||||||
<dict>
|
|
||||||
<key>API_KEY</key>
|
|
||||||
<string>AIzaSyDs7pee9vjdKfUYFbJvHo8rDwqp36dkPRI</string>
|
|
||||||
<key>GCM_SENDER_ID</key>
|
|
||||||
<string>372003342382</string>
|
|
||||||
<key>PLIST_VERSION</key>
|
|
||||||
<string>1</string>
|
|
||||||
<key>BUNDLE_ID</key>
|
|
||||||
<string>com.hiddify.hiddify.RunnerTests</string>
|
|
||||||
<key>PROJECT_ID</key>
|
|
||||||
<string>hiddify-flutter</string>
|
|
||||||
<key>STORAGE_BUCKET</key>
|
|
||||||
<string>hiddify-flutter.appspot.com</string>
|
|
||||||
<key>IS_ADS_ENABLED</key>
|
|
||||||
<false></false>
|
|
||||||
<key>IS_ANALYTICS_ENABLED</key>
|
|
||||||
<false></false>
|
|
||||||
<key>IS_APPINVITE_ENABLED</key>
|
|
||||||
<true></true>
|
|
||||||
<key>IS_GCM_ENABLED</key>
|
|
||||||
<true></true>
|
|
||||||
<key>IS_SIGNIN_ENABLED</key>
|
|
||||||
<true></true>
|
|
||||||
<key>GOOGLE_APP_ID</key>
|
|
||||||
<string>1:372003342382:ios:dd40035472392b346fb7bf</string>
|
|
||||||
</dict>
|
|
||||||
</plist>
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
{
|
|
||||||
"file_generated_by": "FlutterFire CLI",
|
|
||||||
"purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
|
|
||||||
"GOOGLE_APP_ID": "1:372003342382:ios:dd40035472392b346fb7bf",
|
|
||||||
"FIREBASE_PROJECT_ID": "hiddify-flutter",
|
|
||||||
"GCM_SENDER_ID": "372003342382"
|
|
||||||
}
|
|
||||||
64
pubspec.lock
64
pubspec.lock
@@ -9,14 +9,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "60.0.0"
|
version: "60.0.0"
|
||||||
_flutterfire_internals:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: _flutterfire_internals
|
|
||||||
sha256: "1a5e13736d59235ce0139621b4bbe29bc89839e202409081bc667eb3cd20674c"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "1.3.5"
|
|
||||||
accessibility_tools:
|
accessibility_tools:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -377,46 +369,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "6.1.4"
|
version: "6.1.4"
|
||||||
firebase_core:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: firebase_core
|
|
||||||
sha256: c78132175edda4bc532a71e01a32964e4b4fcf53de7853a422d96dac3725f389
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.15.1"
|
|
||||||
firebase_core_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: firebase_core_platform_interface
|
|
||||||
sha256: b63e3be6c96ef5c33bdec1aab23c91eb00696f6452f0519401d640938c94cba2
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "4.8.0"
|
|
||||||
firebase_core_web:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: firebase_core_web
|
|
||||||
sha256: "4cf4d2161530332ddc3c562f19823fb897ff37a9a774090d28df99f47370e973"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "2.7.0"
|
|
||||||
firebase_crashlytics:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: firebase_crashlytics
|
|
||||||
sha256: fd9e1a1cb7cce3f9dd2358d8363d235f25f056981e23a333db1e57eca693913f
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.3.5"
|
|
||||||
firebase_crashlytics_platform_interface:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: firebase_crashlytics_platform_interface
|
|
||||||
sha256: "0d19ef23cf7a917a357d2eb1807338ec536ec3232e729ebd769f5bb2aba9e085"
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "3.6.5"
|
|
||||||
fixnum:
|
fixnum:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -1093,6 +1045,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.9"
|
version: "0.1.9"
|
||||||
|
sentry:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: sentry
|
||||||
|
sha256: "830667eadc0398fea3a3424ed1b74568e2db603a42758d0922e2f2974ce55a60"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "7.10.1"
|
||||||
|
sentry_flutter:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: sentry_flutter
|
||||||
|
sha256: "6730f41b304c6fb0fa590dacccaf73ba11082fc64b274cfe8a79776f2b95309c"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "7.10.1"
|
||||||
share_plus:
|
share_plus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ dependencies:
|
|||||||
url_launcher: ^6.1.14
|
url_launcher: ^6.1.14
|
||||||
vclibs: ^0.1.0
|
vclibs: ^0.1.0
|
||||||
launch_at_startup: ^0.2.2
|
launch_at_startup: ^0.2.2
|
||||||
|
sentry_flutter: ^7.10.1
|
||||||
|
|
||||||
# utils
|
# utils
|
||||||
combine: ^0.5.6
|
combine: ^0.5.6
|
||||||
@@ -78,8 +79,6 @@ dependencies:
|
|||||||
sliver_tools: ^0.2.12
|
sliver_tools: ^0.2.12
|
||||||
flutter_adaptive_scaffold: ^0.1.7+1
|
flutter_adaptive_scaffold: ^0.1.7+1
|
||||||
humanizer: ^2.2.0
|
humanizer: ^2.2.0
|
||||||
firebase_crashlytics: ^3.3.5
|
|
||||||
firebase_core: ^2.15.1
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
|
|
||||||
#include "generated_plugin_registrant.h"
|
#include "generated_plugin_registrant.h"
|
||||||
|
|
||||||
#include <firebase_core/firebase_core_plugin_c_api.h>
|
|
||||||
#include <protocol_handler/protocol_handler_plugin.h>
|
#include <protocol_handler/protocol_handler_plugin.h>
|
||||||
#include <screen_retriever/screen_retriever_plugin.h>
|
#include <screen_retriever/screen_retriever_plugin.h>
|
||||||
|
#include <sentry_flutter/sentry_flutter_plugin.h>
|
||||||
#include <share_plus/share_plus_windows_plugin_c_api.h>
|
#include <share_plus/share_plus_windows_plugin_c_api.h>
|
||||||
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
|
#include <sqlite3_flutter_libs/sqlite3_flutter_libs_plugin.h>
|
||||||
#include <tray_manager/tray_manager_plugin.h>
|
#include <tray_manager/tray_manager_plugin.h>
|
||||||
@@ -17,12 +17,12 @@
|
|||||||
#include <window_manager/window_manager_plugin.h>
|
#include <window_manager/window_manager_plugin.h>
|
||||||
|
|
||||||
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
void RegisterPlugins(flutter::PluginRegistry* registry) {
|
||||||
FirebaseCorePluginCApiRegisterWithRegistrar(
|
|
||||||
registry->GetRegistrarForPlugin("FirebaseCorePluginCApi"));
|
|
||||||
ProtocolHandlerPluginRegisterWithRegistrar(
|
ProtocolHandlerPluginRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("ProtocolHandlerPlugin"));
|
registry->GetRegistrarForPlugin("ProtocolHandlerPlugin"));
|
||||||
ScreenRetrieverPluginRegisterWithRegistrar(
|
ScreenRetrieverPluginRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("ScreenRetrieverPlugin"));
|
registry->GetRegistrarForPlugin("ScreenRetrieverPlugin"));
|
||||||
|
SentryFlutterPluginRegisterWithRegistrar(
|
||||||
|
registry->GetRegistrarForPlugin("SentryFlutterPlugin"));
|
||||||
SharePlusWindowsPluginCApiRegisterWithRegistrar(
|
SharePlusWindowsPluginCApiRegisterWithRegistrar(
|
||||||
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
|
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
|
||||||
Sqlite3FlutterLibsPluginRegisterWithRegistrar(
|
Sqlite3FlutterLibsPluginRegisterWithRegistrar(
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
list(APPEND FLUTTER_PLUGIN_LIST
|
list(APPEND FLUTTER_PLUGIN_LIST
|
||||||
firebase_core
|
|
||||||
protocol_handler
|
protocol_handler
|
||||||
screen_retriever
|
screen_retriever
|
||||||
|
sentry_flutter
|
||||||
share_plus
|
share_plus
|
||||||
sqlite3_flutter_libs
|
sqlite3_flutter_libs
|
||||||
tray_manager
|
tray_manager
|
||||||
|
|||||||
Reference in New Issue
Block a user