Compare commits

...

33 Commits

Author SHA1 Message Date
e54f7908e3 Merge pull request 'Добавлено форматирование текста' (#9) from feature/training into develop
Reviewed-on: #9
2025-11-05 11:59:47 +00:00
84aefe0d35 feature(core):добавлен формат текста 2025-11-05 14:58:05 +03:00
6d04c0ada0 feature(core):save 2025-10-29 10:13:34 +03:00
e791f08eef feature(self): добавлен разлогин 2025-09-08 22:55:38 +03:00
bcfb9d42e8 Merge pull request 'Feature: Получение данных для тренировки, фоторедактор, изменение хранения изображений на локальный формат файлов а не байтов в бд' (#8) from feature/training into develop
Reviewed-on: #8
2025-09-08 22:46:19 +03:00
845a380fbf feature(training): отбражение данных для тренировки 2025-09-08 22:44:03 +03:00
90531e6e4e feature(image): Добавлен редактор фото 2025-09-08 21:47:51 +03:00
6cb9e82e61 feature(collection): Подсчет кол-ва карточек в коллекции 2025-09-08 21:13:16 +03:00
51c4ae4f02 bugfix(image): Перенос хранения картинок из бд в папку приложения 2025-09-08 20:55:17 +03:00
a376faf0ce bugfix(collections): Оптимизация редактирования и создания коллекции 2025-09-08 17:42:09 +03:00
cebc46bbb3 feature(collections): Роутинг на поиск 2025-09-08 16:43:43 +03:00
8b546214eb feature(collections): Заготовка под апи. Переключалка коллекций 2025-09-08 16:39:33 +03:00
0426d94d60 Merge pull request 'feature(training): Добавлен состояния загрузки, пустоты и наличие данных на экране тренировки' (#7) from feature/training into develop
Reviewed-on: https://git.dizoft.ru/Dimkov966/Remever/pulls/7
2025-06-17 22:27:49 +03:00
285c4ca3f2 feature(training): Добавлен состояния загрузки, пустоты и наличие данных на экране тренировки 2025-06-17 22:27:22 +03:00
b1da4507f1 Merge pull request 'Feature: Добавлена верстка экрана статистики' (#6) from feature/statistick into develop
Reviewed-on: https://git.dizoft.ru/Dimkov966/Remever/pulls/6
2025-06-17 21:06:55 +03:00
0842c479c7 fix(home): Оптимизация работы навигационного бара 2025-06-17 21:05:44 +03:00
e3d3bcfb68 feature(statistick): Основная верстка экрана статистики 2 2025-06-17 20:59:23 +03:00
1a0ecee501 feature(statistick): Основная верстка экрана статистики 2025-06-17 20:56:48 +03:00
49f1ee9529 Merge pull request 'Feature: Верстка экранов настроек' (#5) from feature/settings into develop
Reviewed-on: https://git.dizoft.ru/Dimkov966/Remever/pulls/5
2025-06-16 22:22:27 +03:00
5e65118ab4 feature(settings): Верстка экранов настроек 2025-06-16 22:21:23 +03:00
9c5e06884d Merge pull request 'fix(collection): правки по коллекциям' (#4) from feature/collection into develop
Reviewed-on: https://git.dizoft.ru/Dimkov966/Remever/pulls/4
2025-06-16 20:24:12 +03:00
3d31cd7737 fix(collection): правки по коллекциям 2025-06-16 20:22:56 +03:00
7609601cd0 Merge pull request 'Пачка экранов и логики' (#3) from feature/collection into develop
Reviewed-on: https://git.dizoft.ru/Dimkov966/Remever/pulls/3
2025-04-02 23:13:10 +03:00
9981f1ef0f Доработка действий с билетом 2025-04-02 23:10:47 +03:00
588c026f27 Доработка действий с билетом 2025-04-02 23:04:15 +03:00
0478ff6f47 Доработка деталки коллекции 2025-04-02 22:22:52 +03:00
49d21cc34b Добавлен вывод деталки коллекции 2025-04-02 22:17:16 +03:00
a3ef313e7c Доработка создания карточки в коллекции 2025-04-02 21:52:44 +03:00
17dff72655 Создание карточки в коллекции + экран поиска коллекции 2025-04-02 21:40:31 +03:00
fb7ff84087 Правки + иконка 2025-04-01 22:38:36 +03:00
b1aefa9f11 Добавлено логирование 2025-04-01 20:26:22 +03:00
edcc157dbb Merge pull request 'feature/collection' (#2) from feature/collection into develop
Reviewed-on: https://git.dizoft.ru/Dimkov966/Remever/pulls/2
2025-04-01 20:11:56 +03:00
5e8a8699ac Merge pull request 'Добавление коллекций' (#1) from feature/collection into develop
Reviewed-on: https://git.dizoft.ru/Dimkov966/Remever/pulls/1
2025-03-25 21:00:05 +03:00
170 changed files with 8517 additions and 1898 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -1,192 +0,0 @@
//
// Generated file. Do not edit.
// This file is generated from template in file `flutter_tools/lib/src/flutter_plugins.dart`.
//
// @dart = 3.7
import 'dart:io'; // flutter_ignore: dart_io_import.
import 'package:file_picker/file_picker.dart';
import 'package:path_provider_android/path_provider_android.dart';
import 'package:file_picker/file_picker.dart';
import 'package:path_provider_foundation/path_provider_foundation.dart';
import 'package:file_picker/file_picker.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:path_provider_linux/path_provider_linux.dart';
import 'package:share_plus/share_plus.dart';
import 'package:url_launcher_linux/url_launcher_linux.dart';
import 'package:file_picker/file_picker.dart';
import 'package:path_provider_foundation/path_provider_foundation.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter_secure_storage_windows/flutter_secure_storage_windows.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:path_provider_windows/path_provider_windows.dart';
import 'package:share_plus/share_plus.dart';
import 'package:url_launcher_windows/url_launcher_windows.dart';
@pragma('vm:entry-point')
class _PluginRegistrant {
@pragma('vm:entry-point')
static void register() {
if (Platform.isAndroid) {
try {
FilePickerIO.registerWith();
} catch (err) {
print(
'`file_picker` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
PathProviderAndroid.registerWith();
} catch (err) {
print(
'`path_provider_android` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
} else if (Platform.isIOS) {
try {
FilePickerIO.registerWith();
} catch (err) {
print(
'`file_picker` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
PathProviderFoundation.registerWith();
} catch (err) {
print(
'`path_provider_foundation` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
} else if (Platform.isLinux) {
try {
FilePickerLinux.registerWith();
} catch (err) {
print(
'`file_picker` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
PackageInfoPlusLinuxPlugin.registerWith();
} catch (err) {
print(
'`package_info_plus` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
PathProviderLinux.registerWith();
} catch (err) {
print(
'`path_provider_linux` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
SharePlusLinuxPlugin.registerWith();
} catch (err) {
print(
'`share_plus` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
UrlLauncherLinux.registerWith();
} catch (err) {
print(
'`url_launcher_linux` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
} else if (Platform.isMacOS) {
try {
FilePickerMacOS.registerWith();
} catch (err) {
print(
'`file_picker` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
PathProviderFoundation.registerWith();
} catch (err) {
print(
'`path_provider_foundation` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
} else if (Platform.isWindows) {
try {
FilePickerWindows.registerWith();
} catch (err) {
print(
'`file_picker` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
FlutterSecureStorageWindows.registerWith();
} catch (err) {
print(
'`flutter_secure_storage_windows` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
PackageInfoPlusWindowsPlugin.registerWith();
} catch (err) {
print(
'`package_info_plus` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
PathProviderWindows.registerWith();
} catch (err) {
print(
'`path_provider_windows` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
SharePlusWindowsPlugin.registerWith();
} catch (err) {
print(
'`share_plus` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
try {
UrlLauncherWindows.registerWith();
} catch (err) {
print(
'`url_launcher_windows` threw an error: $err. '
'The app may not function as expected until you remove this plugin from pubspec.yaml'
);
}
}
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
/Users/vitalijnecitajlo/work/my/new\ remover/.dart_tool/flutter_build/f8aeafefd67128b8dbf5f95a00355084/dart_build_result.json:

View File

@@ -1 +0,0 @@
{"inputs":["/Users/vitalijnecitajlo/fvm/versions/3.29.0/packages/flutter_tools/lib/src/build_system/targets/native_assets.dart","/Users/vitalijnecitajlo/work/my/new remover/.dart_tool/package_config_subset"],"outputs":["/Users/vitalijnecitajlo/work/my/new remover/.dart_tool/flutter_build/f8aeafefd67128b8dbf5f95a00355084/dart_build_result.json","/Users/vitalijnecitajlo/work/my/new remover/.dart_tool/flutter_build/f8aeafefd67128b8dbf5f95a00355084/dart_build_result.json"]}

View File

@@ -1 +0,0 @@
{"dependencies":[],"code_assets":[]}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"inputs":["/Users/vitalijnecitajlo/work/my/new remover/.dart_tool/package_config_subset"],"outputs":["/Users/vitalijnecitajlo/work/my/new remover/.dart_tool/flutter_build/dart_plugin_registrant.dart"]}

View File

@@ -1 +0,0 @@
{"inputs":[],"outputs":[]}

View File

@@ -1 +0,0 @@
/Users/vitalijnecitajlo/work/my/new\ remover/.dart_tool/flutter_build/f8aeafefd67128b8dbf5f95a00355084/native_assets.json:

View File

@@ -1 +0,0 @@
{"inputs":["/Users/vitalijnecitajlo/fvm/versions/3.29.0/packages/flutter_tools/lib/src/build_system/targets/native_assets.dart","/Users/vitalijnecitajlo/work/my/new remover/.dart_tool/package_config_subset"],"outputs":["/Users/vitalijnecitajlo/work/my/new remover/.dart_tool/flutter_build/f8aeafefd67128b8dbf5f95a00355084/native_assets.json","/Users/vitalijnecitajlo/work/my/new remover/.dart_tool/flutter_build/f8aeafefd67128b8dbf5f95a00355084/native_assets.json"]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"format-version":[1,0,0],"native-assets":{}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -6,22 +6,26 @@ analyzer
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/analyzer-7.3.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/analyzer-7.3.0/lib/
ansicolor
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/ansicolor-2.0.3/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/ansicolor-2.0.3/lib/
archive
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/archive-4.0.4/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/archive-4.0.4/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/archive-4.0.5/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/archive-4.0.5/lib/
args
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/args-2.6.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/args-2.6.0/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/args-2.7.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/args-2.7.0/lib/
async
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/async-2.12.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/async-2.12.0/lib/
auto_route
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/auto_route-10.0.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/auto_route-10.0.0/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/auto_route-10.0.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/auto_route-10.0.1/lib/
auto_route_generator
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/auto_route_generator-10.0.1/
@@ -68,8 +72,8 @@ file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/built_collection-5.1.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/built_collection-5.1.1/lib/
built_value
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/built_value-8.9.4/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/built_value-8.9.4/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/built_value-8.9.5/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/built_value-8.9.5/lib/
characters
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/characters-1.4.0/
@@ -126,10 +130,6 @@ cupertino_icons
3.1
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.8/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.8/lib/
curl_logger_dio_interceptor
2.12
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/curl_logger_dio_interceptor-1.0.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/curl_logger_dio_interceptor-1.0.0/lib/
dart_style
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/dart_style-3.0.1/
@@ -156,16 +156,16 @@ file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/dio_web_adapter-2.1.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/dio_web_adapter-2.1.1/lib/
drift
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift-2.25.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift-2.25.1/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift-2.26.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift-2.26.0/lib/
drift_db_viewer
2.13
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift_db_viewer-2.1.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift_db_viewer-2.1.0/lib/
drift_dev
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift_dev-2.25.2/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift_dev-2.25.2/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift_dev-2.26.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/drift_dev-2.26.0/lib/
event_bus
2.12
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/event_bus-2.0.1/
@@ -184,8 +184,8 @@ file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file-7.0.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file-7.0.1/lib/
file_picker
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-9.2.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-9.2.1/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/lib/
fixnum
3.1
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/fixnum-1.1.1/
@@ -210,6 +210,10 @@ flutter_keyboard_size
2.18
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_keyboard_size-1.0.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_keyboard_size-1.0.1/lib/
flutter_launcher_icons
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_launcher_icons-0.14.3/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_launcher_icons-0.14.3/lib/
flutter_lints
3.5
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_lints-5.0.0/
@@ -294,6 +298,10 @@ graphs
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/graphs-2.3.2/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/graphs-2.3.2/lib/
group_button
2.12
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/group_button-5.3.4/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/group_button-5.3.4/lib/
hashcodes
2.12
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/hashcodes-2.0.0/
@@ -322,6 +330,22 @@ http_parser
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/http_parser-4.1.2/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/http_parser-4.1.2/lib/
image
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image-4.5.4/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image-4.5.4/lib/
image_cropper
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image_cropper-9.1.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image_cropper-9.1.0/lib/
image_cropper_for_web
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image_cropper_for_web-6.1.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image_cropper_for_web-6.1.0/lib/
image_cropper_platform_interface
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image_cropper_platform_interface-7.1.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image_cropper_platform_interface-7.1.0/lib/
image_size_getter
2.12
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image_size_getter-2.4.0/
@@ -412,8 +436,8 @@ file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/node_preamble-2.0.2/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/node_preamble-2.0.2/lib/
package_config
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_config-2.1.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_config-2.1.1/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_config-2.2.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_config-2.2.0/lib/
package_info_plus
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/
@@ -435,9 +459,9 @@ path_provider
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider-2.1.5/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider-2.1.5/lib/
path_provider_android
3.5
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_android-2.2.15/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_android-2.2.15/lib/
3.6
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_android-2.2.16/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_android-2.2.16/lib/
path_provider_foundation
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/
@@ -478,34 +502,22 @@ posix
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/posix-6.0.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/posix-6.0.1/lib/
pretty_dio_logger
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/pretty_dio_logger-1.4.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/pretty_dio_logger-1.4.0/lib/
provider
2.12
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/provider-6.1.2/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/provider-6.1.2/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/provider-6.1.4/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/provider-6.1.4/lib/
pub_semver
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/pub_semver-2.1.5/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/pub_semver-2.1.5/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/pub_semver-2.2.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/pub_semver-2.2.0/lib/
pubspec_parse
3.6
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/pubspec_parse-1.5.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/pubspec_parse-1.5.0/lib/
readmore
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/readmore-3.0.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/readmore-3.0.0/lib/
recase
2.12
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/recase-4.1.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/recase-4.1.0/lib/
settings_ui
2.12
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/settings_ui-2.0.2/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/settings_ui-2.0.2/lib/
share_plus
3.4
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/
@@ -532,16 +544,16 @@ file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/shelf_web_socket-3.0.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/shelf_web_socket-3.0.0/lib/
slang
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang-4.5.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang-4.5.0/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang-4.6.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang-4.6.0/lib/
slang_build_runner
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang_build_runner-4.5.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang_build_runner-4.5.0/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang_build_runner-4.6.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang_build_runner-4.6.0/lib/
slang_flutter
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang_flutter-4.5.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang_flutter-4.5.0/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang_flutter-4.6.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/slang_flutter-4.6.0/lib/
source_gen
3.6
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/source_gen-2.0.0/
@@ -568,12 +580,12 @@ file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sprintf-7.0.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sprintf-7.0.0/lib/
sqlite3
3.5
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3-2.7.4/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3-2.7.4/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3-2.7.5/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3-2.7.5/lib/
sqlite3_flutter_libs
2.12
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.31/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.31/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/lib/
sqlparser
3.0
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlparser-0.41.0/
@@ -594,6 +606,26 @@ string_scanner
3.1
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/string_scanner-1.4.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/string_scanner-1.4.1/lib/
talker
2.17
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker-4.7.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker-4.7.1/lib/
talker_bloc_logger
2.15
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker_bloc_logger-4.7.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker_bloc_logger-4.7.1/lib/
talker_dio_logger
2.15
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker_dio_logger-4.7.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker_dio_logger-4.7.1/lib/
talker_flutter
3.6
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker_flutter-4.7.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker_flutter-4.7.1/lib/
talker_logger
2.15
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker_logger-4.7.1/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/talker_logger-4.7.1/lib/
term_glyph
3.1
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/term_glyph-1.2.2/
@@ -684,8 +716,8 @@ file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/webkit_inspection_proto
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/webkit_inspection_protocol-1.2.1/lib/
win32
3.7
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/win32-5.11.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/win32-5.11.0/lib/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/win32-5.12.0/
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/win32-5.12.0/lib/
xdg_directories
3.3
file:///Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/xdg_directories-1.1.0/

View File

@@ -1,5 +1,5 @@
# This is a generated file; do not edit or check into version control.
file_picker=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-9.2.1/
file_picker=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/file_picker-10.0.0/
flutter_displaymode=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_displaymode-0.6.0/
flutter_plugin_android_lifecycle=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_plugin_android_lifecycle-2.0.27/
flutter_secure_storage=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage-9.2.4/
@@ -8,14 +8,16 @@ flutter_secure_storage_macos=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/f
flutter_secure_storage_web=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.2.1/
flutter_secure_storage_windows=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-3.1.2/
fluttertoast=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/fluttertoast-8.2.12/
image_cropper=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image_cropper-9.1.0/
image_cropper_for_web=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/image_cropper_for_web-6.1.0/
package_info_plus=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/package_info_plus-8.3.0/
path_provider=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider-2.1.5/
path_provider_android=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_android-2.2.15/
path_provider_android=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_android-2.2.16/
path_provider_foundation=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_foundation-2.4.1/
path_provider_linux=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_linux-2.2.1/
path_provider_windows=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/path_provider_windows-2.3.0/
share_plus=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/share_plus-10.1.4/
sqlite3_flutter_libs=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.31/
sqlite3_flutter_libs=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/sqlite3_flutter_libs-0.5.32/
url_launcher_linux=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/url_launcher_linux-3.2.1/
url_launcher_web=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/url_launcher_web-2.4.0/
url_launcher_windows=/Users/vitalijnecitajlo/.pub-cache/hosted/pub.dev/url_launcher_windows-3.1.4/

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
PROJECT_NAME=JY
PROJECT_NAME=remever
.PHONY: clean
@@ -8,10 +8,6 @@ clean:
codegen: clean
fvm flutter pub run build_runner build --delete-conflicting-outputs
watchgen: clean
fvm flutter pub run build_runner watch --delete-conflicting-outputs
iosPod:
cd ios && rm -rf Podfile.lock Pods Runner.xcworkspace && fvm flutter clean && fvm flutter pub get && pod install
@@ -31,8 +27,8 @@ macosPodUpdate:
cd macos && pod install --repo-update
androidBuild: clean
fvm flutter build apk --split-per-abi
mv `pwd`/build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk /tmp/$(PROJECT_NAME)-$(env)-$(ver).apk
fvm flutter build apk
mv `pwd`/build/app/outputs/flutter-apk/app-release.apk /tmp/$(PROJECT_NAME)-$(env)-$(ver).apk
echo /tmp/$(PROJECT_NAME)-$(env)-$(ver).apk
open /tmp

View File

@@ -6,8 +6,8 @@ plugins {
}
android {
namespace = "ru.remever.mobile.remever"
compileSdk = flutter.compileSdkVersion
namespace = "ru.remever.mobile"
compileSdk = 36
ndkVersion = "27.0.12077973"
compileOptions {
@@ -21,11 +21,11 @@ android {
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "ru.remever.mobile.remever"
applicationId = "ru.remever.mobile"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
minSdk = 21
targetSdk = 36
versionCode = flutter.versionCode
versionName = flutter.versionName
}

View File

@@ -1,8 +1,11 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:label="remever"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
android:icon="@mipmap/launcher_icon">
<activity
android:name=".MainActivity"
android:exported="true"
@@ -20,6 +23,7 @@
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
@@ -30,6 +34,15 @@
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<meta-data
android:name="io.flutter.embedding.android.EnableImpeller"
android:value="false" />
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Ucrop.CropTheme" />
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and

View File

@@ -1,4 +1,4 @@
package ru.remever.mobile.remever
package ru.remever.mobile
import io.flutter.embedding.android.FlutterActivity

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground>
<inset
android:drawable="@drawable/ic_launcher_foreground"
android:inset="16%" />
</foreground>
<monochrome>
<inset
android:drawable="@drawable/ic_launcher_monochrome"
android:inset="16%" />
</monochrome>
</adaptive-icon>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Ucrop.CropTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
</style>
</resources>

View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#ffffff</color>
</resources>

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode
setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
@@ -15,4 +16,8 @@
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>
<style name="Ucrop.CropTheme" parent="Theme.AppCompat.Light.NoActionBar" /> <!--add
this line-->
</resources>

BIN
assets/.DS_Store vendored

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 954 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

BIN
assets/icons/stats_best.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
assets/icons/stats_card.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
assets/icons/stats_down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 B

BIN
assets/icons/stats_time.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
assets/icons/stats_up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

BIN
assets/images/app_icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

138
ios/Podfile.lock Normal file
View File

@@ -0,0 +1,138 @@
PODS:
- DKImagePickerController/Core (4.3.9):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.3.9)
- DKImagePickerController/PhotoGallery (4.3.9):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.3.9)
- DKPhotoGallery (0.0.19):
- DKPhotoGallery/Core (= 0.0.19)
- DKPhotoGallery/Model (= 0.0.19)
- DKPhotoGallery/Preview (= 0.0.19)
- DKPhotoGallery/Resource (= 0.0.19)
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Core (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Model (0.0.19):
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Preview (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Resource (0.0.19):
- SDWebImage
- SwiftyGif
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- Flutter (1.0.0)
- flutter_secure_storage (6.0.0):
- Flutter
- fluttertoast (0.0.2):
- Flutter
- image_cropper (0.0.4):
- Flutter
- TOCropViewController (~> 2.7.4)
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- SDWebImage (5.21.3):
- SDWebImage/Core (= 5.21.3)
- SDWebImage/Core (5.21.3)
- share_plus (0.0.1):
- Flutter
- sqlite3 (3.49.2):
- sqlite3/common (= 3.49.2)
- sqlite3/common (3.49.2)
- sqlite3/dbstatvtab (3.49.2):
- sqlite3/common
- sqlite3/fts5 (3.49.2):
- sqlite3/common
- sqlite3/math (3.49.2):
- sqlite3/common
- sqlite3/perf-threadsafe (3.49.2):
- sqlite3/common
- sqlite3/rtree (3.49.2):
- sqlite3/common
- sqlite3_flutter_libs (0.0.1):
- Flutter
- FlutterMacOS
- sqlite3 (~> 3.49.1)
- sqlite3/dbstatvtab
- sqlite3/fts5
- sqlite3/math
- sqlite3/perf-threadsafe
- sqlite3/rtree
- SwiftyGif (5.4.5)
- TOCropViewController (2.7.4)
DEPENDENCIES:
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- image_cropper (from `.symlinks/plugins/image_cropper/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/darwin`)
SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- SDWebImage
- sqlite3
- SwiftyGif
- TOCropViewController
EXTERNAL SOURCES:
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
:path: Flutter
flutter_secure_storage:
:path: ".symlinks/plugins/flutter_secure_storage/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
image_cropper:
:path: ".symlinks/plugins/image_cropper/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
share_plus:
:path: ".symlinks/plugins/share_plus/ios"
sqlite3_flutter_libs:
:path: ".symlinks/plugins/sqlite3_flutter_libs/darwin"
SPEC CHECKSUMS:
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
image_cropper: c4326ea50132b1e1564499e5d32a84f01fb03537
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
SDWebImage: 16309af6d214ba3f77a7c6f6fdda888cb313a50a
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
sqlite3: 3c950dc86011117c307eb0b28c4a7bb449dce9f1
sqlite3_flutter_libs: f6acaa2172e6bb3e2e70c771661905080e8ebcf2
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
PODFILE CHECKSUM: 4305caec6b40dde0ae97be1573c53de1882a07e5
COCOAPODS: 1.16.2

View File

@@ -10,7 +10,9 @@
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
56D0DA369935817C9FD61D64 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20EA46D90FEDEE106AB74AE3 /* Pods_RunnerTests.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
869B506EF2E45BAB39615F26 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B39F7BDABEAD0ED3D2BCBF8A /* Pods_Runner.framework */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
@@ -42,12 +44,18 @@
/* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
20EA46D90FEDEE106AB74AE3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
274309643C09AEB895F5B282 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
3DD5DA132CCC13F9168EA46C /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
4D9F7D7DAC8938D01FCC4D51 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
8430F8544E2F6590CF5BD216 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
923EC9622249E9CDBDFE9D06 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -55,19 +63,39 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
B39F7BDABEAD0ED3D2BCBF8A /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
B5951109D53267981AE8A56D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
627E60B7283AB62A12CFF618 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
56D0DA369935817C9FD61D64 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
97C146EB1CF9000F007C117D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
869B506EF2E45BAB39615F26 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
27B1E70DD21F0A27FF242714 /* Frameworks */ = {
isa = PBXGroup;
children = (
B39F7BDABEAD0ED3D2BCBF8A /* Pods_Runner.framework */,
20EA46D90FEDEE106AB74AE3 /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
@@ -94,6 +122,8 @@
97C146F01CF9000F007C117D /* Runner */,
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
E9812416A7ACA68201AEE0BB /* Pods */,
27B1E70DD21F0A27FF242714 /* Frameworks */,
);
sourceTree = "<group>";
};
@@ -121,6 +151,20 @@
path = Runner;
sourceTree = "<group>";
};
E9812416A7ACA68201AEE0BB /* Pods */ = {
isa = PBXGroup;
children = (
B5951109D53267981AE8A56D /* Pods-Runner.debug.xcconfig */,
4D9F7D7DAC8938D01FCC4D51 /* Pods-Runner.release.xcconfig */,
8430F8544E2F6590CF5BD216 /* Pods-Runner.profile.xcconfig */,
923EC9622249E9CDBDFE9D06 /* Pods-RunnerTests.debug.xcconfig */,
274309643C09AEB895F5B282 /* Pods-RunnerTests.release.xcconfig */,
3DD5DA132CCC13F9168EA46C /* Pods-RunnerTests.profile.xcconfig */,
);
name = Pods;
path = Pods;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -128,8 +172,10 @@
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
B6EC4F9E6BB4749CD063C598 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
627E60B7283AB62A12CFF618 /* Frameworks */,
);
buildRules = (
);
@@ -145,12 +191,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
7961A0D505DA31A674AC7FD6 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
FD477B45F6C2D4CD5E5F5D4C /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -238,6 +286,28 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
7961A0D505DA31A674AC7FD6 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -253,6 +323,45 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
B6EC4F9E6BB4749CD063C598 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
FD477B45F6C2D4CD5E5F5D4C /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -369,7 +478,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile.remever;
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@@ -379,13 +488,14 @@
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 923EC9622249E9CDBDFE9D06 /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile.remever.RunnerTests;
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -396,13 +506,14 @@
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 274309643C09AEB895F5B282 /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile.remever.RunnerTests;
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@@ -411,13 +522,14 @@
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 3DD5DA132CCC13F9168EA46C /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile.remever.RunnerTests;
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile.RunnerTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
@@ -428,7 +540,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -485,7 +597,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
@@ -549,7 +661,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile.remever;
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -572,7 +684,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile.remever;
PRODUCT_BUNDLE_IDENTIFIER = ru.remever.mobile;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;

View File

@@ -4,4 +4,7 @@
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@@ -1,122 +1 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
{"images":[{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"20x20","idiom":"iphone","filename":"Icon-App-20x20@3x.png","scale":"3x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"29x29","idiom":"iphone","filename":"Icon-App-29x29@3x.png","scale":"3x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"40x40","idiom":"iphone","filename":"Icon-App-40x40@3x.png","scale":"3x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@1x.png","scale":"1x"},{"size":"57x57","idiom":"iphone","filename":"Icon-App-57x57@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"Icon-App-60x60@3x.png","scale":"3x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@1x.png","scale":"1x"},{"size":"20x20","idiom":"ipad","filename":"Icon-App-20x20@2x.png","scale":"2x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"ipad","filename":"Icon-App-29x29@2x.png","scale":"2x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@1x.png","scale":"1x"},{"size":"40x40","idiom":"ipad","filename":"Icon-App-40x40@2x.png","scale":"2x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@1x.png","scale":"1x"},{"size":"50x50","idiom":"ipad","filename":"Icon-App-50x50@2x.png","scale":"2x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@1x.png","scale":"1x"},{"size":"72x72","idiom":"ipad","filename":"Icon-App-72x72@2x.png","scale":"2x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@1x.png","scale":"1x"},{"size":"76x76","idiom":"ipad","filename":"Icon-App-76x76@2x.png","scale":"2x"},{"size":"83.5x83.5","idiom":"ipad","filename":"Icon-App-83.5x83.5@2x.png","scale":"2x"},{"size":"1024x1024","idiom":"ios-marketing","filename":"Icon-App-1024x1024@1x.png","scale":"1x"}],"info":{"version":1,"author":"xcode"}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 447 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 704 B

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 B

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -18,6 +18,7 @@ import 'package:remever/components/notifiers/app_settings.dart';
import 'package:remever/components/listeners/theme_listener.dart';
import 'package:remever/i18n/strings.g.dart';
import 'package:remever/theme/custom_theme.dart';
import 'package:talker_flutter/talker_flutter.dart';
final Completer<GlobalKey<NavigatorState>> navKeyCompleter =
Completer<GlobalKey<NavigatorState>>();
@@ -142,42 +143,41 @@ class _MyAppState extends State<MyApp>
locale: TranslationProvider.of(context).flutterLocale,
supportedLocales: AppLocaleUtils.supportedLocales,
localizationsDelegates: GlobalMaterialLocalizations.delegates,
routerConfig: globalRouter.config(),
routerConfig: globalRouter.config(
navigatorObservers:
() => <NavigatorObserver>[TalkerRouteObserver(talker)],
),
builder: (BuildContext context, Widget? child) {
return MediaQuery(
data: MediaQuery.of(
context,
).copyWith(textScaler: TextScaler.noScaling),
child: ChangeNotifierProvider<AppSettingsNotifier>(
create: (_) => settingsNotifier,
builder: (BuildContext context, Widget? nchild) {
if (nchild != null) return nchild;
return ChangeNotifierProvider<AppSettingsNotifier>(
create: (_) => settingsNotifier,
builder: (BuildContext context, Widget? nchild) {
if (nchild != null) return nchild;
return Consumer<AppSettingsNotifier>(
// TIP: должно убрать мерцание
key: const Key('consumer AppSettingsNotifier'),
child: child,
builder: (
BuildContext context,
AppSettingsNotifier value,
Widget? nchild,
) {
final Widget result = nchild ?? const SizedBox();
return Consumer<AppSettingsNotifier>(
// TIP: должно убрать мерцание
key: const Key('consumer AppSettingsNotifier'),
child: child,
builder: (
BuildContext context,
AppSettingsNotifier value,
Widget? nchild,
) {
final Widget result = nchild ?? const SizedBox();
if (value.showFps) {
return Material(
child: FPSWidget(
alignment: Alignment.centerLeft,
child: result,
),
);
}
if (value.showFps) {
return Material(
child: FPSWidget(
alignment: Alignment.centerLeft,
child: result,
),
);
}
return result;
},
);
},
),
return result;
},
);
},
);
},
);

View File

@@ -8,6 +8,8 @@ import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
import 'package:remever/common/resources.dart';
import 'package:remever/components/extensions/context.dart';
import 'package:remever/router.dart';
import 'package:remever/services/logs/logs_service.dart';
import 'package:talker/talker.dart';
import 'events/events.dart';
///
@@ -17,6 +19,17 @@ AppRouter get globalRouter {
return GetIt.I.get<AppRouter>();
}
///
/// Логирование
///
LogsService get logger {
return GetIt.I.get<LogsService>();
}
Talker get talker {
return GetIt.I.get<Talker>();
}
///
/// Показ тоста
///
@@ -38,7 +51,19 @@ void showSuccessToast(String text) {
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.TOP,
timeInSecForIosWeb: 1,
backgroundColor: AppColors.additional_blue,
backgroundColor: Colors.green,
textColor: AppColors.white,
fontSize: 16,
);
}
void showInfoToast(String text) {
Fluttertoast.showToast(
msg: text,
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.TOP,
timeInSecForIosWeb: 1,
backgroundColor: AppColors.disabled,
textColor: AppColors.white,
fontSize: 16,
);

View File

@@ -1,8 +1,11 @@
// Package imports:
import 'package:curl_logger_dio_interceptor/curl_logger_dio_interceptor.dart';
import 'package:dio/dio.dart';
import 'package:dio_smart_retry/dio_smart_retry.dart';
import 'package:pretty_dio_logger/pretty_dio_logger.dart';
import 'package:remever/common/functions.dart';
import 'package:remever/common/resources.dart';
import 'package:remever/common/storage.dart';
import 'package:talker_dio_logger/talker_dio_logger_interceptor.dart';
import 'package:talker_dio_logger/talker_dio_logger_settings.dart';
// Project imports:
import '../../components/env.dart';
@@ -16,17 +19,17 @@ InterceptorsWrapper get _auth {
RequestOptions options,
RequestInterceptorHandler handler,
) async {
// try {
// String? token = await authSecStorage.read(key: StorageKeys.authToken);
try {
String? token = await authSecStorage.read(key: StorageKeys.accessToken);
// if (token != null) {
// options.headers['Authorization'] = 'Bearer $token';
// }
// } catch (e) {
// getIt<LogService>().log(
// entity: LogEntity.error(message: 'Error to load access token $e'),
// );
// }
if (token != null) {
options.headers['Authorization'] = 'Bearer $token';
}
} catch (e) {
// getIt<LogService>().log(
// entity: LogEntity.error(message: 'Error to load access token $e'),
// );
}
return handler.next(options);
},
@@ -42,6 +45,14 @@ InterceptorsWrapper get _error {
// String? token = await getIt<AuthService>().refresh();
}
if (error.response != null) {
try {
showErrorToast(error.response?.data['message']);
} catch (_) {
showErrorToast(error.response?.data);
}
}
handler.next(error);
},
);
@@ -62,15 +73,11 @@ Dio get apiClient {
..add(_auth)
..add(_error)
..add(
PrettyDioLogger(
request: true,
requestBody: true,
requestHeader: true,
responseBody: true,
error: true,
TalkerDioLogger(
talker: talker,
settings: const TalkerDioLoggerSettings(printRequestHeaders: true),
),
)
..add(CurlLoggerDioInterceptor())
..add(
RetryInterceptor(
dio: client,

View File

@@ -103,6 +103,11 @@ class Bold14px extends TypographyTypeBold {
double get size => 14;
}
class Bold24px extends TypographyTypeBold {
@override
double get size => 24;
}
class Bold34px extends TypographyTypeBold {
@override
double get size => 34;

View File

@@ -5,7 +5,7 @@ part of '../env.dart';
///
class DevEnv extends Env {
@override
Uri get url => Uri.parse('https://api.remever.dizoft-studio.ru');
Uri get url => Uri.parse('https://remever.neojik.tech');
@override
String get mode => 'dev';

View File

@@ -1,8 +1,12 @@
// Package imports:
import 'dart:io';
import 'package:drift/drift.dart';
import 'package:remever/common/functions.dart';
import 'package:remever/common/typedef.dart';
import 'package:remever/database/database.dart';
import 'package:remever/database/tables.dart';
import 'package:remever/models/collection_dto.dart';
import 'package:remever/models/crud_collection_dto.dart';
part 'collections_dao.g.dart';
@@ -15,38 +19,97 @@ class CollectionsDao extends DatabaseAccessor<AppDatabase>
CollectionsDao(super.attachedDatabase);
/// Получение коллекций из базы данных
Stream<List<Collection>> getCollections() {
return db.managers.collections.watch();
Stream<List<Collection>> getCollections(String? search) {
try {
return db.managers.collections
.filter((f) => f.title.contains(search ?? ''))
.watch();
} catch (e, st) {
logger.logError('Ошибка в методе getCollections', e, st);
throw ('EXEPTION');
}
}
Future<Collection?> getCollectionById(String? id) {
try {
return db.managers.collections
.filter((f) => f.id.equals(id))
.getSingleOrNull();
} catch (e, st) {
logger.logError('Ошибка в методе getCollectionById', e, st);
throw ('EXEPTION');
}
}
/// Создание коллекции
Future<void> createCollection(CollectionDto dto) async {
await db.managers.collections.create(
(o) => o(
title: dto.title,
desc: dto.desc,
isPublic: Value<bool>(dto.isPublic),
image: Value<String?>(dto.avatar),
),
);
Future<void> createCollection(CrudCollectionDto dto) async {
try {
await db.managers.collections.create(
(o) => o(
title: dto.title,
desc: dto.desc,
isPublic: Value<bool>(dto.isPublic),
image: Value<String?>(dto.avatar),
),
);
} catch (e, st) {
logger.logError('Ошибка в методе createCollection', e, st);
}
}
/// Синхронизация коллекций
Future<void> syncCollectionFromApi(List<Json> data) async {
for (final item in data) {
try {
await db.managers.collections.create(
(o) => o(
// id: Value<String>(item['id'].toString()),
title: item['title'],
desc: item['description'],
isPublic: Value<bool>(item['is_public']),
image: Value<String?>(null),
createdAt: Value<DateTime>(DateTime.parse(item['created_at'])),
updatedAt: Value<DateTime>(DateTime.parse(item['updated_at'])),
),
);
} catch (e, st) {
logger.logError(
'Не смог добавить колекцию в методе syncCollectionFromApi',
e,
st,
);
continue;
}
}
}
/// Обновление коллекции
Future<void> updateCollection(CollectionDto dto, String id) async {
await db.managers.collections
.filter((f) => f.id(id))
.update(
(o) => o(
title: Value<String>(dto.title),
desc: Value<String>(dto.desc),
isPublic: Value<bool>(dto.isPublic),
image: Value<String?>(dto.avatar),
),
);
Future<void> updateCollection(CrudCollectionDto dto, String id) async {
try {
await db.managers.collections
.filter((f) => f.id(id))
.update(
(o) => o(
title: Value<String>(dto.title),
desc: Value<String>(dto.desc),
isPublic: Value<bool>(dto.isPublic),
image: Value<String?>(dto.avatar),
),
);
} catch (e, st) {
logger.logError('Ошибка в методе updateCollection', e, st);
}
}
/// Удаление коллекции
Future<void> deleteCollection(String id) async {
await db.managers.collections.filter((f) => f.id(id)).delete();
try {
await db.managers.collections.filter((f) => f.id(id)).delete();
} catch (e, st) {
logger.logError('Ошибка в методе deleteCollection', e, st);
}
}
}

View File

@@ -0,0 +1,96 @@
// Package imports:
import 'package:drift/drift.dart';
import 'package:remever/common/functions.dart';
import 'package:remever/database/database.dart';
import 'package:remever/database/tables.dart';
import 'package:remever/models/create_ticket_dto.dart';
part 'tickets_dao.g.dart';
@DriftAccessor(tables: <Type>[Tickets])
class TicketsDao extends DatabaseAccessor<AppDatabase> with _$TicketsDaoMixin {
///
/// Репозиторий для работы с билетами
///
TicketsDao(super.attachedDatabase);
/// Получение билетов из базы данных
Stream<List<Ticket>> getTickets(String collectionId) {
try {
return db.managers.tickets
.filter((f) => f.collectionId.id(collectionId))
.watch();
} catch (e, st) {
logger.logError('Ошибка в методе getTickets', e, st);
throw ('EXEPTION');
}
}
/// Получение билетов из базы данных
Future<int> getTicketsInCollectionCount(String collectionId) async {
try {
return (await db.managers.tickets
.filter((f) => f.collectionId.id(collectionId))
.get())
.length;
} catch (e, st) {
logger.logError('Ошибка в методе getTicketsInCollectionCount', e, st);
throw ('EXEPTION');
}
}
/// Удаление билета
Future<void> removeTicket(String id) async {
try {
await db.transaction(() {
return db.managers.tickets.filter((f) => f.id(id)).delete();
});
} catch (e, st) {
logger.logError('Ошибка в методе deleteTicket', e, st);
}
}
/// Создание билета
Future<void> createTicket(CreateTicketDto dto) async {
try {
final TicketsCompanion companion = TicketsCompanion.insert(
question: dto.question!,
answer: dto.answer!,
collectionId: dto.collection!.id,
questionImage: Value<String?>(dto.questionImage),
answerImage: Value<String?>(dto.answerImage),
);
await db.managers.tickets.create((o) => companion);
if (dto.needRevert != null && dto.needRevert!) {
/// Создаем обратную карточку где ответ == вопрос и вопрос == ответ
final TicketsCompanion revertCompanion = TicketsCompanion.insert(
answer: dto.question!,
question: dto.answer!,
collectionId: dto.collection!.id,
answerImage: Value<String?>(dto.questionImage),
questionImage: Value<String?>(dto.answerImage),
);
await db.managers.tickets.create((o) => revertCompanion);
}
} catch (e, st) {
logger.logError('Ошибка в методе createTicket', e, st);
}
}
/// Перенос билета с одной коллекции в другую
Future<void> transferTicket(String ticketId, String newCollectionId) async {
try {
await db.managers.tickets
.filter((f) => f.id(ticketId))
.update((o) => o(collectionId: Value<String>(newCollectionId)));
} catch (e, st) {
logger.logError('Ошибка в методе transferTicket', e, st);
}
}
}

View File

@@ -0,0 +1,9 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'tickets_dao.dart';
// ignore_for_file: type=lint
mixin _$TicketsDaoMixin on DatabaseAccessor<AppDatabase> {
$CollectionsTable get collections => attachedDatabase.collections;
$TicketsTable get tickets => attachedDatabase.tickets;
}

View File

@@ -2,6 +2,7 @@ import 'package:drift/drift.dart';
import 'package:flutter/foundation.dart';
import 'package:injectable/injectable.dart';
import 'package:remever/database/dao/collections_dao.dart';
import 'package:remever/database/dao/tickets_dao.dart';
import 'package:remever/database/tables.dart';
import 'connection/connection.dart' as impl;
import 'package:uuid/uuid.dart';
@@ -10,8 +11,8 @@ part 'database.g.dart';
@DriftDatabase(
include: <String>{'sql.drift'},
daos: <Type>[CollectionsDao],
tables: <Type>[Collections],
daos: <Type>[CollectionsDao, TicketsDao],
tables: <Type>[Collections, Tickets],
)
@Singleton()
final class AppDatabase extends _$AppDatabase {

File diff suppressed because it is too large Load Diff

View File

@@ -71,3 +71,17 @@ class Collections extends Table with _UuidPrimaryKey, _Timestampable {
BoolColumn get isPublic => boolean().withDefault(Constant(false))();
BoolColumn get includeInTraining => boolean().withDefault(Constant(false))();
}
///
///
///
@DataClassName('Ticket')
class Tickets extends Table with _UuidPrimaryKey, _Timestampable {
TextColumn get question => text()();
TextColumn get questionImage => text().named('question_image').nullable()();
TextColumn get answer => text()();
TextColumn get answerImage => text().named('answer_image').nullable()();
TextColumn get collectionId =>
text().references(Collections, #id, onDelete: KeyAction.cascade)();
RealColumn get progress => real().withDefault(Constant(0))();
}

Some files were not shown because too many files have changed in this diff Show More