From 706819d82b0be420ce25abb916ac10fd17ea37e1 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Tue, 4 Oct 2022 13:45:50 +0530 Subject: [PATCH 01/25] initial commit --- README.md | 95 +++----------------- bricks/.mason/bricks.json | 1 + bricks/mason-lock.json | 3 + bricks/mason.yaml | 1 + cli/.gitignore | 10 +++ cli/analysis_options.yaml | 1 + cli/bin/flutter_starter_cli.dart | 12 +++ cli/lib/flutter_starter_cli.dart | 1 + cli/lib/src/command_runner.dart | 109 +++++++++++++++++++++++ cli/lib/src/commands/commands.dart | 1 + cli/lib/src/commands/update_command.dart | 54 +++++++++++ cli/lib/src/version.dart | 1 + cli/pubspec.yaml | 22 +++++ 13 files changed, 227 insertions(+), 84 deletions(-) create mode 100644 bricks/.mason/bricks.json create mode 100644 bricks/mason-lock.json create mode 100644 bricks/mason.yaml create mode 100644 cli/.gitignore create mode 100644 cli/analysis_options.yaml create mode 100644 cli/bin/flutter_starter_cli.dart create mode 100644 cli/lib/flutter_starter_cli.dart create mode 100644 cli/lib/src/command_runner.dart create mode 100644 cli/lib/src/commands/commands.dart create mode 100644 cli/lib/src/commands/update_command.dart create mode 100644 cli/lib/src/version.dart create mode 100644 cli/pubspec.yaml diff --git a/README.md b/README.md index 657fd73..00e3640 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,19 @@ -# flutter-starter-cli +# Flutter Starter CLI +## Getting Started 🚀 +Activate globally via: -## Getting started - -To make it easy for you to get started with GitLab, here's a list of recommended next steps. - -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! - -## Add your files - -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: - -``` -cd existing_repo -git remote add origin https://git.geekyants.com/ruchika/flutter-starter-cli.git -git branch -M main -git push -uf origin main +```sh +pub global activate flutter_starter_cli ``` -## Integrate with your tools - -- [ ] [Set up project integrations](https://git.geekyants.com/ruchika/flutter-starter-cli/-/settings/integrations) - -## Collaborate with your team - -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) - -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** - -# Editing this README - -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. - -## Suggestions for a good README -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. - -## Name -Choose a self-explaining name for your project. - -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - ## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. +```sh +# Show CLI version +$ flutter_starter_cli --version -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +# Show usage help +$ flutter_starter_cli --help +``` diff --git a/bricks/.mason/bricks.json b/bricks/.mason/bricks.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/bricks/.mason/bricks.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/bricks/mason-lock.json b/bricks/mason-lock.json new file mode 100644 index 0000000..361334f --- /dev/null +++ b/bricks/mason-lock.json @@ -0,0 +1,3 @@ +{ + "bricks": {} +} \ No newline at end of file diff --git a/bricks/mason.yaml b/bricks/mason.yaml new file mode 100644 index 0000000..4f00993 --- /dev/null +++ b/bricks/mason.yaml @@ -0,0 +1 @@ +bricks: diff --git a/cli/.gitignore b/cli/.gitignore new file mode 100644 index 0000000..11bc2f5 --- /dev/null +++ b/cli/.gitignore @@ -0,0 +1,10 @@ +.dart_tool/ +.packages +build/ +pubspec.lock + +.test_coverage.dart +coverage/ +.test_runner.dart + +.idea \ No newline at end of file diff --git a/cli/analysis_options.yaml b/cli/analysis_options.yaml new file mode 100644 index 0000000..f9b3034 --- /dev/null +++ b/cli/analysis_options.yaml @@ -0,0 +1 @@ +include: package:flutter_lints/flutter.yaml diff --git a/cli/bin/flutter_starter_cli.dart b/cli/bin/flutter_starter_cli.dart new file mode 100644 index 0000000..8240bc2 --- /dev/null +++ b/cli/bin/flutter_starter_cli.dart @@ -0,0 +1,12 @@ +import 'dart:io'; + +import 'package:flutter_starter_cli/src/command_runner.dart'; + +Future main(List args) async { + await _flushThenExit(await FlutterStarterCliCommandRunner().run(args)); +} + +Future _flushThenExit(int status) { + return Future.wait([stdout.close(), stderr.close()]) + .then((_) => exit(status)); +} diff --git a/cli/lib/flutter_starter_cli.dart b/cli/lib/flutter_starter_cli.dart new file mode 100644 index 0000000..512d56d --- /dev/null +++ b/cli/lib/flutter_starter_cli.dart @@ -0,0 +1 @@ +library flutter_starter_cli; diff --git a/cli/lib/src/command_runner.dart b/cli/lib/src/command_runner.dart new file mode 100644 index 0000000..e251f2b --- /dev/null +++ b/cli/lib/src/command_runner.dart @@ -0,0 +1,109 @@ +import 'package:args/args.dart'; +import 'package:args/command_runner.dart'; +import 'package:mason_logger/mason_logger.dart'; +import 'package:flutter_starter_cli/src/commands/commands.dart'; +import 'package:flutter_starter_cli/src/version.dart'; +import 'package:pub_updater/pub_updater.dart'; + +const executableName = 'flutter_starter_cli'; +const packageName = 'flutter_starter_cli'; +const description = 'Flutter Starter CLI'; + +class FlutterStarterCliCommandRunner extends CommandRunner { + FlutterStarterCliCommandRunner({ + Logger? logger, + PubUpdater? pubUpdater, + }) : _logger = logger ?? Logger(), + _pubUpdater = pubUpdater ?? PubUpdater(), + super(executableName, description) { + argParser + ..addFlag( + 'version', + abbr: 'v', + negatable: false, + help: 'Print the current version.', + ) + ..addFlag( + 'verbose', + help: 'Noisy logging, including all shell commands executed.', + ); + + addCommand(UpdateCommand(logger: _logger, pubUpdater: _pubUpdater)); + } + + final Logger _logger; + final PubUpdater _pubUpdater; + + @override + Future run(Iterable args) async { + try { + final topLevelResults = parse(args); + if (topLevelResults['verbose'] == true) { + _logger.level = Level.verbose; + } + return await runCommand(topLevelResults) ?? ExitCode.success.code; + } on FormatException catch (e, stackTrace) { + _logger + ..err(e.message) + ..err('$stackTrace') + ..info('') + ..info(usage); + return ExitCode.usage.code; + } on UsageException catch (e) { + _logger + ..err(e.message) + ..info('') + ..info(e.usage); + return ExitCode.usage.code; + } + } + + @override + Future runCommand(ArgResults topLevelResults) async { + _logger + ..detail('Argument information:') + ..detail(' Top level options:'); + for (final option in topLevelResults.options) { + if (topLevelResults.wasParsed(option)) { + _logger.detail(' - $option: ${topLevelResults[option]}'); + } + } + if (topLevelResults.command != null) { + final commandResult = topLevelResults.command!; + _logger + ..detail(' Command: ${commandResult.name}') + ..detail(' Command options:'); + for (final option in commandResult.options) { + if (commandResult.wasParsed(option)) { + _logger.detail(' - $option: ${commandResult[option]}'); + } + } + } + + final int? exitCode; + if (topLevelResults['version'] == true) { + _logger.info(packageVersion); + exitCode = ExitCode.success.code; + } else { + exitCode = await super.runCommand(topLevelResults); + } + await _checkForUpdates(); + return exitCode; + } + + Future _checkForUpdates() async { + try { + final latestVersion = await _pubUpdater.getLatestVersion(packageName); + final isUpToDate = packageVersion == latestVersion; + if (!isUpToDate) { + _logger + ..info('') + ..info( + ''' +${lightYellow.wrap('Update available!')} ${lightCyan.wrap(packageVersion)} \u2192 ${lightCyan.wrap(latestVersion)} +Run ${lightCyan.wrap('flutter_starter_cli update')} to update''', + ); + } + } catch (_) {} + } +} diff --git a/cli/lib/src/commands/commands.dart b/cli/lib/src/commands/commands.dart new file mode 100644 index 0000000..8a90ac2 --- /dev/null +++ b/cli/lib/src/commands/commands.dart @@ -0,0 +1 @@ +export 'update_command.dart'; diff --git a/cli/lib/src/commands/update_command.dart b/cli/lib/src/commands/update_command.dart new file mode 100644 index 0000000..c22c921 --- /dev/null +++ b/cli/lib/src/commands/update_command.dart @@ -0,0 +1,54 @@ +import 'package:args/command_runner.dart'; +import 'package:mason_logger/mason_logger.dart'; +import 'package:flutter_starter_cli/src/command_runner.dart'; +import 'package:flutter_starter_cli/src/version.dart'; +import 'package:pub_updater/pub_updater.dart'; + +class UpdateCommand extends Command { + UpdateCommand({ + required Logger logger, + PubUpdater? pubUpdater, + }) : _logger = logger, + _pubUpdater = pubUpdater ?? PubUpdater(); + + final Logger _logger; + final PubUpdater _pubUpdater; + + @override + String get description => 'Update the CLI.'; + + @override + String get name => 'update'; + + @override + Future run() async { + final updateCheckProgress = _logger.progress('Checking for updates'); + late final String latestVersion; + try { + latestVersion = await _pubUpdater.getLatestVersion(packageName); + } catch (error) { + updateCheckProgress.fail(); + _logger.err('$error'); + return ExitCode.software.code; + } + updateCheckProgress.complete('Checked for updates'); + + final isUpToDate = packageVersion == latestVersion; + if (isUpToDate) { + _logger.info('CLI is already at the latest version.'); + return ExitCode.success.code; + } + + final updateProgress = _logger.progress('Updating to $latestVersion'); + try { + await _pubUpdater.update(packageName: packageName); + } catch (error) { + updateProgress.fail(); + _logger.err('$error'); + return ExitCode.software.code; + } + updateProgress.complete('Updated to $latestVersion'); + + return ExitCode.success.code; + } +} diff --git a/cli/lib/src/version.dart b/cli/lib/src/version.dart new file mode 100644 index 0000000..af0834a --- /dev/null +++ b/cli/lib/src/version.dart @@ -0,0 +1 @@ +const packageVersion = '0.0.1'; diff --git a/cli/pubspec.yaml b/cli/pubspec.yaml new file mode 100644 index 0000000..f3aa5aa --- /dev/null +++ b/cli/pubspec.yaml @@ -0,0 +1,22 @@ +name: flutter_starter_cli +description: Flutter Starter CLI +version: 0.0.1 +publish_to: none + +environment: + sdk: ">=2.18.0 <3.0.0" + +dependencies: + args: ^2.3.1 + mason: ^0.1.0-dev.33 + mason_logger: ^0.1.3 + pub_updater: ^0.2.1 + +dev_dependencies: + build_runner: ^2.0.0 + build_verify: ^3.0.0 + build_version: ^2.0.0 + flutter_lints: ^2.0.1 + +executables: + flutter_starter_cli: From 021224b734973d0291087c126e116918309bd04a Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Tue, 4 Oct 2022 16:33:42 +0530 Subject: [PATCH 02/25] add bricks for flutter starter --- bricks/.DS_Store | Bin 0 -> 6148 bytes bricks/.mason/bricks.json | 4 +- bricks/flutter_starter/__brick__/.DS_Store | Bin 0 -> 8196 bytes .../__brick__/{{name}}/.gitignore | 49 + .../__brick__/{{name}}/README.md | 3 + .../__brick__/{{name}}/analysis_options.yaml | 1 + .../__brick__/{{name}}/android/.gitignore | 13 + .../{{name}}/android/app/build.gradle | 71 ++ .../android/app/src/debug/AndroidManifest.xml | 8 + .../android/app/src/main/AndroidManifest.xml | 34 + .../app/FlutterMultiDexApplication.java | 25 + .../kotlin/com/example/app/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 + .../app/src/main/res/values/styles.xml | 18 + .../app/src/profile/AndroidManifest.xml | 8 + .../__brick__/{{name}}/android/build.gradle | 31 + .../{{name}}/android/gradle.properties | 3 + .../gradle/wrapper/gradle-wrapper.properties | 6 + .../{{name}}/android/settings.gradle | 11 + .../{{name}}/assets/images/2.0x/logo.png | Bin 0 -> 15736 bytes .../{{name}}/assets/images/3.0x/logo.png | Bin 0 -> 25917 bytes .../{{name}}/assets/images/login.png | Bin 0 -> 48507 bytes .../__brick__/{{name}}/assets/images/logo.png | Bin 0 -> 7224 bytes .../{{name}}/assets/images/signup.png | Bin 0 -> 68930 bytes .../{{name}}/integration_test/app_test.dart | 106 ++ .../__brick__/{{name}}/ios/.gitignore | 34 + .../ios/Flutter/AppFrameworkInfo.plist | 26 + .../{{name}}/ios/Flutter/Debug.xcconfig | 2 + .../{{name}}/ios/Flutter/Release.xcconfig | 2 + .../__brick__/{{name}}/ios/Podfile | 41 + .../__brick__/{{name}}/ios/Podfile.lock | 59 ++ .../ios/Runner.xcodeproj/project.pbxproj | 549 ++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 ++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../{{name}}/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 564 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 1588 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1025 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 1716 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 1920 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1283 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 1895 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 2665 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 3831 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 1888 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 3294 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 3612 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + .../ios/Runner/Base.lproj/Main.storyboard | 26 + .../__brick__/{{name}}/ios/Runner/Info.plist | 55 + .../ios/Runner/Runner-Bridging-Header.h | 1 + .../__brick__/{{name}}/l10n.yaml | 6 + .../{{name}}/lib/api_sdk/api_sdk.dart | 39 + .../{{name}}/lib/api_sdk/dio/README.md | 23 + .../lib/api_sdk/dio/dio_helpers/dio_apis.dart | 5 + .../api_sdk/dio/dio_helpers/dio_client.dart | 17 + .../api_sdk/dio/dio_helpers/dio_client.g.dart | 63 ++ .../dio/dio_helpers/dio_exceptions.dart | 43 + .../dio/dio_helpers/dio_interceptor.dart | 78 ++ .../{{name}}/lib/api_sdk/dio/dio_service.dart | 38 + .../lib/api_sdk/dio/models/user_model.dart | 40 + .../lib/api_sdk/dio/models/user_model.g.dart | 49 + .../{{name}}/lib/api_sdk/http/README.md | 17 + .../api_sdk/http/http_helpers/http_apis.dart | 5 + .../http/http_helpers/http_client.dart | 100 ++ .../http/http_helpers/http_exception.dart | 42 + .../http/http_helpers/http_interceptor.dart | 15 + .../lib/api_sdk/http/http_service.dart | 40 + .../__brick__/{{name}}/lib/app.dart | 44 + .../__brick__/{{name}}/lib/config/config.dart | 1 + .../__brick__/{{name}}/lib/l10n/app_en.arb | 4 + .../__brick__/{{name}}/lib/l10n/app_es.arb | 4 + .../__brick__/{{name}}/lib/l10n/app_fr.arb | 4 + .../__brick__/{{name}}/lib/main.dart | 25 + .../__brick__/{{name}}/lib/routes/routes.dart | 53 + .../{{name}}/lib/screens/home/home.dart | 179 ++++ .../lib/screens/login/login_screen.dart | 124 +++ .../lib/screens/login/widgets/login_form.dart | 106 ++ .../lib/screens/signup/signup_screen.dart | 142 +++ .../screens/signup/widgets/signup_form.dart | 119 +++ .../lib/screens/splash/splash_screen.dart | 48 + .../authentication/authentication_bloc.dart | 105 ++ .../authentication/authentication_event.dart | 39 + .../authentication/authentication_state.dart | 46 + .../lib/shared/bloc/bloc_controller.dart | 6 + .../bloc/update_theme/update_theme_bloc.dart | 12 + .../bloc/update_theme/update_theme_event.dart | 18 + .../bloc/update_theme/update_theme_state.dart | 16 + .../lib/shared/models/current_user_data.dart | 76 ++ .../lib/shared/models/firebase_user.dart | 14 + .../{{name}}/lib/shared/models/token.dart | 15 + .../{{name}}/lib/shared/models/user.dart | 9 + .../{{name}}/lib/shared/models/user_data.dart | 18 + .../dio_authentication_repository.dart | 10 + .../http_authentication_repository.dart | 29 + .../__brick__/{{name}}/lib/shared/shared.dart | 26 + .../{{name}}/lib/themes/color_constants.dart | 14 + .../{{name}}/lib/themes/theme_data.dart | 218 ++++ .../{{name}}/lib/utils/image_constants.dart | 12 + .../{{name}}/lib/utils/responsive.dart | 47 + .../{{name}}/lib/utils/size_utils.dart | 181 ++++ .../{{name}}/lib/utils/string_constants.dart | 1 + .../lib/widgets/cache_image_widget.dart | 36 + .../__brick__/{{name}}/lib/{{name}}.dart | 37 + .../__brick__/{{name}}/linux/.gitignore | 1 + .../__brick__/{{name}}/linux/CMakeLists.txt | 138 +++ .../{{name}}/linux/flutter/CMakeLists.txt | 88 ++ .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + .../linux/flutter/generated_plugins.cmake | 23 + .../__brick__/{{name}}/linux/main.cc | 6 + .../{{name}}/linux/my_application.cc | 104 ++ .../__brick__/{{name}}/linux/my_application.h | 18 + .../__brick__/{{name}}/macos/.gitignore | 7 + .../macos/Flutter/Flutter-Debug.xcconfig | 2 + .../macos/Flutter/Flutter-Release.xcconfig | 2 + .../Flutter/GeneratedPluginRegistrant.swift | 16 + .../__brick__/{{name}}/macos/Podfile | 40 + .../macos/Runner.xcodeproj/project.pbxproj | 572 ++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 87 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../{{name}}/macos/Runner/AppDelegate.swift | 9 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 46993 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 3276 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 1429 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 5933 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1243 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 14800 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 1874 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 ++++++ .../macos/Runner/Configs/AppInfo.xcconfig | 14 + .../macos/Runner/Configs/Debug.xcconfig | 2 + .../macos/Runner/Configs/Release.xcconfig | 2 + .../macos/Runner/Configs/Warnings.xcconfig | 13 + .../macos/Runner/DebugProfile.entitlements | 12 + .../{{name}}/macos/Runner/Info.plist | 32 + .../macos/Runner/MainFlutterWindow.swift | 15 + .../macos/Runner/Release.entitlements | 8 + .../__brick__/{{name}}/pubspec.lock | 998 ++++++++++++++++++ .../__brick__/{{name}}/pubspec.yaml | 60 ++ .../authentication_bloc_test.dart | 166 +++ .../authentication_event_test.dart | 29 + .../authentication_state_test.dart | 29 + .../update_theme/update_theme_bloc_test.dart | 30 + .../update_theme/update_theme_event_test.dart | 22 + .../update_theme/update_theme_state_test.dart | 22 + .../test/screens/home/logout_test.dart | 67 ++ .../test/screens/login/login_test.dart | 84 ++ .../test/screens/signup/signup_test.dart | 90 ++ .../__brick__/{{name}}/web/favicon.png | Bin 0 -> 917 bytes .../__brick__/{{name}}/web/icons/Icon-192.png | Bin 0 -> 5292 bytes .../__brick__/{{name}}/web/icons/Icon-512.png | Bin 0 -> 8252 bytes .../{{name}}/web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes .../{{name}}/web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes .../__brick__/{{name}}/web/index.html | 61 ++ .../__brick__/{{name}}/web/manifest.json | 35 + .../__brick__/{{name}}/windows/.gitignore | 17 + .../__brick__/{{name}}/windows/CMakeLists.txt | 101 ++ .../{{name}}/windows/flutter/CMakeLists.txt | 104 ++ .../flutter/generated_plugin_registrant.cc | 11 + .../flutter/generated_plugin_registrant.h | 15 + .../windows/flutter/generated_plugins.cmake | 23 + .../{{name}}/windows/runner/CMakeLists.txt | 32 + .../{{name}}/windows/runner/Runner.rc | 121 +++ .../windows/runner/flutter_window.cpp | 61 ++ .../{{name}}/windows/runner/flutter_window.h | 33 + .../{{name}}/windows/runner/main.cpp | 43 + .../{{name}}/windows/runner/resource.h | 16 + .../windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes .../windows/runner/runner.exe.manifest | 20 + .../{{name}}/windows/runner/utils.cpp | 64 ++ .../__brick__/{{name}}/windows/runner/utils.h | 19 + .../{{name}}/windows/runner/win32_window.cpp | 245 +++++ .../{{name}}/windows/runner/win32_window.h | 98 ++ bricks/flutter_starter/brick.yaml | 26 + bricks/mason-lock.json | 6 +- bricks/mason.yaml | 2 + 201 files changed, 8447 insertions(+), 2 deletions(-) create mode 100644 bricks/.DS_Store create mode 100644 bricks/flutter_starter/__brick__/.DS_Store create mode 100644 bricks/flutter_starter/__brick__/{{name}}/.gitignore create mode 100644 bricks/flutter_starter/__brick__/{{name}}/README.md create mode 100644 bricks/flutter_starter/__brick__/{{name}}/analysis_options.yaml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/.gitignore create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/build.gradle create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/debug/AndroidManifest.xml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/AndroidManifest.xml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/kotlin/com/example/app/MainActivity.kt create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable/launch_background.xml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values-night/styles.xml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values/styles.xml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/profile/AndroidManifest.xml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/build.gradle create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/gradle.properties create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/gradle/wrapper/gradle-wrapper.properties create mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/settings.gradle create mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/2.0x/logo.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/3.0x/logo.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/login.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/logo.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/signup.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/.gitignore create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/AppFrameworkInfo.plist create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Debug.xcconfig create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Release.xcconfig create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Podfile create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Podfile.lock create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.pbxproj create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/AppDelegate.swift create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/Main.storyboard create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Info.plist create mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Runner-Bridging-Header.h create mode 100644 bricks/flutter_starter/__brick__/{{name}}/l10n.yaml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/api_sdk.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/README.md create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_apis.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_exceptions.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.g.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/README.md create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_apis.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_exception.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_interceptor.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/app.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/config/config.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_en.arb create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_es.arb create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_fr.arb create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/main.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_event.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_state.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/bloc_controller.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/current_user_data.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/firebase_user.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/token.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user_data.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/dio_authentication_repository.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/http_authentication_repository.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/shared.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/themes/color_constants.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/themes/theme_data.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/utils/image_constants.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/utils/responsive.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/utils/string_constants.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/widgets/cache_image_widget.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/{{name}}.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/.gitignore create mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/CMakeLists.txt create mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/flutter/CMakeLists.txt create mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.cc create mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.h create mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugins.cmake create mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/main.cc create mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/my_application.cc create mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/my_application.h create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/.gitignore create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Debug.xcconfig create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Release.xcconfig create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Podfile create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.pbxproj create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/AppDelegate.swift create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Base.lproj/MainMenu.xib create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/AppInfo.xcconfig create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Debug.xcconfig create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Release.xcconfig create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Warnings.xcconfig create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/DebugProfile.entitlements create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Info.plist create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/MainFlutterWindow.swift create mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Release.entitlements create mode 100644 bricks/flutter_starter/__brick__/{{name}}/pubspec.lock create mode 100644 bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml create mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/favicon.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-192.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-512.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-192.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-512.png create mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/index.html create mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/manifest.json create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/.gitignore create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/CMakeLists.txt create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/flutter/CMakeLists.txt create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.cc create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.h create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugins.cmake create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/CMakeLists.txt create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/Runner.rc create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.cpp create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.h create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/main.cpp create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/resource.h create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/resources/app_icon.ico create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/runner.exe.manifest create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.cpp create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.h create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.cpp create mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.h create mode 100644 bricks/flutter_starter/brick.yaml diff --git a/bricks/.DS_Store b/bricks/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..bcada08fb44979083bbd400cce1eb522c4442636 GIT binary patch literal 6148 zcmeHK!Ab)$5S_HuZYg393OxqA7Hlh3i*t7nSU*h*T zlcZv);z1B8Gcb9R$xK3CmdpkKL}%P@08{|LK_$$Uu=zr0oODTY)1 zCSK~NR20l@KR6EulU`-(SjDLy#)FYg2>SyJxw;7BzM6E@IPNDp*E0i7 z$tm?J)#HgtfO}5&t*{tMj@9Z9(_8y|gSUnqR1%8EEHZ0EJ1&tqe z`Q(k_NX2&;IiF>o&BzQe1I)mxF<|dGr@U$#ghJGJu zyg*2THoYYXrA60bW)MeEgh@p-slq-ngh@xgv~jM*%%DjJp;yLv?8?HvP=sC`{Zfa6 za1CLiPXT`}hB168D$^W?-cl5QVPS?ckPdZC% zoj^>;pbiiS5SWMnJG;wd1pjQ3y!HH^vYZs!K1vN+rt8($Uk0hHd|JhHdAeLFKav=7 z3JEXi<=m!Zc7U}y9mh(Q?vtr*(W53aCBY6Xe2zcwqbQ7yryx@=%^yku3NdGWAK2Lv7ML1RKQ;j$c)>j zc6hRR>2BIe;W(M^gh^ZbqlvVW;U6w)f2#dh9@P z`+Lo_V<*f*#vrY75uFxn?#>!{M5QO~Sh&?|K`&eYrQI$5uocQ#0A&NVs=?90p>aqJPhn#G>hKFqptyN#@ivMyH7 z=1z!meCFKH;(M2`e6Vq2^S0LZu_{_UORZ7o^yE#~Oj$-(!PLE>zNDKrY~8f?_v0(F zJ#(LFWEFZ$>9ms>g9mA~+I*ST$-TLh`FPIso*0`&tE(0))YQE?j-$=dS&&Xo%L=zF zS*U3P%+j1Su-0XntCud*)J_*Mph@5HfrzSh9zd#4R}rE0QB~`*k}1QYx+22XtW~w1 zyqFwq^_A;4s9G<+$_$R!t%iuN-W1ccN7<8iCS9+6*syU_7yQS^(bn${C9_6*0om$n zx1*N7K-9CKExPGB%*fEv7HYd>xsP?YS=SAnPhJ;vz}t=dvu<#SRxa z_;s=6T#`B=2;p!lHKnF6*`Bz7EF}%N2X>Nu#39d+BjhMKMb4137!I$tAT!ru9I^2L?rE+PSR3TBRR*Fa~q?J;= z6qVLX&C*V3kJKSXFO@QLVEnA4G`1%upPL^Ri6xz!Jh4LCTXwXnZFhWPeKC`frd^X7*ZsEejb)h^5#rjC#r?3d_Lw>J?7;Hs;?|@cl zgKnSUd%=KxFvMBzK@JLV5Dvk!@Ekl3FCf!j;Y@!6j>22;HoODx!f`kOC*eal1!v$a zoP&?y6XgCyxC~#zHTdo}M(-NWX!vC^MrWLO+}}gxhKeJwEPHe`_Wd)KIS)7DH8^bo&UE?{r!Kc@IW6R5Fqd$Kmf|)iFgxEWU56& zLR%QG$M9l>`4xraAy_dNrsv0TlsA7c#QU&si}|uBBwDci>mLIC;eV`y{Xf|M*>B)? H`u_h1iCo0W literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/.gitignore new file mode 100644 index 0000000..a093ad0 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/.gitignore @@ -0,0 +1,49 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +#android Firebase +google-services.json + +#ios Firebase +GoogleService-Info.plist +Secrets +Secrets.tar \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/README.md b/bricks/flutter_starter/__brick__/{{name}}/README.md new file mode 100644 index 0000000..bbc8416 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/README.md @@ -0,0 +1,3 @@ +# {{name}} + +## {{desc}} diff --git a/bricks/flutter_starter/__brick__/{{name}}/analysis_options.yaml b/bricks/flutter_starter/__brick__/{{name}}/analysis_options.yaml new file mode 100644 index 0000000..f9b3034 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/analysis_options.yaml @@ -0,0 +1 @@ +include: package:flutter_lints/flutter.yaml diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/build.gradle b/bricks/flutter_starter/__brick__/{{name}}/android/app/build.gradle new file mode 100644 index 0000000..e756e74 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/build.gradle @@ -0,0 +1,71 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion flutter.compileSdkVersion + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "{{org}}.{{name}}" + // You can update the following values to match your application needs. + // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. + minSdkVersion 19 + targetSdkVersion flutter.targetSdkVersion + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/debug/AndroidManifest.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..ad0158c --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/AndroidManifest.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..382382e --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java new file mode 100644 index 0000000..752fc18 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java @@ -0,0 +1,25 @@ +// Generated file. +// +// If you wish to remove Flutter's multidex support, delete this entire file. +// +// Modifications to this file should be done in a copy under a different name +// as this file may be regenerated. + +package io.flutter.app; + +import android.app.Application; +import android.content.Context; +import androidx.annotation.CallSuper; +import androidx.multidex.MultiDex; + +/** + * Extension of {@link android.app.Application}, adding multidex support. + */ +public class FlutterMultiDexApplication extends Application { + @Override + @CallSuper + protected void attachBaseContext(Context base) { + super.attachBaseContext(base); + MultiDex.install(this); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/kotlin/com/example/app/MainActivity.kt b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/kotlin/com/example/app/MainActivity.kt new file mode 100644 index 0000000..12e5477 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/kotlin/com/example/app/MainActivity.kt @@ -0,0 +1,6 @@ +package {{org}}.{{name}} + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable-v21/launch_background.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable/launch_background.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6372eebdb28e45604e46eeda8dd24651419bc0 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values-night/styles.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values/styles.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..cb1ef88 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/profile/AndroidManifest.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..ad0158c --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/build.gradle b/bricks/flutter_starter/__brick__/{{name}}/android/build.gradle new file mode 100644 index 0000000..83ae220 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.6.10' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/gradle.properties b/bricks/flutter_starter/__brick__/{{name}}/android/gradle.properties new file mode 100644 index 0000000..94adc3a --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/gradle/wrapper/gradle-wrapper.properties b/bricks/flutter_starter/__brick__/{{name}}/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..cc5527d --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Jun 23 08:50:38 CEST 2017 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/settings.gradle b/bricks/flutter_starter/__brick__/{{name}}/android/settings.gradle new file mode 100644 index 0000000..44e62bc --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/bricks/flutter_starter/__brick__/{{name}}/assets/images/2.0x/logo.png b/bricks/flutter_starter/__brick__/{{name}}/assets/images/2.0x/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c967fff1db66c7fb0048a2b997962b634a97dc GIT binary patch literal 15736 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 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/assets/images/3.0x/logo.png b/bricks/flutter_starter/__brick__/{{name}}/assets/images/3.0x/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6b5dcc95e3dbadd92732b6817033b4e4f67899da GIT binary patch literal 25917 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

!ZXxUZo3-jc~o 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

Ih>Xo6wTPDyGc;48$#k=R3-J;pxf{*iKkS& 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Ξ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 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart b/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart new file mode 100644 index 0000000..843fc60 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart @@ -0,0 +1,106 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + late final AuthenticationBloc authenticationBloc; + late final UpdateThemeBloc updateThemeBloc; + late final AuthenticationRepository authenticationService; + + setUpAll(() async { + await SharedPrefs.instance.init(); + authenticationService = AuthenticationRepository(); + updateThemeBloc = UpdateThemeBloc(); + authenticationBloc = AuthenticationBloc( + authenticationService: authenticationService, + ); + }); + + tearDownAll(() { + authenticationBloc.close(); + updateThemeBloc.close(); + }); + + Widget createWidget(Widget child) { + return MaterialApp( + debugShowCheckedModeBanner: false, + home: Builder(builder: (context) { + UiSizeConfig().init(context); + return MultiBlocProvider( + providers: [ + BlocProvider.value(value: authenticationBloc), + BlocProvider.value(value: updateThemeBloc), + ], + child: child, + ); + }), + ); + } + + group('Flutter starter', () { + testWidgets('Complete app test', (tester) async { + await tester.pumpWidget(createWidget(const App())); + + await tester.pumpAndSettle(); + await Future.delayed(const Duration(milliseconds: 500)); + await tester.pumpAndSettle(); + + final Finder email = find.byKey(const Key('emailField')); + final Finder password = find.byKey(const Key('passwordField')); + final Finder login = find.byKey(const Key('loginButton')); + final Finder theme = find.byKey(const Key('themeSwitch')); + final Finder logout = find.byKey(const Key('logoutButton')); + + /// Empty + await tester.enterText(email, ''); + await tester.enterText(password, ''); + + await tester.tap(login); + await tester.pumpAndSettle(); + + expect(authenticationBloc.state, const AuthenticationStart()); + + /// Invalid + await tester.enterText(email, 'test@gmail.com'); + await tester.enterText(password, 'test1234'); + + await tester.tap(login); + await tester.pumpAndSettle(); + + expect( + authenticationBloc.state, + const AuthenticationFailure( + message: 'Invalid Request: {"error":"user not found"}'), + ); + + /// Login + await tester.enterText(email, 'eve.holt@reqres.in'); + await tester.enterText(password, 'cityslicka'); + + await tester.tap(login); + await tester.pumpAndSettle(); + + /// Theme + final ScaffoldState state = tester.firstState(find.byType(Scaffold)); + state.openDrawer(); + await tester.pumpAndSettle(); + await tester.tap(theme); + await tester.pumpAndSettle(); + + state.closeDrawer(); + await tester.pumpAndSettle(); + + expect(updateThemeBloc.state, const SetTheme(appTheme: AppTheme.dark)); + + /// Logout + await tester.tap(logout); + await tester.pumpAndSettle(); + + expect(authenticationBloc.state, const UserLogoutState()); + }); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/ios/.gitignore new file mode 100644 index 0000000..7a7f987 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/AppFrameworkInfo.plist b/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..9625e10 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Debug.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..ec97fc6 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Release.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..c4855bf --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile b/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile new file mode 100644 index 0000000..313ea4a --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile @@ -0,0 +1,41 @@ +# Uncomment this line to define a global platform for your project +platform :ios, '11.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile.lock b/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile.lock new file mode 100644 index 0000000..37d7c0f --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile.lock @@ -0,0 +1,59 @@ +PODS: + - Flutter (1.0.0) + - flutter_native_splash (0.0.1): + - Flutter + - fluttertoast (0.0.2): + - Flutter + - Toast + - FMDB (2.7.5): + - FMDB/standard (= 2.7.5) + - FMDB/standard (2.7.5) + - path_provider_ios (0.0.1): + - Flutter + - shared_preferences_ios (0.0.1): + - Flutter + - sqflite (0.0.2): + - Flutter + - FMDB (>= 2.7.5) + - Toast (4.0.0) + +DEPENDENCIES: + - Flutter (from `Flutter`) + - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) + - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) + - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) + - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) + - sqflite (from `.symlinks/plugins/sqflite/ios`) + +SPEC REPOS: + trunk: + - FMDB + - Toast + +EXTERNAL SOURCES: + Flutter: + :path: Flutter + flutter_native_splash: + :path: ".symlinks/plugins/flutter_native_splash/ios" + fluttertoast: + :path: ".symlinks/plugins/fluttertoast/ios" + path_provider_ios: + :path: ".symlinks/plugins/path_provider_ios/ios" + shared_preferences_ios: + :path: ".symlinks/plugins/shared_preferences_ios/ios" + sqflite: + :path: ".symlinks/plugins/sqflite/ios" + +SPEC CHECKSUMS: + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef + fluttertoast: 16fbe6039d06a763f3533670197d01fc73459037 + FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 + shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad + sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 + Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 + +PODFILE CHECKSUM: 7368163408c647b7eb699d0d788ba6718e18fb8d + +COCOAPODS: 1.11.3 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.pbxproj b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..13ef714 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,549 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 96B4905726F45C2D9B05EDF0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E2746B12027798B0662130 /* 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 */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 4A63F70A590EEC2C31E49E53 /* 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 = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 90E2746B12027798B0662130 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 91B24820E83830628E56E6F1 /* 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 = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D936D17513099C123DDF7A65 /* 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 = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 96B4905726F45C2D9B05EDF0 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + F61B79B65E4ED1DCA6E50A2C /* Pods */, + C7ED4B9403C7740748C190CE /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + C7ED4B9403C7740748C190CE /* Frameworks */ = { + isa = PBXGroup; + children = ( + 90E2746B12027798B0662130 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F61B79B65E4ED1DCA6E50A2C /* Pods */ = { + isa = PBXGroup; + children = ( + D936D17513099C123DDF7A65 /* Pods-Runner.debug.xcconfig */, + 4A63F70A590EEC2C31E49E53 /* Pods-Runner.release.xcconfig */, + 91B24820E83830628E56E6F1 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + F10AA196B4EF3EDBC65C1C6B /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 24E4F4EB271A687C8E367BA0 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 24E4F4EB271A687C8E367BA0 /* [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; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + F10AA196B4EF3EDBC65C1C6B /* [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; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org}}.testApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org}}.testApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = {{org}}.testApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..c87d15a --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/contents.xcworkspacedata b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/AppDelegate.swift b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..70693e4 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "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" + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 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 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f091b6b0bca859a3f474b03065bef75ba58a9e4c GIT binary patch literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ef06e7edb86cdfe0d15b4b0d98334a86163658 GIT binary patch literal 1716 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 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9ed8f5cee1c98386d13b17e89f719e83555b2 GIT binary patch literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a6d6b8609df07bf62e5100a53a01510388bd2b22 GIT binary patch literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..75b2d164a5a98e212cca15ea7bf2ab5de5108680 GIT binary patch literal 3831 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 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4df70d39da7941ef3f6dcb7f06a192d8dcb308d GIT binary patch literal 1888 zcmV-m2cP(fP)x~L`~4d)Rspd&<9kFh{hn*KP1LP0~$;u(LfAu zp%fx&qLBcRHx$G|3q(bv@+b;o0*D|jwD-Q9uQR(l*ST}s+uPgQ-MeFwZ#GS?b332? z&Tk$&_miXn3IGq)AmQ)3sisq{raD4(k*bHvpCe-TdWq^NRTEVM)i9xbgQ&ccnUVx* zEY%vS%gDcSg=!tuIK8$Th2_((_h^+7;R|G{n06&O2#6%LK`a}n?h_fL18btz<@lFG za}xS}u?#DBMB> zw^b($1Z)`9G?eP95EKi&$eOy@K%h;ryrR3la%;>|o*>CgB(s>dDcNOXg}CK9SPmD? zmr-s{0wRmxUnbDrYfRvnZ@d z6johZ2sMX{YkGSKWd}m|@V7`Degt-43=2M?+jR%8{(H$&MLLmS;-|JxnX2pnz;el1jsvqQz}pGSF<`mqEXRQ5sC4#BbwnB_4` zc5bFE-Gb#JV3tox9fp-vVEN{(tOCpRse`S+@)?%pz+zVJXSooTrNCUg`R6`hxwb{) zC@{O6MKY8tfZ5@!yy=p5Y|#+myRL=^{tc(6YgAnkg3I(Cd!r5l;|;l-MQ8B`;*SCE z{u)uP^C$lOPM z5d~UhKhRRmvv{LIa^|oavk1$QiEApSrP@~Jjbg`<*dW4TO?4qG%a%sTPUFz(QtW5( zM)lA+5)0TvH~aBaOAs|}?u2FO;yc-CZ1gNM1dAxJ?%m?YsGR`}-xk2*dxC}r5j$d* zE!#Vtbo69h>V4V`BL%_&$} z+oJAo@jQ^Tk`;%xw-4G>hhb&)B?##U+(6Fi7nno`C<|#PVA%$Y{}N-?(Gc$1%tr4Pc}}hm~yY#fTOe!@v9s-ik$dX~|ygArPhByaXn8 zpI^FUjNWMsTFKTP3X7m?UK)3m zp6rI^_zxRYrx6_QmhoWoDR`fp4R7gu6;gdO)!KexaoO2D88F9x#TM1(9Bn7g;|?|o z)~$n&Lh#hCP6_LOPD>a)NmhW})LADx2kq=X7}7wYRj-0?dXr&bHaRWCfSqvzFa=sn z-8^gSyn-RmH=BZ{AJZ~!8n5621GbUJV7Qvs%JNv&$%Q17s_X%s-41vAPfIR>;x0Wlqr5?09S>x#%Qkt>?(&XjFRY}*L6BeQ3 z<6XEBh^S7>AbwGm@XP{RkeEKj6@_o%oV?hDuUpUJ+r#JZO?!IUc;r0R?>mi)*ZpQ) z#((dn=A#i_&EQn|hd)N$#A*fjBFuiHcYvo?@y1 z5|fV=a^a~d!c-%ZbMNqkMKiSzM{Yq=7_c&1H!mXk60Uv32dV;vMg&-kQ)Q{+PFtwc zj|-uQ;b^gts??J*9VxxOro}W~Q9j4Em|zSRv)(WSO9$F$s=Ydu%Q+5DOid~lwk&we zY%W(Z@ofdwPHncEZzZgmqS|!gTj3wQq9rxQy+^eNYKr1mj&?tm@wkO*9@UtnRMG>c aR{jt9+;fr}hV%pg00001^@s67{VYS000c7NklQEG_j zup^)eW&WUIApqy$=APz8jE@awGp)!bsTjDbrJO`$x^ZR^dr;>)LW>{ zs70vpsD38v)19rI=GNk1b(0?Js9~rjsQsu*K;@SD40RB-3^gKU-MYC7G!Bw{fZsqp zih4iIi;Hr_xZ033Iu{sQxLS=}yBXgLMn40d++>aQ0#%8D1EbGZp7+ z5=mK?t31BkVYbGOxE9`i748x`YgCMwL$qMsChbSGSE1`p{nSmadR zcQ#R)(?!~dmtD0+D2!K zR9%!Xp1oOJzm(vbLvT^$IKp@+W2=-}qTzTgVtQ!#Y7Gxz}stUIm<1;oBQ^Sh2X{F4ibaOOx;5ZGSNK z0maF^@(UtV$=p6DXLgRURwF95C=|U8?osGhgOED*b z7woJ_PWXBD>V-NjQAm{~T%sjyJ{5tn2f{G%?J!KRSrrGvQ1(^`YLA5B!~eycY(e5_ z*%aa{at13SxC(=7JT7$IQF~R3sy`Nn%EMv!$-8ZEAryB*yB1k&stni)=)8-ODo41g zkJu~roIgAih94tb=YsL%iH5@^b~kU9M-=aqgXIrbtxMpFy5mekFm#edF9z7RQ6V}R zBIhbXs~pMzt0VWy1Fi$^fh+1xxLDoK09&5&MJl(q#THjPm(0=z2H2Yfm^a&E)V+a5 zbi>08u;bJsDRUKR9(INSc7XyuWv(JsD+BB*0hS)FO&l&7MdViuur@-<-EHw>kHRGY zqoT}3fDv2-m{NhBG8X}+rgOEZ;amh*DqN?jEfQdqxdj08`Sr=C-KmT)qU1 z+9Cl)a1mgXxhQiHVB}l`m;-RpmKy?0*|yl?FXvJkFxuu!fKlcmz$kN(a}i*saM3nr z0!;a~_%Xqy24IxA2rz<+08=B-Q|2PT)O4;EaxP^6qixOv7-cRh?*T?zZU`{nIM-at zTKYWr9rJ=tppQ9I#Z#mLgINVB!pO-^FOcvFw6NhV0gztuO?g ztoA*C-52Q-Z-P#xB4HAY3KQVd%dz1S4PA3vHp0aa=zAO?FCt zC_GaTyVBg2F!bBr3U@Zy2iJgIAt>1sf$JWA9kh{;L+P*HfUBX1Zy{4MgNbDfBV_ly z!y#+753arsZUt@366jIC0klaC@ckuk!qu=pAyf7&QmiBUT^L1&tOHzsK)4n|pmrVT zs2($4=?s~VejTFHbFdDOwG;_58LkIj1Fh@{glkO#F1>a==ymJS$z;gdedT1zPx4Kj ztjS`y_C}%af-RtpehdQDt3a<=W5C4$)9W@QAse;WUry$WYmr51ml9lkeunUrE`-3e zmq1SgSOPNEE-Mf+AGJ$g0M;3@w!$Ej;hMh=v=I+Lpz^n%Pg^MgwyqOkNyu2c^of)C z1~ALor3}}+RiF*K4+4{(1%1j3pif1>sv0r^mTZ?5Jd-It!tfPfiG_p$AY*Vfak%FG z4z#;wLtw&E&?}w+eKG^=#jF7HQzr8rV0mY<1YAJ_uGz~$E13p?F^fPSzXSn$8UcI$ z8er9{5w5iv0qf8%70zV71T1IBB1N}R5Kp%NO0=5wJalZt8;xYp;b{1K) zHY>2wW-`Sl{=NpR%iu3(u6l&)rc%%cSA#aV7WCowfbFR4wcc{LQZv~o1u_`}EJA3>ki`?9CKYTA!rhO)if*zRdd}Kn zEPfYbhoVE~!FI_2YbC5qAj1kq;xP6%J8+?2PAs?`V3}nyFVD#sV3+uP`pi}{$l9U^ zSz}_M9f7RgnnRhaoIJgT8us!1aB&4!*vYF07Hp&}L zCRlop0oK4DL@ISz{2_BPlezc;xj2|I z23RlDNpi9LgTG_#(w%cMaS)%N`e>~1&a3<{Xy}>?WbF>OOLuO+j&hc^YohQ$4F&ze z+hwnro1puQjnKm;vFG~o>`kCeUIlkA-2tI?WBKCFLMBY=J{hpSsQ=PDtU$=duS_hq zHpymHt^uuV1q@uc4bFb{MdG*|VoW@15Osrqt2@8ll0qO=j*uOXn{M0UJX#SUztui9FN4)K3{9!y8PC-AHHvpVTU;x|-7P+taAtyglk#rjlH2 z5Gq8ik}BPaGiM{#Woyg;*&N9R2{J0V+WGB69cEtH7F?U~Kbi6ksi*`CFXsi931q7Y zGO82?whBhN%w1iDetv%~wM*Y;E^)@Vl?VDj-f*RX>{;o_=$fU!&KAXbuadYZ46Zbg z&6jMF=49$uL^73y;;N5jaHYv)BTyfh&`qVLYn?`o6BCA_z-0niZz=qPG!vonK3MW_ zo$V96zM!+kJRs{P-5-rQVse0VBH*n6A58)4uc&gfHMa{gIhV2fGf{st>E8sKyP-$8zp~wJX^A*@DI&-;8>gANXZj zU)R+Y)PB?=)a|Kj>8NXEu^S_h^7R`~Q&7*Kn!xyvzVv&^>?^iu;S~R2e-2fJx-oUb cX)(b1KSk$MOV07*qoM6N<$f&6$jw%VRuvdN2+38CZWny1cRtlsl+0_KtW)EU14Ei(F!UtWuj4IK+3{sK@>rh zs1Z;=(DD&U6+tlyL?UnHVN^&g6QhFi2#HS+*qz;(>63G(`|jRtW|nz$Pv7qTovP!^ zP_jES{mr@O-02w%!^a?^1ZP!_KmQiz0L~jZ=W@Qt`8wzOoclQsAS<5YdH;a(4bGLE zk8s}1If(PSIgVi!XE!5kA?~z*sobvNyohr;=Q_@h2@$6Flyej3J)D-6YfheRGl`HEcPk|~huT_2-U?PfL=4BPV)f1o!%rQ!NMt_MYw-5bUSwQ9Z&zC>u zOrl~UJglJNa%f50Ok}?WB{on`Ci`p^Y!xBA?m@rcJXLxtrE0FhRF3d*ir>yzO|BD$ z3V}HpFcCh6bTzY}Nt_(W%QYd3NG)jJ4<`F<1Od) zfQblTdC&h2lCz`>y?>|9o2CdvC8qZeIZt%jN;B7Hdn2l*k4M4MFEtq`q_#5?}c$b$pf_3y{Y!cRDafZBEj-*OD|gz#PBDeu3QoueOesLzB+O zxjf2wvf6Wwz>@AiOo2mO4=TkAV+g~%_n&R;)l#!cBxjuoD$aS-`IIJv7cdX%2{WT7 zOm%5rs(wqyPE^k5SIpUZ!&Lq4<~%{*>_Hu$2|~Xa;iX*tz8~G6O3uFOS?+)tWtdi| zV2b#;zRN!m@H&jd=!$7YY6_}|=!IU@=SjvGDFtL;aCtw06U;-v^0%k0FOyESt z1Wv$={b_H&8FiRV?MrzoHWd>%v6KTRU;-v^Miiz+@q`(BoT!+<37CKhoKb)|8!+RG z6BQFU^@fRW;s8!mOf2QViKQGk0TVER6EG1`#;Nm39Do^PoT!+<37AD!%oJe86(=et zZ~|sLzU>V-qYiU6V8$0GmU7_K8|Fd0B?+9Un1BhKAz#V~Fk^`mJtlCX#{^8^M8!me z8Yg;8-~>!e<-iG;h*0B1kBKm}hItVGY6WnjVpgnTTAC$rqQ^v)4KvOtpY|sIj@WYg zyw##ZZ5AC2IKNC;^hwg9BPk0wLStlmBr;E|$5GoAo$&Ui_;S9WY62n3)i49|T%C#i017z3J=$RF|KyZWnci*@lW4 z=AKhNN6+m`Q!V3Ye68|8y@%=am>YD0nG99M)NWc20%)gwO!96j7muR}Fr&54SxKP2 zP30S~lt=a*qDlbu3+Av57=9v&vr<6g0&`!8E2fq>I|EJGKs}t|{h7+KT@)LfIV-3K zK)r_fr2?}FFyn*MYoLC>oV-J~eavL2ho4a4^r{E-8m2hi>~hA?_vIG4a*KT;2eyl1 zh_hUvUJpNCFwBvRq5BI*srSle>c6%n`#VNsyC|MGa{(P&08p=C9+WUw9Hl<1o9T4M zdD=_C0F7#o8A_bRR?sFNmU0R6tW`ElnF8p53IdHo#S9(JoZCz}fHwJ6F<&?qrpVqE zte|m%89JQD+XwaPU#%#lVs-@-OL);|MdfINd6!XwP2h(eyafTUsoRkA%&@fe?9m@jw-v(yTTiV2(*fthQH9}SqmsRPVnwwbV$1E(_lkmo&S zF-truCU914_$jpqjr(>Ha4HkM4YMT>m~NosUu&UZ>zirfHo%N6PPs9^_o$WqPA0#5 z%tG>qFCL+b*0s?sZ;Sht0nE7Kl>OVXy=gjWxxK;OJ3yGd7-pZf7JYNcZo2*1SF`u6 zHJyRRxGw9mDlOiXqVMsNe#WX`fC`vrtjSQ%KmLcl(lC>ZOQzG^%iql2w-f_K@r?OE zwCICifM#L-HJyc7Gm>Ern?+Sk3&|Khmu4(~3qa$(m6Ub^U0E5RHq49za|XklN#?kP zl;EstdW?(_4D>kwjWy2f!LM)y?F94kyU3`W!6+AyId-89v}sXJpuic^NLL7GJItl~ zsiuB98AI-(#Mnm|=A-R6&2fwJ0JVSY#Q>&3$zFh|@;#%0qeF=j5Ajq@4i0tIIW z&}sk$&fGwoJpe&u-JeGLi^r?dO`m=y(QO{@h zQqAC7$rvz&5+mo3IqE?h=a~6m>%r5Quapvzq;{y~p zJpyXOBgD9VrW7@#p6l7O?o3feml(DtSL>D^R) zZUY%T2b0-vBAFN7VB;M88!~HuOXi4KcI6aRQ&h|XQ0A?m%j2=l1f0cGP}h(oVfJ`N zz#PpmFC*ieab)zJK<4?^k=g%OjPnkANzbAbmGZHoVRk*mTfm75s_cWVa`l*f$B@xu z5E*?&@seIo#*Y~1rBm!7sF9~~u6Wrj5oICUOuz}CS)jdNIznfzCA(stJ(7$c^e5wN z?lt>eYgbA!kvAR7zYSD&*r1$b|(@;9dcZ^67R0 zXAXJKa|5Sdmj!g578Nwt6d$sXuc&MWezA0Whd`94$h{{?1IwXP4)Tx4obDK%xoFZ_Z zjjHJ_P@R_e5blG@yEjnaJb`l;s%Lb2&=8$&Ct-fV`E^4CUs)=jTk!I}2d&n!f@)bm z@ z_4Dc86+3l2*p|~;o-Sb~oXb_RuLmoifDU^&Te$*FevycC0*nE3Xws8gsWp|Rj2>SM zns)qcYj?^2sd8?N!_w~4v+f-HCF|a$TNZDoNl$I1Uq87euoNgKb6&r26TNrfkUa@o zfdiFA@p{K&mH3b8i!lcoz)V{n8Q@g(vR4ns4r6w;K z>1~ecQR0-<^J|Ndg5fvVUM9g;lbu-){#ghGw(fg>L zh)T5Ljb%lWE;V9L!;Cqk>AV1(rULYF07ZBJbGb9qbSoLAd;in9{)95YqX$J43-dY7YU*k~vrM25 zxh5_IqO0LYZW%oxQ5HOzmk4x{atE*vipUk}sh88$b2tn?!ujEHn`tQLe&vo}nMb&{ zio`xzZ&GG6&ZyN3jnaQy#iVqXE9VT(3tWY$n-)uWDQ|tc{`?fq2F`oQ{;d3aWPg4Hp-(iE{ry>MIPWL> iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 0000000..89c2725 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/LaunchScreen.storyboard b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..f2e259c --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/Main.storyboard b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Info.plist b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Info.plist new file mode 100644 index 0000000..917c02b --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Info.plist @@ -0,0 +1,55 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Flutter Starter + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + app_test + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CFBundleLocalizations + + fr + en + es + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + CADisableMinimumFrameDurationOnPhone + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Runner-Bridging-Header.h b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..308a2a5 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/bricks/flutter_starter/__brick__/{{name}}/l10n.yaml b/bricks/flutter_starter/__brick__/{{name}}/l10n.yaml new file mode 100644 index 0000000..90886d0 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/l10n.yaml @@ -0,0 +1,6 @@ +# This file is used to generate AppLocalisations from the +# .arb files inside lib/utils/assets/l10n folder + +arb-dir: lib/l10n +template-arb-file: app_en.arb +output-localisation-file: app_localizations.dart diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/api_sdk.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/api_sdk.dart new file mode 100644 index 0000000..3871625 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/api_sdk.dart @@ -0,0 +1,39 @@ +import 'package:{{name}}/api_sdk/dio/dio_service.dart'; +import 'package:{{name}}/{{name}}.dart'; + +import 'http/http_helpers/http_apis.dart'; + +// example network calls made from app + +/// This file can be omitted and Service can directly use at repository level +class ApiSdk { + // Http Service + static loginWithEmailAndPassword(dynamic body) async { + final response = await HttpService.postData(HttpApis.login, body); + return response; + } + + // Http Service + static signUpWithEmailAndPassword(dynamic body) async { + final response = await HttpService.postData(HttpApis.register, body); + return response; + } + + // Http Service + static getUserData(int id) async { + final response = await HttpService.getData(HttpApis.users(id)); + return response; + } + + // Dio Service + static getUserDataDio(int id) async { + final response = await DioService.getUserData(id); + return response; + } + + // Dio Service + static postUserDataDio(dynamic body) async { + final response = await DioService.postUserData(body); + return response; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/README.md b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/README.md new file mode 100644 index 0000000..ba1b80d --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/README.md @@ -0,0 +1,23 @@ +# Dio + +A powerful Http client for Dart, which supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, Timeout etc. + +## Folders + +- dio_helpers (Contains all the information about base urls, api calls and exception handling) +- models. (Contains the user model and an auto generated Json serializable file) + +### dio_helpers + +- [dio_apis.dart](api_sdk/dio/dio_helpers/dio_apis.dart) - Contains all the api tags. +- [dio_client.dart](api_sdk/dio/dio_helpers/dio_client.dart) - DioClient class is responsible for handling all the network call methods. +- [dio_interceptor.dart](api_sdk/dio/dio_helpers/dio_interceptor.dart) - DioInterceptor can intercept requests/responses/errors before they are handled by then or catchError. +- [dio_exceptions.dart](api_sdk/dio/dio_helpers/dio_exceptions.dart) - DioExceptions handles all the exceptions for different error codes. + +### models + +- [user_model.dart](api_sdk/dio/models/user_model.dart) - A data class that contains the serialized form of a user model. + +### dio_api_sdk + +Contains two classes DioApi and DioService that will eventually call the network methods. **DioApi** class will create a dio instance which will have interceptors added to it. **DioService** will eventually call the network methods present in [dio_service.dart](api_sdk/dio/dio_service.dart) diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_apis.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_apis.dart new file mode 100644 index 0000000..46e07dd --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_apis.dart @@ -0,0 +1,5 @@ +class DioApis { + static const String users = '/users/{id}'; + static const String register = '/register'; + static const String login = '/login'; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart new file mode 100644 index 0000000..2dad8da --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart @@ -0,0 +1,17 @@ +import 'package:{{name}}/api_sdk/dio/models/user_model.dart'; +import 'package:{{name}}/config/config.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:retrofit/retrofit.dart'; +import 'package:dio/dio.dart'; +part 'dio_client.g.dart'; + +@RestApi(baseUrl: baseUrl) +abstract class DioClient { + factory DioClient(Dio dio, {String baseUrl}) = _DioClient; + + @GET(DioApis.users) + Future getUsers(@Path("id") int id); + + @POST(DioApis.login) + Future createPost(@Body() dynamic body); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart new file mode 100644 index 0000000..39fdf60 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart @@ -0,0 +1,63 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'dio_client.dart'; + +// ************************************************************************** +// RetrofitGenerator +// ************************************************************************** + +// ignore_for_file: unnecessary_brace_in_string_interps,no_leading_underscores_for_local_identifiers + +class _DioClient implements DioClient { + _DioClient(this._dio, {this.baseUrl}) { + baseUrl ??= 'https://reqres.in/api'; + } + + final Dio _dio; + + String? baseUrl; + + @override + Future getUsers(id) async { + const _extra = {}; + final queryParameters = {}; + final _headers = {}; + final _data = {}; + final _result = await _dio.fetch>( + _setStreamType( + Options(method: 'GET', headers: _headers, extra: _extra) + .compose(_dio.options, '/users/${id}', + queryParameters: queryParameters, data: _data) + .copyWith(baseUrl: baseUrl ?? _dio.options.baseUrl))); + final value = DioResponseData.fromJson(_result.data!); + return value; + } + + @override + Future createPost(body) async { + const _extra = {}; + final queryParameters = {}; + final _headers = {}; + final _data = body; + final _result = await _dio.fetch(_setStreamType( + Options(method: 'POST', headers: _headers, extra: _extra) + .compose(_dio.options, '/login', + queryParameters: queryParameters, data: _data) + .copyWith(baseUrl: baseUrl ?? _dio.options.baseUrl))); + final value = _result.data; + return value; + } + + RequestOptions _setStreamType(RequestOptions requestOptions) { + if (T != dynamic && + !(requestOptions.responseType == ResponseType.bytes || + requestOptions.responseType == ResponseType.stream)) { + if (T == String) { + requestOptions.responseType = ResponseType.plain; + } else { + requestOptions.responseType = ResponseType.json; + } + } + return requestOptions; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_exceptions.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_exceptions.dart new file mode 100644 index 0000000..f5777f5 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_exceptions.dart @@ -0,0 +1,43 @@ +import 'package:dio/dio.dart'; + +class DioExceptions implements Exception { + final String message; + final RequestOptions requestOptions; + + DioExceptions({required this.message, required this.requestOptions}); +} + +class TimeOutException extends DioExceptions { + TimeOutException(String message, RequestOptions requestOptions) + : super(message: message, requestOptions: requestOptions); +} + +class BadRequestException extends DioExceptions { + BadRequestException(String message, RequestOptions requestOptions) + : super(message: message, requestOptions: requestOptions); +} + +class UnauthorisedException extends DioExceptions { + UnauthorisedException(String message, RequestOptions requestOptions) + : super(message: message, requestOptions: requestOptions); +} + +class FileNotFoundException extends DioExceptions { + FileNotFoundException(String message, RequestOptions requestOptions) + : super(message: message, requestOptions: requestOptions); +} + +class InternalServerException extends DioExceptions { + InternalServerException(String message, RequestOptions requestOptions) + : super(message: message, requestOptions: requestOptions); +} + +class BadGateWayException extends DioExceptions { + BadGateWayException(String message, RequestOptions requestOptions) + : super(message: message, requestOptions: requestOptions); +} + +class ConnectionException extends DioExceptions { + ConnectionException(String message, RequestOptions requestOptions) + : super(message: message, requestOptions: requestOptions); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart new file mode 100644 index 0000000..d02c8a9 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart @@ -0,0 +1,78 @@ +import 'package:dio/dio.dart'; +import 'package:{{name}}/{{name}}.dart'; + +class DioInterceptor extends Interceptor { + @override + void onRequest(RequestOptions options, RequestInterceptorHandler handler) { + // Do something before request is sent. + super.onRequest(options, handler); + } + + @override + void onResponse(Response response, ResponseInterceptorHandler handler) { + // Do something with the response data. + super.onResponse(response, handler); + } + + @override + void onError(DioError err, ErrorInterceptorHandler handler) { + // Do something with the response error. + _handleError(err); + super.onError(err, handler); + } + + _handleError(DioError err) { + switch (err.type) { + case DioErrorType.connectTimeout: + case DioErrorType.receiveTimeout: + case DioErrorType.sendTimeout: + throw TimeOutException(err.message, err.requestOptions); + case DioErrorType.response: + switch (err.response?.statusCode) { + case 400: + throw BadRequestException( + err.error.toString(), + err.requestOptions, + ); + case 401: + throw UnauthorisedException( + err.error.toString(), + err.requestOptions, + ); + case 403: + throw UnauthorisedException( + err.error.toString(), + err.requestOptions, + ); + case 404: + throw FileNotFoundException( + err.error.toString(), + err.requestOptions, + ); + case 500: + throw InternalServerException( + err.error.toString(), + err.requestOptions, + ); + case 502: + throw BadGateWayException( + err.error.toString(), + err.requestOptions, + ); + case 503: + throw BadGateWayException( + err.error.toString(), + err.requestOptions, + ); + } + break; + case DioErrorType.other: + throw ConnectionException( + 'Please check your network connection', + err.requestOptions, + ); + default: + throw err; + } + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart new file mode 100644 index 0000000..8d40d45 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart @@ -0,0 +1,38 @@ +import 'package:dio/dio.dart'; +import 'package:{{name}}/api_sdk/dio/models/user_model.dart'; +import 'package:{{name}}/{{name}}.dart'; + +class DioApi { + DioApi._internal(); + + static final _singleton = DioApi._internal(); + + factory DioApi() => _singleton; + + static Dio createDio() { + var dio = Dio(BaseOptions( + receiveTimeout: 15000, + connectTimeout: 15000, + sendTimeout: 15000, + )); + + dio.interceptors.addAll({ + DioInterceptor(), + }); + return dio; + } +} + +class DioService { + static getUserData(int id) async { + final client = DioClient(DioApi.createDio()); + final response = await client.getUsers(id); + return response; + } + + static postUserData(dynamic body) async { + final client = DioClient(DioApi.createDio()); + final response = await client.createPost(body); + return response; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart new file mode 100644 index 0000000..a008837 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart @@ -0,0 +1,40 @@ +import 'package:json_annotation/json_annotation.dart'; +part 'user_model.g.dart'; + +@JsonSerializable() +class DioResponseData { + Data? data; + Support? support; + + DioResponseData({this.data, this.support}); + + factory DioResponseData.fromJson(Map json) => + _$DioResponseDataFromJson(json); + Map toJson() => _$DioResponseDataToJson(this); +} + +@JsonSerializable() +class Data { + int? id; + String? email; + String? firstName; + String? lastName; + String? avatar; + + Data({this.id, this.email, this.firstName, this.lastName, this.avatar}); + + factory Data.fromJson(Map json) => _$DataFromJson(json); + Map toJson() => _$DataToJson(this); +} + +@JsonSerializable() +class Support { + String? url; + String? text; + + Support({this.url, this.text}); + + factory Support.fromJson(Map json) => + _$SupportFromJson(json); + Map toJson() => _$SupportToJson(this); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.g.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.g.dart new file mode 100644 index 0000000..5ed5c03 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.g.dart @@ -0,0 +1,49 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'user_model.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +DioResponseData _$DioResponseDataFromJson(Map json) => + DioResponseData( + data: json['data'] == null + ? null + : Data.fromJson(json['data'] as Map), + support: json['support'] == null + ? null + : Support.fromJson(json['support'] as Map), + ); + +Map _$DioResponseDataToJson(DioResponseData instance) => + { + 'data': instance.data, + 'support': instance.support, + }; + +Data _$DataFromJson(Map json) => Data( + id: json['id'] as int?, + email: json['email'] as String?, + firstName: json['firstName'] as String?, + lastName: json['lastName'] as String?, + avatar: json['avatar'] as String?, + ); + +Map _$DataToJson(Data instance) => { + 'id': instance.id, + 'email': instance.email, + 'firstName': instance.firstName, + 'lastName': instance.lastName, + 'avatar': instance.avatar, + }; + +Support _$SupportFromJson(Map json) => Support( + url: json['url'] as String?, + text: json['text'] as String?, + ); + +Map _$SupportToJson(Support instance) => { + 'url': instance.url, + 'text': instance.text, + }; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/README.md b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/README.md new file mode 100644 index 0000000..18ceee2 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/README.md @@ -0,0 +1,17 @@ +# Http + +A composable, Future-based library for making HTTP requests that contains a set of high-level functions and classes that make it easy to consume HTTP resources. + +## Folders + +- http_helpers (Contains all the information about base urls, api calls and exception handling) + +### http_helpers + +- [http_client.dart](api_sdk/http/http_helpers/http_client.dart) - HttpClient class is responsible for handling all the network call methods. +- [http_exception.dart](api_sdk/http/http_helpers/http_exception.dart) - HttpExceptions handles all the exceptions for different error codes. +- [http_interceptor.dart](api_sdk/http/http_helpers/http_interceptor.dart) - HttpInterceptor lets you intercept the different requests and responses. + +### http_api_sdk + +Contains two classes HttpApi and HttpService that will eventually call the network methods. **HttpApi** class will create a client instance which will have interceptors added to it. **HttpService** will eventually call the network methods present in [http_service.dart](api_sdk/http/http_service.dart) diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_apis.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_apis.dart new file mode 100644 index 0000000..6342cce --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_apis.dart @@ -0,0 +1,5 @@ +class HttpApis { + static String users(int id) => '/users/$id'; + static const String register = '/register'; + static const String login = '/login'; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart new file mode 100644 index 0000000..40a3933 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart @@ -0,0 +1,100 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:{{name}}/config/config.dart'; +import 'package:http/http.dart' as http; +import 'package:http/http.dart'; + +import 'http_exception.dart'; + +class HttpClient { + final Client client; + HttpClient({required this.client}); + Future get( + String url, { + Map? headers, + bool isTokenRequired = false, + }) async { + http.Response? response; + dynamic responseJson; + + try { + response = + await http.get(Uri.parse(baseUrl + url), headers: headers ?? {}); + + responseJson = _returnResponse(response); + } on SocketException { + throw FetchDataException('No Internet connection'); + } + return responseJson; + } + + Future post(String url, + {Map? headers, Object? body}) async { + http.Response? response; + dynamic responseJson; + try { + response = await http.post(Uri.parse(baseUrl + url), + headers: headers ?? {}, body: body); + responseJson = _returnResponse(response); + } on SocketException { + throw FetchDataException('No Internet connection'); + } + + return responseJson; + } + + Future put(String url, + {Map? headers, Object? body}) async { + http.Response? response; + dynamic responseJson; + try { + response = await http.put(Uri.parse(baseUrl + url), + headers: headers ?? {}, body: body); + responseJson = _returnResponse(response); + } on SocketException { + throw FetchDataException('No Internet connection'); + } + + return responseJson; + } + + Future delete(String url, {Map? headers}) async { + http.Response? response; + dynamic responseJson; + try { + response = + await http.delete(Uri.parse(baseUrl + url), headers: headers ?? {}); + responseJson = _returnResponse(response); + } on SocketException { + throw FetchDataException('No Internet connection'); + } + + return responseJson; + } +} + +dynamic _returnResponse(http.Response response) { + switch (response.statusCode) { + case 200: + var responseJson = json.decode(response.body.toString()); + return responseJson; + case 400: + throw BadRequestException(response.body.toString()); + case 401: + throw UnauthorisedException(response.body.toString()); + case 403: + throw UnauthorisedException(response.body.toString()); + case 404: + throw FileNotFoundException(response.body.toString()); + case 500: + throw InternalServerException(response.body.toString()); + case 502: + throw BadGateWayException(response.body.toString()); + case 503: + throw BadGateWayException(response.body.toString()); + default: + return FetchDataException( + 'Error occured while Communication with Server with StatusCode : ${response.statusCode}'); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_exception.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_exception.dart new file mode 100644 index 0000000..59c8695 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_exception.dart @@ -0,0 +1,42 @@ +class HttpException implements Exception { + final dynamic _message; + final dynamic _prefix; + + HttpException([this._message, this._prefix]); + + @override + String toString() { + return "$_prefix$_message"; + } +} + +class FetchDataException extends HttpException { + FetchDataException([String? message]) + : super(message, "Error During Communication: "); +} + +class BadRequestException extends HttpException { + BadRequestException([message]) : super(message, "Invalid Request: "); +} + +class UnauthorisedException extends HttpException { + UnauthorisedException([message]) : super(message, "Unauthorised: "); +} + +class InvalidInputException extends HttpException { + InvalidInputException([String? message]) : super(message, "Invalid Input: "); +} + +class FileNotFoundException extends HttpException { + FileNotFoundException([String? message]) : super(message, "File not found: "); +} + +class InternalServerException extends HttpException { + InternalServerException([String? message]) + : super(message, "Internal Server Exception: "); +} + +class BadGateWayException extends HttpException { + BadGateWayException([String? message]) + : super(message, "Bad Gateway Exception: "); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_interceptor.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_interceptor.dart new file mode 100644 index 0000000..0850005 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_interceptor.dart @@ -0,0 +1,15 @@ +import 'package:http_interceptor/http_interceptor.dart'; + +class HttpInterceptor extends InterceptorContract { + @override + Future interceptRequest({required RequestData data}) { + // triggers before the http request is called + throw UnimplementedError(); + } + + @override + Future interceptResponse({required ResponseData data}) { + // triggers after the request is called + throw UnimplementedError(); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart new file mode 100644 index 0000000..cb9bd68 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart @@ -0,0 +1,40 @@ +import 'package:{{name}}/config/config.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:http/http.dart'; +import 'package:http_interceptor/http/intercepted_client.dart'; + +class HttpApi { + HttpApi._internal(); + + static final _singleton = HttpApi._internal(); + + factory HttpApi() => _singleton; + + static Client createHttp() { + Client httpClient = InterceptedClient.build(interceptors: [ + HttpInterceptor(), + ]); + return httpClient; + } +} + +class HttpService { + static getData(String url) async { + final client = HttpClient(client: HttpApi.createHttp()); + final response = await client.get(url); + return response; + } + + static postData(String url, dynamic body) async { + final client = HttpClient(client: HttpApi.createHttp()); + final response = await client.post(url, body: body); + + return response; + } + + static putData(String url, dynamic body) async { + final client = HttpClient(client: HttpApi.createHttp()); + final response = await client.put(url, body: body); + return response; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart new file mode 100644 index 0000000..17e57d6 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:{{name}}/{{name}}.dart'; + +class App extends StatelessWidget { + const App({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, state) { + /// Without go_router we should return MaterialApp() with + /// {onGenerateRoute: routes} + /// routes from routes.dart + return MaterialApp.router( + debugShowCheckedModeBanner: false, + title: 'Hello World!', + theme: ThemeConfig.lightTheme, + darkTheme: ThemeConfig.darkTheme, + themeMode: state is SetTheme + ? state.appTheme == AppTheme.light + ? ThemeMode.light + : ThemeMode.dark + : ThemeMode.light, + // onGenerateRoute: routes, + routeInformationParser: router.routeInformationParser, + routerDelegate: router.routerDelegate, + routeInformationProvider: router.routeInformationProvider, + + localizationsDelegates: const [ + AppLocalizations.delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ], + supportedLocales: AppLocalizations.supportedLocales, + // locale: const Locale('fr'), + ); + }, + ); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/config/config.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/config/config.dart new file mode 100644 index 0000000..19ce7b6 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/config/config.dart @@ -0,0 +1 @@ +const String baseUrl = "https://reqres.in/api"; // User authetication diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_en.arb b/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_en.arb new file mode 100644 index 0000000..d99a38f --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_en.arb @@ -0,0 +1,4 @@ +{ + "homeText" : "Home", + "flutterStarterText" : "Flutter Starter" +} \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_es.arb b/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_es.arb new file mode 100644 index 0000000..fe37fac --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_es.arb @@ -0,0 +1,4 @@ +{ + "homeText" : "SHome", + "flutterStarterText" : "SFlutter Starter" +} \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_fr.arb b/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_fr.arb new file mode 100644 index 0000000..5c8d8d6 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_fr.arb @@ -0,0 +1,4 @@ +{ + "homeText" : "FHome", + "flutterStarterText" : "FFlutter Starter" +} \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart new file mode 100644 index 0000000..6bbe7d4 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart @@ -0,0 +1,25 @@ +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter/material.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + await SharedPrefs.instance.init(); + final authenticationService = AuthenticationRepository(); + + runApp( + MultiBlocProvider( + providers: [ + BlocProvider( + create: (BuildContext context) => AuthenticationBloc( + authenticationService: authenticationService, + ), + ), + BlocProvider( + create: (BuildContext context) => UpdateThemeBloc(), + ), + ], + child: const App(), + ), + ); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart new file mode 100644 index 0000000..37d5d7d --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart @@ -0,0 +1,53 @@ +import 'package:flutter/material.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:go_router/go_router.dart'; + +final GoRouter router = GoRouter( + initialLocation: '/', + routes: [ + GoRoute( + path: '/', + builder: (BuildContext context, GoRouterState state) { + return const SplashScreen(); + }, + ), + GoRoute( + path: '/home', + builder: (BuildContext context, GoRouterState state) { + return const HomeScreen(); + }, + ), + GoRoute( + path: '/login', + builder: (BuildContext context, GoRouterState state) { + return const LoginScreen(); + }, + ), + GoRoute( + path: '/signup', + builder: (BuildContext context, GoRouterState state) { + return const SignUpScreen(); + }, + ), + ], +); + + + +/// routes for the app Without go_router +// import 'package:{{name}}/{{name}}.dart'; + +// import 'package:flutter/material.dart'; + +// Route routes(RouteSettings settings) { +// switch (settings.name) { +// case '/': +// return MaterialPageRoute(builder: (_) => const SplashScreen()); +// case '/home': +// return MaterialPageRoute(builder: (_) => const HomeScreen()); +// case '/auth': +// return MaterialPageRoute(builder: (_) => const AuthenticationScreen()); +// default: +// return MaterialPageRoute(builder: (_) => const SplashScreen()); +// } +// } \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart new file mode 100644 index 0000000..7ba9419 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart @@ -0,0 +1,179 @@ +// home screen contents +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:go_router/go_router.dart'; + +class HomeScreen extends StatefulWidget { + const HomeScreen({Key? key}) : super(key: key); + + @override + State createState() => _HomeScreenState(); +} + +class _HomeScreenState extends State { + late final AuthenticationBloc authenticationBloc; + bool switchValue = false; + + @override + void initState() { + super.initState(); + authenticationBloc = BlocProvider.of(context); + authenticationBloc.add(const GetUserData()); + switchValue = BlocProvider.of(context).state.props.first == + AppTheme.light + ? false + : true; + } + + @override + Widget build(BuildContext context) { + return WillPopScope( + onWillPop: () async => false, + child: BlocListener( + bloc: authenticationBloc, + listener: (context, state) { + if (state is UserLogoutState) { + context.go('/login'); + } + }, + child: BlocBuilder( + bloc: authenticationBloc, + builder: (BuildContext context, AuthenticationState state) { + if (state is SetUserData) { + return Scaffold( + appBar: AppBar( + backgroundColor: Theme.of(context).primaryColor, + centerTitle: true, + title: Text( + AppLocalizations.of(context)?.flutterStarterText ?? + 'Flutter Starter', + style: Theme.of(context) + .textTheme + .headline3! + .copyWith(color: Theme.of(context).backgroundColor), + ), + actions: [ + IconButton( + key: const Key('logoutButton'), + icon: const Icon(Icons.logout), + onPressed: () { + authenticationBloc.add(const UserLogOut()); + }), + ], + ), + backgroundColor: Theme.of(context).backgroundColor, + body: Center( + child: Text( + AppLocalizations.of(context)?.homeText ?? 'Home', + style: Theme.of(context).textTheme.headline6), + ), + drawer: Drawer( + backgroundColor: Theme.of(context).backgroundColor, + child: ListView( + padding: EdgeInsets.zero, + children: [ + DrawerHeader( + decoration: BoxDecoration( + color: Theme.of(context).primaryColor, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + CachedNetworkImage( + imageUrl: + state.currentUserData.data!.avatar, + imageBuilder: (context, imageProvider) => + Container( + width: 65.toResponsiveWidth, + height: 65.toResponsiveHeight, + decoration: BoxDecoration( + shape: BoxShape.circle, + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover), + ), + ), + placeholder: (context, url) => + const CircularProgressIndicator(), + errorWidget: (context, url, error) => + Image.network( + AllImages().kDefaultImage, + ), + ), + Switch( + key: const Key('themeSwitch'), + activeColor: + Theme.of(context).backgroundColor, + value: switchValue, + onChanged: (value) { + setState(() { + switchValue = value; + }); + + BlocProvider.of(context) + .add(UpdateTheme( + appTheme: value + ? AppTheme.dark + : AppTheme.light)); + }, + ) + ], + ) + ], + ), + ), + ListTile( + dense: true, + leading: Text("Name", + style: Theme.of(context).textTheme.headline6), + title: Text( + '${state.currentUserData.data!.firstName} ${state.currentUserData.data!.lastName}', + style: Theme.of(context) + .textTheme + .bodyText2! + .copyWith(fontSize: 12.toResponsiveFont)), + ), + ListTile( + dense: true, + leading: Text("Email", + style: Theme.of(context).textTheme.headline6), + title: Text(state.currentUserData.data!.email, + style: Theme.of(context) + .textTheme + .bodyText2! + .copyWith(fontSize: 12.toResponsiveFont)), + ), + ListTile( + leading: Text("Text", + style: Theme.of(context).textTheme.headline6), + title: Text(state.currentUserData.support!.text, + style: Theme.of(context) + .textTheme + .bodyText2! + .copyWith(fontSize: 12.toResponsiveFont)), + ), + ], + ), + ), + ); + } + return Scaffold( + body: Center( + child: CircularProgressIndicator( + color: Theme.of(context).primaryColor, + ), + ), + ); + }), + ), + ); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart new file mode 100644 index 0000000..404fcf0 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart @@ -0,0 +1,124 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:go_router/go_router.dart'; + +class LoginScreen extends StatefulWidget { + const LoginScreen({Key? key}) : super(key: key); + + @override + State createState() => _LoginScreenState(); +} + +class _LoginScreenState extends State { + late final AuthenticationBloc authenticationBloc; + + @override + void initState() { + super.initState(); + authenticationBloc = BlocProvider.of(context); + } + + void _showError(String error) async { + await Fluttertoast.showToast( + msg: error, + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM, + timeInSecForIosWeb: 3, + backgroundColor: Theme.of(context).errorColor, + textColor: Colors.white, + fontSize: 16.0); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: WillPopScope( + onWillPop: () async => false, + child: BlocListener( + bloc: authenticationBloc, + listener: (context, state) { + if (state is AuthenticationFailure) { + _showError(state.message); + } + if (state is AppAutheticated) { + context.go('/home'); + } + }, + child: BlocBuilder( + bloc: authenticationBloc, + builder: (BuildContext context, AuthenticationState state) { + return SafeArea( + child: Responsive.isDesktop(context) + ? Center( + child: Card( + elevation: 15, + child: SizedBox( + width: 500.toResponsiveWidth, + height: 650.toResponsiveHeight, + child: _authenticationForm(context, state)), + ), + ) + : SingleChildScrollView( + child: _authenticationForm(context, state), + ), + ); + }), + ), + ), + ); + } + + Widget _authenticationForm(BuildContext context, AuthenticationState state) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Center( + child: Image.asset( + AllImages().login, + width: 350.toResponsiveWidth, + height: 300.toResponsiveHeight, + )), + SizedBox(height: 12.toResponsiveHeight), + Container( + margin: EdgeInsets.symmetric(horizontal: 32.toResponsiveWidth), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Login', style: Theme.of(context).textTheme.headline1), + SizedBox(height: 15.toResponsiveHeight), + LoginForm( + authenticationBloc: authenticationBloc, + state: state, + ), + ], + ), + ), + SizedBox(height: 32.toResponsiveHeight), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'New here?', + style: Theme.of(context) + .textTheme + .bodyText2! + .copyWith(fontSize: 12.toResponsiveFont), + ), + InkWell( + child: Text( + ' Sign Up', + style: Theme.of(context).textTheme.bodyText2!.copyWith( + fontSize: 13.toResponsiveFont, + color: Theme.of(context).primaryColor), + ), + onTap: () { + context.push('/signup'); + }), + ], + ) + ], + ); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart new file mode 100644 index 0000000..089bf15 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart @@ -0,0 +1,106 @@ +import 'package:flutter/material.dart'; +import 'package:{{name}}/{{name}}.dart'; + +class LoginForm extends StatefulWidget { + final AuthenticationBloc authenticationBloc; + final AuthenticationState state; + const LoginForm( + {Key? key, required this.authenticationBloc, required this.state}) + : super(key: key); + @override + State createState() => _LoginFormState(); +} + +class _LoginFormState extends State { + final GlobalKey _key = GlobalKey(); + final _passwordController = TextEditingController(); + final _emailController = TextEditingController(); + // @override + // void initState() { + // // TODO: implement initState + // super.initState(); + + // _emailController.text = "eve.holt@reqres.in"; + // _passwordController.text = "pistol"; + // } + + @override + Widget build(BuildContext context) { + return Form( + key: _key, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + TextFormField( + // initialValue: "eve.holt@reqres.in", + key: const Key('emailField'), + cursorColor: Theme.of(context).textTheme.headline1!.color, + decoration: InputDecoration( + labelText: 'Email address', + isDense: true, + prefixIcon: Icon( + Icons.email, + size: 28.toResponsiveFont, + ), + ), + controller: _emailController, + keyboardType: TextInputType.emailAddress, + autocorrect: false, + validator: (value) { + if (value!.isEmpty) { + return 'Email is required.'; + } + return null; + }, + ), + SizedBox(height: 15.toResponsiveHeight), + TextFormField( + // initialValue: R"pistol", + key: const Key('passwordField'), + cursorColor: Theme.of(context).textTheme.headline1!.color, + decoration: InputDecoration( + labelText: 'Password', + isDense: true, + prefixIcon: Icon( + Icons.lock, + size: 28.toResponsiveFont, + )), + obscureText: true, + controller: _passwordController, + validator: (value) { + if (value!.isEmpty) { + return 'Password is required.'; + } + return null; + }, + ), + SizedBox(height: 18.toResponsiveHeight), + ElevatedButton( + key: const Key('loginButton'), + style: ElevatedButton.styleFrom( + primary: Theme.of(context).primaryColor, + ), + onPressed: () { + if (_key.currentState!.validate()) { + widget.authenticationBloc.add(UserLogin( + email: _emailController.text, + password: _passwordController.text)); + } else {} + }, + child: widget.state is AuthenticationLoading + ? CircularProgressIndicator( + backgroundColor: Theme.of(context).backgroundColor, + ) + : Text( + 'Login', + style: Theme.of(context) + .textTheme + .bodyText1! + .copyWith(fontSize: 15.toResponsiveFont), + ), + ) + ], + ), + ); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart new file mode 100644 index 0000000..f75ec42 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart @@ -0,0 +1,142 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:fluttertoast/fluttertoast.dart'; +import 'package:go_router/go_router.dart'; + +class SignUpScreen extends StatefulWidget { + const SignUpScreen({Key? key}) : super(key: key); + + @override + State createState() => _SignUpScreenState(); +} + +class _SignUpScreenState extends State { + late final AuthenticationBloc authenticationBloc; + + @override + void initState() { + super.initState(); + authenticationBloc = BlocProvider.of(context); + } + + void _showError(String error) async { + await Fluttertoast.showToast( + msg: error, + toastLength: Toast.LENGTH_SHORT, + gravity: ToastGravity.BOTTOM, + timeInSecForIosWeb: 3, + backgroundColor: Theme.of(context).errorColor, + textColor: Colors.white, + fontSize: 16.0); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: WillPopScope( + onWillPop: () async => false, + child: BlocListener( + bloc: authenticationBloc, + listener: (context, state) { + if (state is AuthenticationFailure) { + _showError(state.message); + } + if (state is AppAutheticated) { + context.go('/home'); + } + }, + child: BlocBuilder( + bloc: authenticationBloc, + builder: (BuildContext context, AuthenticationState state) { + return SafeArea( + child: Stack( + children: [ + Responsive.isDesktop(context) + ? Center( + child: Card( + elevation: 15, + child: SizedBox( + width: 500.toResponsiveWidth, + height: 650.toResponsiveHeight, + child: _authenticationForm(context, state)), + ), + ) + : SingleChildScrollView( + child: _authenticationForm(context, state), + ), + Positioned( + left: 6, + child: IconButton( + icon: Icon( + Icons.arrow_back_ios, + size: 28, + color: Theme.of(context).textTheme.headline1!.color, + ), + onPressed: () { + context.pop(); + }, + ), + ), + ], + )); + }, + ), + ), + ), + ); + } + + Widget _authenticationForm(BuildContext context, AuthenticationState state) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Center( + child: Image.asset( + AllImages().signup, + width: 260.toResponsiveWidth, + height: 250.toResponsiveHeight, + ), + ), + SizedBox(height: 12.toResponsiveHeight), + Container( + margin: EdgeInsets.symmetric(horizontal: 32.toResponsiveWidth), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Sign Up', style: Theme.of(context).textTheme.headline1), + SizedBox(height: 15.toResponsiveHeight), + SignUpForm( + authenticationBloc: authenticationBloc, + state: state, + ), + ], + ), + ), + SizedBox(height: 32.toResponsiveHeight), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Already have an account?', + style: Theme.of(context) + .textTheme + .bodyText2! + .copyWith(fontSize: 12.toResponsiveFont), + ), + InkWell( + child: Text( + ' Login', + style: Theme.of(context).textTheme.bodyText2!.copyWith( + fontSize: 13.toResponsiveFont, + color: Theme.of(context).primaryColor), + ), + onTap: () { + context.pop(); + }), + ], + ), + ], + ); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart new file mode 100644 index 0000000..78a77f0 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart @@ -0,0 +1,119 @@ +import 'package:flutter/material.dart'; +import 'package:{{name}}/{{name}}.dart'; + +class SignUpForm extends StatefulWidget { + final AuthenticationBloc authenticationBloc; + final AuthenticationState state; + const SignUpForm( + {Key? key, required this.authenticationBloc, required this.state}) + : super(key: key); + @override + State createState() => _SignUpFormState(); +} + +class _SignUpFormState extends State { + final GlobalKey _key = GlobalKey(); + final _passwordController = TextEditingController(); + final _emailController = TextEditingController(); + final _nameController = TextEditingController(); + + @override + Widget build(BuildContext context) { + return Form( + key: _key, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + TextFormField( + key: const Key('nameField'), + cursorColor: Theme.of(context).textTheme.headline1!.color, + decoration: InputDecoration( + labelText: 'Name', + isDense: true, + prefixIcon: Icon( + Icons.person, + size: 28.toResponsiveFont, + ), + ), + controller: _nameController, + keyboardType: TextInputType.name, + autocorrect: false, + validator: (value) { + if (value!.isEmpty) { + return 'Name is required.'; + } + return null; + }, + ), + SizedBox(height: 15.toResponsiveHeight), + TextFormField( + key: const Key('emailField'), + cursorColor: Theme.of(context).textTheme.headline1!.color, + decoration: InputDecoration( + labelText: 'Email address', + isDense: true, + prefixIcon: Icon( + Icons.email, + size: 28.toResponsiveFont, + ), + ), + controller: _emailController, + keyboardType: TextInputType.emailAddress, + autocorrect: false, + validator: (value) { + if (value!.isEmpty) { + return 'Email is required.'; + } + return null; + }, + ), + SizedBox(height: 15.toResponsiveHeight), + TextFormField( + key: const Key('passwordField'), + cursorColor: Theme.of(context).textTheme.headline1!.color, + decoration: InputDecoration( + labelText: 'Password', + isDense: true, + prefixIcon: Icon( + Icons.lock, + size: 28.toResponsiveFont, + )), + obscureText: true, + controller: _passwordController, + validator: (value) { + if (value!.isEmpty) { + return 'Password is required.'; + } + return null; + }, + ), + SizedBox(height: 18.toResponsiveHeight), + ElevatedButton( + key: const Key('signupButton'), + style: ElevatedButton.styleFrom( + primary: Theme.of(context).primaryColor, + ), + onPressed: () { + if (_key.currentState!.validate()) { + widget.authenticationBloc.add(UserSignUp( + email: _emailController.text, + password: _passwordController.text)); + } else {} + }, + child: widget.state is AuthenticationLoading + ? CircularProgressIndicator( + backgroundColor: Theme.of(context).backgroundColor, + ) + : Text( + 'Sign Up', + style: Theme.of(context) + .textTheme + .bodyText1! + .copyWith(fontSize: 15.toResponsiveFont), + ), + ) + ], + ), + ); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart new file mode 100644 index 0000000..d609cce --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart @@ -0,0 +1,48 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:go_router/go_router.dart'; + +class SplashScreen extends StatefulWidget { + const SplashScreen({Key? key}) : super(key: key); + + @override + State createState() => _SplashScreenState(); +} + +class _SplashScreenState extends State { + late AuthenticationBloc authenticationBloc; + @override + Widget build(BuildContext context) { + UiSizeConfig().init(context); + return Scaffold( + backgroundColor: Theme.of(context).backgroundColor, + body: BlocListener( + bloc: authenticationBloc, + listener: (BuildContext context, AuthenticationState state) { + if (state is AppAutheticated) { + context.go('/home'); + } + if (state is AuthenticationStart) { + context.go('/login'); + } + if (state is UserLogoutState) { + context.go('/login'); + } + }, + child: BlocBuilder( + bloc: authenticationBloc, + builder: (BuildContext context, AuthenticationState state) { + return Center(child: Image.asset(AllImages().logo)); + }), + ), + ); + } + + @override + void initState() { + authenticationBloc = BlocProvider.of(context); + authenticationBloc.add(const AppLoadedup()); + super.initState(); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart new file mode 100644 index 0000000..f84b563 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart @@ -0,0 +1,105 @@ +import 'package:equatable/equatable.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; + +part 'authentication_event.dart'; +part 'authentication_state.dart'; + +class AuthenticationBloc + extends Bloc { + final SharedPrefs prefs = SharedPrefs.instance; + final AuthenticationRepository _authenticationService; + + AuthenticationBloc({ + required AuthenticationRepository authenticationService, + }) : _authenticationService = authenticationService, + super(const AuthenticationInitial()) { + on(_mapAppSignUpLoadedState); + on(_mapUserSignupToState); + on(_mapUserLoginState); + on(_mapUserLogoutState); + on(_mapUserDataState); + } + + void _mapAppSignUpLoadedState( + AppLoadedup event, Emitter emit) async { + emit(const AuthenticationLoading()); + try { + await Future.delayed( + const Duration(milliseconds: 500)); // a simulated delay + if (prefs.getToken() != null) { + emit(const AppAutheticated()); + } else { + emit(const AuthenticationStart()); + } + } catch (e) { + emit(const AuthenticationFailure(message: 'An unknown error occurred')); + } + } + + void _mapUserLoginState( + UserLogin event, Emitter emit) async { + emit(const AuthenticationLoading()); + try { + await Future.delayed( + const Duration(milliseconds: 500)); // a simulated delay + final data = await _authenticationService.loginWithEmailAndPassword( + event.email, event.password!); + if (data["error"] == null) { + final currentUser = Token.fromJson(data); + if (currentUser != null) { + prefs.setToken(currentUser.token); + emit(const AppAutheticated()); + } else { + emit(AuthenticationNotAuthenticated()); + } + } else { + emit(AuthenticationFailure(message: data["error"])); + } + } catch (e) { + emit(AuthenticationFailure(message: e.toString())); + } + } + + void _mapUserSignupToState( + UserSignUp event, Emitter emit) async { + emit(const AuthenticationLoading()); + try { + await Future.delayed( + const Duration(milliseconds: 500)); // a simulated delay + final data = await _authenticationService.signUpWithEmailAndPassword( + event.email, event.password!); + + if (data["error"] == null) { + final currentUser = UserData.fromJson(data); + if (currentUser != null) { + prefs.setToken(currentUser.token); + prefs.setUserId(currentUser.id); + emit(const AppAutheticated()); + } else { + emit(AuthenticationNotAuthenticated()); + } + } else { + emit(AuthenticationFailure(message: data["error"])); + } + } catch (e) { + emit(AuthenticationFailure(message: e.toString())); + } + } + + void _mapUserLogoutState( + UserLogOut event, Emitter emit) async { + emit(const AuthenticationLoading()); + prefs.clear(); + emit(const UserLogoutState()); + } + + void _mapUserDataState( + GetUserData event, Emitter emit) async { + emit(const AuthenticationLoading()); + final currentUserId = prefs.getUserId(); + final data = await _authenticationService.getUserData(currentUserId ?? 4); + final currentUserData = CurrentUserData.fromJson(data); + emit(SetUserData(currentUserData: currentUserData)); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_event.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_event.dart new file mode 100644 index 0000000..abadfed --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_event.dart @@ -0,0 +1,39 @@ +part of 'authentication_bloc.dart'; + +abstract class AuthenticationEvent extends Equatable { + const AuthenticationEvent(); + + @override + List get props => []; +} + +// Fired just after the app is launched +class AppLoadedup extends AuthenticationEvent { + const AppLoadedup(); +} + +class UserLogOut extends AuthenticationEvent { + const UserLogOut(); +} + +class GetUserData extends AuthenticationEvent { + const GetUserData(); +} + +class UserSignUp extends AuthenticationEvent { + final String email; + final String? password; + const UserSignUp({required this.email, this.password}); + + @override + List get props => [email, password!]; +} + +class UserLogin extends AuthenticationEvent { + final String email; + final String? password; + const UserLogin({required this.email, this.password}); + + @override + List get props => [email, password!]; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_state.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_state.dart new file mode 100644 index 0000000..1c67378 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_state.dart @@ -0,0 +1,46 @@ +part of 'authentication_bloc.dart'; + +abstract class AuthenticationState extends Equatable { + const AuthenticationState(); + + @override + List get props => []; +} + +class AuthenticationInitial extends AuthenticationState { + const AuthenticationInitial(); +} + +class AppAutheticated extends AuthenticationState { + const AppAutheticated(); +} + +class AuthenticationLoading extends AuthenticationState { + const AuthenticationLoading(); +} + +class AuthenticationStart extends AuthenticationState { + const AuthenticationStart(); +} + +class UserLogoutState extends AuthenticationState { + const UserLogoutState(); +} + +class SetUserData extends AuthenticationState { + final CurrentUserData currentUserData; + const SetUserData({required this.currentUserData}); + @override + List get props => [currentUserData]; +} + +class AuthenticationNotAuthenticated extends AuthenticationState {} + +class AuthenticationFailure extends AuthenticationState { + final String message; + + const AuthenticationFailure({required this.message}); + + @override + List get props => [message]; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/bloc_controller.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/bloc_controller.dart new file mode 100644 index 0000000..f1a15fa --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/bloc_controller.dart @@ -0,0 +1,6 @@ +class AuthenticationBlocController { + AuthenticationBlocController._(); + static final AuthenticationBlocController _instance = + AuthenticationBlocController._(); + factory AuthenticationBlocController() => _instance; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart new file mode 100644 index 0000000..a73252a --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart @@ -0,0 +1,12 @@ +import 'package:bloc/bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; + +class UpdateThemeBloc extends Bloc { + UpdateThemeBloc() : super(const SetTheme(appTheme: AppTheme.light)) { + on((event, emit) { + if (event is UpdateTheme) { + emit(SetTheme(appTheme: event.appTheme)); + } + }); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart new file mode 100644 index 0000000..9948ff1 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart @@ -0,0 +1,18 @@ +import 'package:equatable/equatable.dart'; + +enum AppTheme { light, dark } + +abstract class UpdateThemeEvent extends Equatable { + const UpdateThemeEvent(); + + @override + List get props => []; +} + +class UpdateTheme extends UpdateThemeEvent { + final AppTheme appTheme; + const UpdateTheme({required this.appTheme}); + + @override + List get props => [appTheme]; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart new file mode 100644 index 0000000..910e8a0 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart @@ -0,0 +1,16 @@ +import 'package:equatable/equatable.dart'; + +import '../../../{{name}}.dart'; + +abstract class UpdateThemeState extends Equatable { + const UpdateThemeState(); + @override + List get props => []; +} + +class SetTheme extends UpdateThemeState { + final AppTheme appTheme; + const SetTheme({required this.appTheme}); + @override + List get props => [appTheme]; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/current_user_data.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/current_user_data.dart new file mode 100644 index 0000000..6c1fe01 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/current_user_data.dart @@ -0,0 +1,76 @@ +class CurrentUserData { + Data? data; + Support? support; + + CurrentUserData({this.data, this.support}); + + CurrentUserData.fromJson(Map json) { + data = json['data'] != null ? Data.fromJson(json['data']) : Data(); + support = + json['support'] != null ? Support.fromJson(json['support']) : Support(); + } + + Map toJson() { + final Map data = {}; + if (this.data != null) { + data['data'] = this.data!.toJson(); + } + if (support != null) { + data['support'] = support!.toJson(); + } + return data; + } +} + +class Data { + late int? id; + late String email; + late String firstName; + late String lastName; + late String avatar; + + Data( + {this.id, + this.email = '', + this.firstName = '', + this.lastName = '', + this.avatar = ''}); + + Data.fromJson(Map json) { + id = json['id']; + email = json['email']; + firstName = json['first_name']; + lastName = json['last_name']; + avatar = json['avatar']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['email'] = email; + data['first_name'] = firstName; + data['last_name'] = lastName; + data['avatar'] = avatar; + return data; + } +} + +class Support { + late String url; + late String text; + + Support({this.url = '', this.text = ''}); + + Support.fromJson(Map json) { + url = json['url']; + text = json['text']; + } + + Map toJson() { + final Map data = {}; + + data['url'] = url; + data['text'] = text; + return data; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/firebase_user.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/firebase_user.dart new file mode 100644 index 0000000..9362ee4 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/firebase_user.dart @@ -0,0 +1,14 @@ +class UserFromFirebaseUser { + final String uid; + final String email; + final String token; + final String avatar; + + UserFromFirebaseUser({ + required this.uid, + required this.email, + required this.token, + this.avatar = + "https://i.pinimg.com/736x/89/90/48/899048ab0cc455154006fdb9676964b3.jpg", + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/token.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/token.dart new file mode 100644 index 0000000..cdd4579 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/token.dart @@ -0,0 +1,15 @@ +class Token { + late String token; + + Token({required this.token}); + + Token.fromJson(Map json) { + token = json['token']; + } + + Map toJson() { + final Map data = {}; + data['token'] = token; + return data; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user.dart new file mode 100644 index 0000000..8c73672 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user.dart @@ -0,0 +1,9 @@ +class MyUser { + final String name; + final String email; + + MyUser({required this.name, required this.email}); + + @override + String toString() => 'User { name: $name, email: $email}'; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user_data.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user_data.dart new file mode 100644 index 0000000..2eb8786 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user_data.dart @@ -0,0 +1,18 @@ +class UserData { + late int id; + late String token; + + UserData({required this.id, required this.token}); + + UserData.fromJson(Map json) { + id = json['id']; + token = json['token']; + } + + Map toJson() { + final Map data = {}; + data['id'] = id; + data['token'] = token; + return data; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/dio_authentication_repository.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/dio_authentication_repository.dart new file mode 100644 index 0000000..d0fb056 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/dio_authentication_repository.dart @@ -0,0 +1,10 @@ +import 'package:{{name}}/api_sdk/dio/dio_service.dart'; +import 'package:{{name}}/api_sdk/dio/models/user_model.dart'; + +class DioAuthenticationRepository { + Future getUserData(int id) async { + final response = await DioService.getUserData(id); + + return response; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/http_authentication_repository.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/http_authentication_repository.dart new file mode 100644 index 0000000..4e354a5 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/http_authentication_repository.dart @@ -0,0 +1,29 @@ +import 'package:{{name}}/{{name}}.dart'; + +class AuthenticationRepository { + Future signUpWithEmailAndPassword( + String email, String password) async { + await Future.delayed( + const Duration(seconds: 1)); // simulate a network delay + final response = await ApiSdk.signUpWithEmailAndPassword( + {'email': email, 'password': password}); + + return response; + } + + Future loginWithEmailAndPassword( + String email, String password) async { + await Future.delayed( + const Duration(seconds: 1)); // simulate a network delay + final response = await ApiSdk.loginWithEmailAndPassword( + {'email': email, 'password': password}); + + return response; + } + + Future getUserData(int id) async { + final response = await ApiSdk.getUserData(id); + + return response; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/shared.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/shared.dart new file mode 100644 index 0000000..dae32b7 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/shared.dart @@ -0,0 +1,26 @@ +import 'package:shared_preferences/shared_preferences.dart'; + +class SharedPrefs { + SharedPrefs._(); + + static final SharedPrefs _instance = SharedPrefs._(); + static SharedPrefs get instance => _instance; + + late SharedPreferences _prefs; + + Future init() async => _prefs = await SharedPreferences.getInstance(); + + Future remove(String key) async => await _prefs.remove(key); + + Future clear() async => await _prefs.clear(); + + /// Setters + Future setToken(String value) async => + await _prefs.setString('authtoken', value); + Future setUserId(int value) async => + await _prefs.setInt('userId', value); + + /// Getters + String? getToken() => _prefs.getString('authtoken'); + int? getUserId() => _prefs.getInt('userId'); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/themes/color_constants.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/themes/color_constants.dart new file mode 100644 index 0000000..0cb1a8b --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/themes/color_constants.dart @@ -0,0 +1,14 @@ +import 'package:flutter/material.dart'; + +class ColorConstants { + ColorConstants._(); + static final ColorConstants _instance = ColorConstants._(); + factory ColorConstants() => _instance; + Color primaryColor = const Color(0xFF0164ff); + Color primaryDarkColor = const Color(0xffA39BDB); + Color lightBackgroundColor = Colors.white; + Color darkBackgroundColor = const Color(0xff313131); + Color primaryTextLight = Colors.black; + Color primaryTextDark = Colors.white; + Color accentColor = const Color(0xffA39BDB); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/themes/theme_data.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/themes/theme_data.dart new file mode 100644 index 0000000..dbc0dc6 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/themes/theme_data.dart @@ -0,0 +1,218 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'color_constants.dart'; + +class ThemeConfig { + static ThemeData get darkTheme => createTheme( + brightness: Brightness.dark, + background: ColorConstants().darkBackgroundColor, + primaryColor: ColorConstants().primaryColor, + cardBackground: ColorConstants().darkBackgroundColor, + primaryText: ColorConstants().primaryTextDark, + secondaryText: ColorConstants().primaryTextLight, + accentColor: ColorConstants().accentColor, + divider: Colors.black45, + buttonBackground: Colors.white, + buttonText: ColorConstants().darkBackgroundColor, + disabled: ColorConstants().darkBackgroundColor, + error: Colors.red, + ); + + static ThemeData get lightTheme => createTheme( + brightness: Brightness.light, + background: ColorConstants().lightBackgroundColor, + primaryColor: ColorConstants().primaryColor, + cardBackground: ColorConstants().lightBackgroundColor, + primaryText: ColorConstants().primaryTextLight, + secondaryText: ColorConstants().primaryTextDark, + accentColor: ColorConstants().accentColor, + divider: ColorConstants().lightBackgroundColor, + buttonBackground: Colors.black38, + buttonText: ColorConstants().lightBackgroundColor, + disabled: ColorConstants().lightBackgroundColor, + error: Colors.red, + ); + + static ThemeData createTheme({ + required Brightness brightness, + required Color background, + required Color primaryText, + required Color secondaryText, + required Color accentColor, + required Color divider, + required Color buttonBackground, + required Color buttonText, + required Color cardBackground, + required Color disabled, + required Color error, + required Color primaryColor, + }) { + final baseTextTheme = brightness == Brightness.dark + ? Typography.blackMountainView + : Typography.whiteMountainView; + + return ThemeData( + brightness: brightness, + canvasColor: background, + cardColor: background, + dividerColor: divider, + dividerTheme: DividerThemeData( + color: divider, + space: 1, + thickness: 1, + ), + cardTheme: CardTheme( + color: cardBackground, + margin: EdgeInsets.zero, + clipBehavior: Clip.antiAliasWithSaveLayer, + ), + elevatedButtonTheme: ElevatedButtonThemeData( + style: ButtonStyle( + shape: MaterialStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(9.0), + )), + padding: MaterialStateProperty.all( + const EdgeInsets.all(18.5)))), + backgroundColor: background, + primaryColor: primaryColor, + toggleableActiveColor: accentColor, + appBarTheme: AppBarTheme( + systemOverlayStyle: + SystemUiOverlayStyle(statusBarBrightness: brightness), + color: cardBackground, + iconTheme: IconThemeData( + color: secondaryText, + ), + toolbarTextStyle: TextTheme( + bodyText1: baseTextTheme.bodyText1?.copyWith( + color: secondaryText, + fontSize: 18, + ), + ).bodyText2, + titleTextStyle: TextTheme( + bodyText1: baseTextTheme.bodyText1?.copyWith( + color: secondaryText, + fontSize: 18, + ), + ).headline6, + ), + iconTheme: IconThemeData( + color: secondaryText, + size: 16.0, + ), + errorColor: error, + buttonTheme: ButtonThemeData( + textTheme: ButtonTextTheme.primary, + colorScheme: ColorScheme( + brightness: brightness, + primary: accentColor, + secondary: accentColor, + surface: background, + background: background, + error: error, + onPrimary: buttonText, + onSecondary: buttonText, + onSurface: buttonText, + onBackground: buttonText, + onError: buttonText, + ), + padding: const EdgeInsets.all(16.0), + ), + cupertinoOverrideTheme: CupertinoThemeData( + brightness: brightness, + primaryColor: accentColor, + ), + inputDecorationTheme: InputDecorationTheme( + errorStyle: TextStyle(color: error), + labelStyle: TextStyle( + fontFamily: '', + fontWeight: FontWeight.w600, + fontSize: 16.0, + color: primaryText.withOpacity(0.5), + ), + hintStyle: TextStyle( + color: secondaryText, + fontSize: 13.0, + fontWeight: FontWeight.w300, + ), + ), + fontFamily: '', + textTheme: TextTheme( + headline1: baseTextTheme.headline1?.copyWith( + color: primaryText, + fontSize: 34.0, + fontWeight: FontWeight.bold, + ), + headline2: baseTextTheme.headline2?.copyWith( + color: primaryText, + fontSize: 22, + fontWeight: FontWeight.bold, + ), + headline3: baseTextTheme.headline3?.copyWith( + color: secondaryText, + fontSize: 20, + fontWeight: FontWeight.w600, + ), + headline4: baseTextTheme.headline4?.copyWith( + color: primaryText, + fontSize: 18, + fontWeight: FontWeight.w600, + ), + headline5: baseTextTheme.headline5?.copyWith( + color: primaryText, + fontSize: 16, + fontWeight: FontWeight.w700, + ), + headline6: baseTextTheme.headline6?.copyWith( + color: primaryText, + fontSize: 14, + fontWeight: FontWeight.w700, + ), + bodyText1: baseTextTheme.bodyText1?.copyWith( + color: secondaryText, + fontSize: 14, + ), + bodyText2: baseTextTheme.bodyText2?.copyWith( + color: primaryText, + fontSize: 12, + fontWeight: FontWeight.w400, + ), + button: baseTextTheme.button?.copyWith( + color: primaryText, + fontSize: 12.0, + fontWeight: FontWeight.w700, + ), + caption: baseTextTheme.caption?.copyWith( + color: primaryText, + fontSize: 11.0, + fontWeight: FontWeight.w300, + ), + overline: baseTextTheme.overline?.copyWith( + color: secondaryText, + fontSize: 11.0, + fontWeight: FontWeight.w500, + ), + subtitle1: baseTextTheme.subtitle1?.copyWith( + color: primaryText, + fontSize: 16.0, + fontWeight: FontWeight.w700, + ), + subtitle2: baseTextTheme.subtitle2?.copyWith( + color: secondaryText, + fontSize: 11.0, + fontWeight: FontWeight.w500, + ), + ), + colorScheme: ColorScheme.fromSwatch() + .copyWith(secondary: accentColor, brightness: brightness), + textSelectionTheme: TextSelectionThemeData( + cursorColor: accentColor, + selectionColor: accentColor, + selectionHandleColor: accentColor, + ), + ); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/image_constants.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/image_constants.dart new file mode 100644 index 0000000..e1c5cc5 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/image_constants.dart @@ -0,0 +1,12 @@ +class AllImages { + AllImages._(); + static final AllImages _instance = AllImages._(); + factory AllImages() => _instance; + + String image = 'assets/image'; + String logo = 'assets/images/logo.png'; + String login = 'assets/images/login.png'; + String signup = 'assets/images/signup.png'; + String kDefaultImage = + 'https://cdn.pixabay.com/photo/2016/08/08/09/17/avatar-1577909_1280.png'; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/responsive.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/responsive.dart new file mode 100644 index 0000000..1889641 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/responsive.dart @@ -0,0 +1,47 @@ +import 'package:flutter/material.dart'; + +class Responsive extends StatelessWidget { + final Widget mobile; + final Widget tablet; + final Widget desktop; + + const Responsive({ + Key? key, + required this.mobile, + required this.tablet, + required this.desktop, + }) : super(key: key); + + /// We will modify based on our design dimension for each type. + + // This isMobile, isTablet, isDesktop + static bool isMobile(BuildContext context) => + MediaQuery.of(context).size.width <= 620; + + static bool isTablet(BuildContext context) => + MediaQuery.of(context).size.width <= 1030 && + MediaQuery.of(context).size.width > 620; + + static bool isDesktop(BuildContext context) => + MediaQuery.of(context).size.width > 1030; + + @override + Widget build(BuildContext context) { + return LayoutBuilder( + // If our width is more than 1030 then we consider it a desktop + builder: (context, constraints) { + if (MediaQuery.of(context).size.width >= 1030) { + return desktop; + } + // If width it less then 1030 and more then 620 we consider it as tablet + else if (MediaQuery.of(context).size.width > 620) { + return tablet; + } + // Or less then that we called it mobile + else { + return mobile; + } + }, + ); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart new file mode 100644 index 0000000..fc82bb6 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart @@ -0,0 +1,181 @@ +import 'package:flutter/material.dart'; +import 'package:{{name}}/{{name}}.dart'; + +/// [SizeConfig] to make project scalable +class UiSizeConfig { + static MediaQueryData? _mediaQueryData; + static bool isMobile = false, isTablet = false, isDesktop = true; + static double? screenWidth, + screenHeight, + blockSizeHorizontal, + blockSizeVertical, + _safeAreaHorizontal, + _safeAreaVertical, + safeBlockHorizontal, + safeBlockVertical, + profileDrawerWidth, + refHeight, + refWidth, + refMobileHeight, + refMobileWidth, + refTabletHeight, + refTabletWidth; + + void init(BuildContext context) { + _mediaQueryData = MediaQuery.of(context); + screenWidth = _mediaQueryData!.size.width; + screenHeight = _mediaQueryData!.size.height; + refHeight = 897; + refWidth = 1366; + refTabletHeight = 1024; + refTabletWidth = 768; + refMobileHeight = 760; + refMobileWidth = 360; + isDesktop = Responsive.isDesktop(context); + isMobile = Responsive.isMobile(context); + isTablet = Responsive.isTablet(context); + + if (screenHeight! < 1200) { + blockSizeHorizontal = screenWidth! / 100; + blockSizeVertical = screenHeight! / 100; + + _safeAreaHorizontal = + _mediaQueryData!.padding.left + _mediaQueryData!.padding.right; + _safeAreaVertical = + _mediaQueryData!.padding.top + _mediaQueryData!.padding.bottom; + safeBlockHorizontal = (screenWidth! - _safeAreaHorizontal!) / 100; + safeBlockVertical = (screenHeight! - _safeAreaVertical!) / 100; + } else { + blockSizeHorizontal = screenWidth! / 120; + blockSizeVertical = screenHeight! / 120; + + _safeAreaHorizontal = + _mediaQueryData!.padding.left + _mediaQueryData!.padding.right; + _safeAreaVertical = + _mediaQueryData!.padding.top + _mediaQueryData!.padding.bottom; + safeBlockHorizontal = (screenWidth! - _safeAreaHorizontal!) / 120; + safeBlockVertical = (screenHeight! - _safeAreaVertical!) / 120; + } + } + + static double getWidthRatio(double val) { + double res = (val / refWidth!) * 100; + return res * blockSizeHorizontal! > 2800 + ? 2400 + : res * blockSizeHorizontal!; + } + + static double getHeightRatio(double val) { + double res = (val / refHeight!) * 100; + return res * blockSizeVertical!; + } + + static double getFontRatio(double val) { + // double res = (val / refWidth!) * 100; + // if (screenWidth! > screenHeight!) { + // return res * safeBlockHorizontal!; + // } else { + // return res * safeBlockVertical!; + // } + return val; + } + + static double getTabletWidthRatio(double val) { + double res = (val / refTabletWidth!) * 100; + return res * blockSizeHorizontal!; + } + + static double getTabletHeightRatio(double val) { + double res = (val / refTabletHeight!) * 100; + return res * blockSizeVertical!; + } + + static double getTabletFontRatio(double val) { + double res = (val / refTabletWidth!) * 100; + if (screenWidth! < screenHeight!) { + return res * safeBlockHorizontal!; + } else { + return res * safeBlockVertical!; + } + } + + static double getMobileWidthRatio(double val) { + double res = (val / refMobileWidth!) * 100; + return res * blockSizeHorizontal!; + } + + static double getMobileHeightRatio(double val) { + double res = (val / refMobileHeight!) * 100; + return res * blockSizeVertical!; + } + + static double getMobileFontRatio(double val) { + double res = (val / refMobileWidth!) * 100; + if (screenWidth! < screenHeight!) { + return res * safeBlockHorizontal!; + } else { + return res * safeBlockVertical!; + } + } + + static double getResponsiveFont(double val) { + if (isMobile) { + return val.toMobileFont; + } else if (isTablet) { + return val.toTabletFont; + } else { + return val.toFont; + } + } + + static double getResponsiveHeight(double val) { + if (isMobile) { + return val.toMobileHeight; + } else if (isTablet) { + return val.toTabletHeight; + } else { + return val.toHeight; + } + } + + static double getResponsiveWidth(double val) { + if (isMobile) { + return val.toMobileWidth; + } else if (isTablet) { + return val.toTabletWidth; + } else { + return val.toWidth; + } + } +} + +extension SizeUtils on num { + double get toWidth => UiSizeConfig.getWidthRatio(this.toDouble()); + + double get toHeight => UiSizeConfig.getHeightRatio(this.toDouble()); + + double get toFont => UiSizeConfig.getFontRatio(this.toDouble()); + + double get toTabletWidth => UiSizeConfig.getTabletWidthRatio(this.toDouble()); + + double get toTabletHeight => + UiSizeConfig.getTabletHeightRatio(this.toDouble()); + + double get toTabletFont => UiSizeConfig.getTabletFontRatio(this.toDouble()); + + double get toMobileWidth => UiSizeConfig.getMobileWidthRatio(this.toDouble()); + + double get toMobileHeight => + UiSizeConfig.getMobileHeightRatio(this.toDouble()); + + double get toMobileFont => UiSizeConfig.getMobileFontRatio(this.toDouble()); + + double get toResponsiveFont => + UiSizeConfig.getResponsiveFont(this.toDouble()); + + double get toResponsiveHeight => + UiSizeConfig.getResponsiveHeight(this.toDouble()); + + double get toResponsiveWidth => + UiSizeConfig.getResponsiveWidth(this.toDouble()); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/string_constants.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/string_constants.dart new file mode 100644 index 0000000..419ab23 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/string_constants.dart @@ -0,0 +1 @@ +library constants; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/widgets/cache_image_widget.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/widgets/cache_image_widget.dart new file mode 100644 index 0000000..51b1929 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/widgets/cache_image_widget.dart @@ -0,0 +1,36 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; + +class CachedImage extends StatelessWidget { + const CachedImage({ + Key? key, + required this.imageUrl, + this.fit = BoxFit.cover, + this.height, + this.width, + this.placeholder, + this.errorWidget, + }) : assert(imageUrl != null), + super(key: key); + + final String imageUrl; + final BoxFit fit; + final double? height; + final double? width; + final Widget? placeholder; + final Widget? errorWidget; + + @override + Widget build(BuildContext context) { + return CachedNetworkImage( + imageUrl: imageUrl, + fit: fit, + height: height, + width: width, + placeholder: (context, url) => + placeholder ?? const CircularProgressIndicator(), + errorWidget: (context, url, err) => + errorWidget ?? const Icon(Icons.error_outline), + ); + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/{{name}}.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/{{name}}.dart new file mode 100644 index 0000000..ef13b14 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/{{name}}.dart @@ -0,0 +1,37 @@ +export 'api_sdk/http/http_service.dart'; +export 'api_sdk/http/http_helpers/http_client.dart'; +export 'api_sdk/http/http_helpers/http_interceptor.dart'; +export 'shared/models/firebase_user.dart'; +export 'shared/bloc/bloc_controller.dart'; +export 'shared/models/firebase_user.dart'; +export 'shared/repository/http_authentication_repository.dart'; +export 'api_sdk/api_sdk.dart'; +export 'shared/models/token.dart'; +export 'shared/models/user.dart'; +export 'shared/models/user_data.dart'; +export 'shared/models/current_user_data.dart'; +export 'shared/shared.dart'; +export 'shared/bloc/authentication/authentication_bloc.dart'; +export 'shared/models/current_user_data.dart'; +export 'app.dart'; +export 'themes/color_constants.dart'; +export 'utils/image_constants.dart'; +export 'themes/theme_data.dart'; +export 'routes/routes.dart'; +export 'screens/login/widgets/login_form.dart'; +export 'screens/signup/widgets/signup_form.dart'; +export '/widgets/cache_image_widget.dart'; +export 'screens/splash/splash_screen.dart'; +export 'screens/home/home.dart'; +export 'api_sdk/dio/dio_helpers/dio_apis.dart'; +export 'api_sdk/dio/dio_helpers/dio_client.dart'; +export 'shared/repository/dio_authentication_repository.dart'; +export 'api_sdk/dio/dio_helpers/dio_exceptions.dart'; +export 'api_sdk/dio/dio_helpers/dio_interceptor.dart'; +export 'package:{{name}}/shared/bloc/update_theme/update_theme_event.dart'; +export 'package:{{name}}/shared/bloc/update_theme/update_theme_state.dart'; +export 'package:{{name}}/shared/bloc/update_theme/update_theme_bloc.dart'; +export 'utils/responsive.dart'; +export 'utils/size_utils.dart'; +export 'screens/login/login_screen.dart'; +export 'screens/signup/signup_screen.dart'; diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/linux/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/linux/CMakeLists.txt new file mode 100644 index 0000000..c599f69 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/linux/CMakeLists.txt @@ -0,0 +1,138 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "{{name}}") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "{{org}}.{{name}}") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/CMakeLists.txt new file mode 100644 index 0000000..d5bd016 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.cc b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..e71a16d --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void fl_register_plugins(FlPluginRegistry* registry) { +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.h b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugins.cmake b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..2e1de87 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/main.cc b/bricks/flutter_starter/__brick__/{{name}}/linux/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.cc b/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.cc new file mode 100644 index 0000000..0876305 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.cc @@ -0,0 +1,104 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "{{name}}"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "{{name}}"); + } + + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.h b/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.h new file mode 100644 index 0000000..72271d5 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Debug.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..4b81f9b --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Release.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..5caa9d1 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/GeneratedPluginRegistrant.swift b/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..e9cf192 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,16 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import path_provider_macos +import shared_preferences_macos +import sqflite + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Podfile b/bricks/flutter_starter/__brick__/{{name}}/macos/Podfile new file mode 100644 index 0000000..dade8df --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Podfile @@ -0,0 +1,40 @@ +platform :osx, '10.11' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + end +end diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.pbxproj b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..e405392 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,572 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* {{name}}.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "{{name}}.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* {{name}}.app */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* {{name}}.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1300; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLEABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..742d4c6 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/contents.xcworkspacedata b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1d526a1 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/AppDelegate.swift b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..d53ef64 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4935a7ca84f0976aca34b7f2895d65fb94d1ea GIT binary patch literal 46993 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 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..ed4cc16421680a50164ba74381b4b35ceaa0ccfc GIT binary patch literal 3276 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 N;OXk;vd$@?2>?>Ex^Vyi literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000000000000000000000000000000000000..bcbf36df2f2aaaa0a63c7dabc94e600184229d0d GIT binary patch literal 5933 zcmZ{Idpwix|Np(&m_yAF>K&UIn{t*2ZOdsShYs(MibU!|=pZCJq~7E>B$QJr)hC5| zmk?V?ES039lQ~RC!kjkl-TU4?|NZ{>J$CPLUH9vHy`Hbhhnc~SD_vpzBp6Xw4`$%jfmPw(;etLCccvfU-s)1A zLl8-RiSx!#?Kwzd0E&>h;Fc z^;S84cUH7gMe#2}MHYcDXgbkI+Qh^X4BV~6y<@s`gMSNX!4@g8?ojjj5hZj5X4g9D zavr_NoeZ=4vim%!Y`GnF-?2_Gb)g$xAo>#zCOLB-jPww8a%c|r&DC=eVdE;y+HwH@ zy`JK(oq+Yw^-hLvWO4B8orWwLiKT!hX!?xw`kz%INd5f)>k1PZ`ZfM&&Ngw)HiXA| ze=+%KkiLe1hd>h!ZO2O$45alH0O|E+>G2oCiJ|3y2c$;XedBozx93BprOr$#d{W5sb*hQQ~M@+v_m!8s?9+{Q0adM?ip3qQ*P5$R~dFvP+5KOH_^A+l-qu5flE*KLJp!rtjqTVqJsmpc1 zo>T>*ja-V&ma7)K?CE9RTsKQKk7lhx$L`9d6-Gq`_zKDa6*>csToQ{&0rWf$mD7x~S3{oA z1wUZl&^{qbX>y*T71~3NWd1Wfgjg)<~BnK96Ro#om&~8mU{}D!Fu# zTrKKSM8gY^*47b2Vr|ZZe&m9Y`n+Y8lHvtlBbIjNl3pGxU{!#Crl5RPIO~!L5Y({ym~8%Ox-9g>IW8 zSz2G6D#F|L^lcotrZx4cFdfw6f){tqITj6>HSW&ijlgTJTGbc7Q#=)*Be0-s0$fCk z^YaG;7Q1dfJq#p|EJ~YYmqjs`M0jPl=E`Id{+h%Lo*|8xp6K7yfgjqiH7{61$4x~A zNnH+65?QCtL;_w(|mDNJXybin=rOy-i7A@lXEu z&jY(5jhjlP{TsjMe$*b^2kp8LeAXu~*q&5;|3v|4w4Ij_4c{4GG8={;=K#lh{#C8v z&t9d7bf{@9aUaE94V~4wtQ|LMT*Ruuu0Ndjj*vh2pWW@|KeeXi(vt!YXi~I6?r5PG z$_{M*wrccE6x42nPaJUO#tBu$l#MInrZhej_Tqki{;BT0VZeb$Ba%;>L!##cvieb2 zwn(_+o!zhMk@l~$$}hivyebloEnNQmOy6biopy`GL?=hN&2)hsA0@fj=A^uEv~TFE z<|ZJIWplBEmufYI)<>IXMv(c+I^y6qBthESbAnk?0N(PI>4{ASayV1ErZ&dsM4Z@E-)F&V0>tIF+Oubl zin^4Qx@`Un4kRiPq+LX5{4*+twI#F~PE7g{FpJ`{)K()FH+VG^>)C-VgK>S=PH!m^ zE$+Cfz!Ja`s^Vo(fd&+U{W|K$e(|{YG;^9{D|UdadmUW;j;&V!rU)W_@kqQj*Frp~ z7=kRxk)d1$$38B03-E_|v=<*~p3>)2w*eXo(vk%HCXeT5lf_Z+D}(Uju=(WdZ4xa( zg>98lC^Z_`s-=ra9ZC^lAF?rIvQZpAMz8-#EgX;`lc6*53ckpxG}(pJp~0XBd9?RP zq!J-f`h0dC*nWxKUh~8YqN{SjiJ6vLBkMRo?;|eA(I!akhGm^}JXoL_sHYkGEQWWf zTR_u*Ga~Y!hUuqb`h|`DS-T)yCiF#s<KR}hC~F%m)?xjzj6w#Za%~XsXFS@P0E3t*qs)tR43%!OUxs(|FTR4Sjz(N zppN>{Ip2l3esk9rtB#+To92s~*WGK`G+ECt6D>Bvm|0`>Img`jUr$r@##&!1Ud{r| zgC@cPkNL_na`74%fIk)NaP-0UGq`|9gB}oHRoRU7U>Uqe!U61fY7*Nj(JiFa-B7Av z;VNDv7Xx&CTwh(C2ZT{ot`!E~1i1kK;VtIh?;a1iLWifv8121n6X!{C%kw|h-Z8_U z9Y8M38M2QG^=h+dW*$CJFmuVcrvD*0hbFOD=~wU?C5VqNiIgAs#4axofE*WFYd|K;Et18?xaI|v-0hN#D#7j z5I{XH)+v0)ZYF=-qloGQ>!)q_2S(Lg3<=UsLn%O)V-mhI-nc_cJZu(QWRY)*1il%n zOR5Kdi)zL-5w~lOixilSSF9YQ29*H+Br2*T2lJ?aSLKBwv7}*ZfICEb$t>z&A+O3C z^@_rpf0S7MO<3?73G5{LWrDWfhy-c7%M}E>0!Q(Iu71MYB(|gk$2`jH?!>ND0?xZu z1V|&*VsEG9U zm)!4#oTcgOO6Hqt3^vcHx>n}%pyf|NSNyTZX*f+TODT`F%IyvCpY?BGELP#s<|D{U z9lUTj%P6>^0Y$fvIdSj5*=&VVMy&nms=!=2y<5DP8x;Z13#YXf7}G)sc$_TQQ=4BD zQ1Le^y+BwHl7T6)`Q&9H&A2fJ@IPa;On5n!VNqWUiA*XXOnvoSjEIKW<$V~1?#zts>enlSTQaG2A|Ck4WkZWQoeOu(te znV;souKbA2W=)YWldqW@fV^$6EuB`lFmXYm%WqI}X?I1I7(mQ8U-pm+Ya* z|7o6wac&1>GuQfIvzU7YHIz_|V;J*CMLJolXMx^9CI;I+{Nph?sf2pX@%OKT;N@Uz9Y zzuNq11Ccdwtr(TDLx}N!>?weLLkv~i!xfI0HGWff*!12E*?7QzzZT%TX{5b7{8^*A z3ut^C4uxSDf=~t4wZ%L%gO_WS7SR4Ok7hJ;tvZ9QBfVE%2)6hE>xu9y*2%X5y%g$8 z*8&(XxwN?dO?2b4VSa@On~5A?zZZ{^s3rXm54Cfi-%4hBFSk|zY9u(3d1ButJuZ1@ zfOHtpSt)uJnL`zg9bBvUkjbPO0xNr{^{h0~$I$XQzel_OIEkgT5L!dW1uSnKsEMVp z9t^dfkxq=BneR9`%b#nWSdj)u1G=Ehv0$L@xe_eG$Ac%f7 zy`*X(p0r3FdCTa1AX^BtmPJNR4%S1nyu-AM-8)~t-KII9GEJU)W^ng7C@3%&3lj$2 z4niLa8)fJ2g>%`;;!re+Vh{3V^}9osx@pH8>b0#d8p`Dgm{I?y@dUJ4QcSB<+FAuT)O9gMlwrERIy z6)DFLaEhJkQ7S4^Qr!JA6*SYni$THFtE)0@%!vAw%X7y~!#k0?-|&6VIpFY9>5GhK zr;nM-Z`Omh>1>7;&?VC5JQoKi<`!BU_&GLzR%92V$kMohNpMDB=&NzMB&w-^SF~_# zNsTca>J{Y555+z|IT75yW;wi5A1Z zyzv|4l|xZ-Oy8r8_c8X)h%|a8#(oWcgS5P6gtuCA_vA!t=)IFTL{nnh8iW!B$i=Kd zj1ILrL;ht_4aRKF(l1%^dUyVxgK!2QsL)-{x$`q5wWjjN6B!Cj)jB=bii;9&Ee-;< zJfVk(8EOrbM&5mUciP49{Z43|TLoE#j(nQN_MaKt16dp#T6jF7z?^5*KwoT-Y`rs$ z?}8)#5Dg-Rx!PTa2R5; zx0zhW{BOpx_wKPlTu;4ev-0dUwp;g3qqIi|UMC@A?zEb3RXY`z_}gbwju zzlNht0WR%g@R5CVvg#+fb)o!I*Zpe?{_+oGq*wOmCWQ=(Ra-Q9mx#6SsqWAp*-Jzb zKvuPthpH(Fn_k>2XPu!=+C{vZsF8<9p!T}U+ICbNtO}IAqxa57*L&T>M6I0ogt&l> z^3k#b#S1--$byAaU&sZL$6(6mrf)OqZXpUPbVW%T|4T}20q9SQ&;3?oRz6rSDP4`b z(}J^?+mzbp>MQDD{ziSS0K(2^V4_anz9JV|Y_5{kF3spgW%EO6JpJ(rnnIN%;xkKf zn~;I&OGHKII3ZQ&?sHlEy)jqCyfeusjPMo7sLVr~??NAknqCbuDmo+7tp8vrKykMb z(y`R)pVp}ZgTErmi+z`UyQU*G5stQRsx*J^XW}LHi_af?(bJ8DPho0b)^PT|(`_A$ zFCYCCF={BknK&KYTAVaHE{lqJs4g6B@O&^5oTPLkmqAB#T#m!l9?wz!C}#a6w)Z~Z z6jx{dsXhI(|D)x%Yu49%ioD-~4}+hCA8Q;w_A$79%n+X84jbf?Nh?kRNRzyAi{_oV zU)LqH-yRdPxp;>vBAWqH4E z(WL)}-rb<_R^B~fI%ddj?Qxhp^5_~)6-aB`D~Nd$S`LY_O&&Fme>Id)+iI>%9V-68 z3crl=15^%0qA~}ksw@^dpZ`p;m=ury;-OV63*;zQyRs4?1?8lbUL!bR+C~2Zz1O+E@6ZQW!wvv z|NLqSP0^*J2Twq@yws%~V0^h05B8BMNHv_ZZT+=d%T#i{faiqN+ut5Bc`uQPM zgO+b1uj;)i!N94RJ>5RjTNXN{gAZel|L8S4r!NT{7)_=|`}D~ElU#2er}8~UE$Q>g zZryBhOd|J-U72{1q;Lb!^3mf+H$x6(hJHn$ZJRqCp^In_PD+>6KWnCnCXA35(}g!X z;3YI1luR&*1IvESL~*aF8(?4deU`9!cxB{8IO?PpZ{O5&uY<0DIERh2wEoAP@bayv z#$WTjR*$bN8^~AGZu+85uHo&AulFjmh*pupai?o?+>rZ7@@Xk4muI}ZqH`n&<@_Vn zvT!GF-_Ngd$B7kLge~&3qC;TE=tEid(nQB*qzXI0m46ma*2d(Sd*M%@Zc{kCFcs;1 zky%U)Pyg3wm_g12J`lS4n+Sg=L)-Y`bU705E5wk&zVEZw`eM#~AHHW96@D>bz#7?- zV`xlac^e`Zh_O+B5-kO=$04{<cKUG?R&#bnF}-?4(Jq+?Ph!9g zx@s~F)Uwub>Ratv&v85!6}3{n$bYb+p!w(l8Na6cSyEx#{r7>^YvIj8L?c*{mcB^x zqnv*lu-B1ORFtrmhfe}$I8~h*3!Ys%FNQv!P2tA^wjbH f$KZHO*s&vt|9^w-6P?|#0pRK8NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zS>O>_%)r1c48n{Iv*t(u1=&kHeO=ifbFy+6aSK)V_AxLppYn8Z42d|rc6w}vOsL55 z`t&mC&y2@JTEyg!eDiFX^k#CC!jq%>erB=yHqUP0XcDOTw6ko}L zX;EmMrq(fKk*eygEuA616;0)>@A{TK|55PV@70 z$OfzS*(VJxQev3J?yY?O=ul(v`fp}?u9z`JK3ugibK>)DyCwImZOF4d{xK%%Ks1*} zv$oa)9anR%lXIBUqYnhLmT>VOzHfNP?ZwJNZ!5$s9M08RynIvaXw>@G^T9@r9^KH1 zVy??F&uuk)bH9Y4pQY!hP58i_H6 znl-NcuCpLV6ZWU;4C zu@9exF&OZi`Bovq_m%T+WhU2kvkz@^_LpycBvqm3bMpLw8X-Or5sL>0AKE1$(k_L=_Zc=CUq#=x1-QZf)G7nHu@fmsQ1eN_N3+nTEz`4HI4Z6uVlE zJH+X&det8JU?tO?upcM4Z=cV!JV;yF>FfL5Q$M|W_2Z!P`S=}Wzp|_1^#d%e?_H`> zV@%vA$+bFVqhw9`U;TfP|5|PD{||OiYdor8P*i??|NJcb%kzT_73*7WE?Ua5hAnR2 z=7WE=PhTlJ#ZeRznjTUb;`E(wkMZrj4e|Hilz-mK>9cZHQY**5TUPw~u}k;u73KI}xAx!0m-)GVia|x^d3p~s_9gh83jA&Ra<8rM%`>U3x69t&NzbwWY}7Ar?)FK#IZ0z|d0H0EkRO w3{9;}4Xg|ebq&m|3=9_N6z8I7$jwj5OsmAL;bP(Gi$Dzwp00i_>zopr02+f8CIA2c literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 0000000000000000000000000000000000000000..e71a726136a47ed24125c7efc79d68a4a01961b4 GIT binary patch literal 14800 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/AppInfo.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..e94828d --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = {{name}} + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = {{org}}.flutterStarterTest + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2022 {{org}}. All rights reserved. diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Debug.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Release.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Warnings.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/DebugProfile.entitlements b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..dddb8a3 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Info.plist b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/MainFlutterWindow.swift b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..2722837 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Release.entitlements b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Release.entitlements new file mode 100644 index 0000000..852fa1a --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock b/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock new file mode 100644 index 0000000..3052fbe --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock @@ -0,0 +1,998 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "47.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "4.7.0" + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "3.3.0" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.1" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.9.0" + bloc: + dependency: "direct main" + description: + name: bloc + url: "https://pub.dartlang.org" + source: hosted + version: "8.1.0" + bloc_test: + dependency: "direct dev" + description: + name: bloc_test + url: "https://pub.dartlang.org" + source: hosted + version: "9.1.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + build: + dependency: transitive + description: + name: build + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.1" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + build_daemon: + dependency: transitive + description: + name: build_daemon + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.10" + build_runner: + dependency: "direct dev" + description: + name: build_runner + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.1" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + url: "https://pub.dartlang.org" + source: hosted + version: "7.2.4" + built_collection: + dependency: transitive + description: + name: built_collection + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.1" + built_value: + dependency: "direct main" + description: + name: built_value + url: "https://pub.dartlang.org" + source: hosted + version: "8.4.1" + built_value_generator: + dependency: "direct dev" + description: + name: built_value_generator + url: "https://pub.dartlang.org" + source: hosted + version: "8.4.1" + cached_network_image: + dependency: "direct main" + description: + name: cached_network_image + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.2" + cached_network_image_platform_interface: + dependency: transitive + description: + name: cached_network_image_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + cached_network_image_web: + dependency: transitive + description: + name: cached_network_image_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + coverage: + dependency: transitive + description: + name: coverage + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.0" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + csslib: + dependency: transitive + description: + name: csslib + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.4" + diff_match_patch: + dependency: transitive + description: + name: diff_match_patch + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.1" + dio: + dependency: "direct main" + description: + name: dio + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.6" + equatable: + dependency: "direct main" + description: + name: equatable + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.2" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_bloc: + dependency: "direct main" + description: + name: flutter_bloc + url: "https://pub.dartlang.org" + source: hosted + version: "8.1.1" + flutter_blurhash: + dependency: transitive + description: + name: flutter_blurhash + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.0" + flutter_cache_manager: + dependency: transitive + description: + name: flutter_cache_manager + url: "https://pub.dartlang.org" + source: hosted + version: "3.3.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_native_splash: + dependency: "direct dev" + description: + name: flutter_native_splash + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.9" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + fluttertoast: + dependency: "direct main" + description: + name: fluttertoast + url: "https://pub.dartlang.org" + source: hosted + version: "8.0.9" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + go_router: + dependency: "direct main" + description: + name: go_router + url: "https://pub.dartlang.org" + source: hosted + version: "4.5.1" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + html: + dependency: transitive + description: + name: html + url: "https://pub.dartlang.org" + source: hosted + version: "0.15.0" + http: + dependency: "direct main" + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_interceptor: + dependency: "direct main" + description: + name: http_interceptor + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.1" + image: + dependency: transitive + description: + name: image + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.0" + integration_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + intl: + dependency: "direct main" + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" + json_annotation: + dependency: "direct main" + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.6.0" + json_serializable: + dependency: "direct dev" + description: + name: json_serializable + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.2" + lint: + dependency: transitive + description: + name: lint + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.12" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + mocktail: + dependency: "direct dev" + description: + name: mocktail + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.0" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + node_preamble: + dependency: transitive + description: + name: node_preamble + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + octo_image: + dependency: transitive + description: + name: octo_image + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + path_provider: + dependency: transitive + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.20" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.11" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.11.1" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" + provider: + dependency: transitive + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.3" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + quiver: + dependency: transitive + description: + name: quiver + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + retrofit: + dependency: "direct main" + description: + name: retrofit + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1+1" + retrofit_generator: + dependency: "direct dev" + description: + name: retrofit_generator + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.3+2" + rxdart: + dependency: transitive + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.27.5" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.15" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.13" + shared_preferences_ios: + dependency: transitive + description: + name: shared_preferences_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + shared_preferences_macos: + dependency: transitive + description: + name: shared_preferences_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + shelf_static: + dependency: transitive + description: + name: shelf_static + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.3" + source_helper: + dependency: transitive + description: + name: source_helper + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.3" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + source_maps: + dependency: transitive + description: + name: source_maps + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.10" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.0" + sqflite: + dependency: transitive + description: + name: sqflite + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3+1" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.1+1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + sync_http: + dependency: transitive + description: + name: sync_http + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.1" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0+3" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + test: + dependency: transitive + description: + name: test + url: "https://pub.dartlang.org" + source: hosted + version: "1.21.4" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.12" + test_core: + dependency: transitive + description: + name: test_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.16" + timing: + dependency: transitive + description: + name: timing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + tuple: + dependency: transitive + description: + name: tuple + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + universal_io: + dependency: transitive + description: + name: universal_io + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.4" + uuid: + dependency: transitive + description: + name: uuid + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.6" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + vm_service: + dependency: transitive + description: + name: vm_service + url: "https://pub.dartlang.org" + source: hosted + version: "9.0.0" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + webdriver: + dependency: transitive + description: + name: webdriver + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0+2" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.0" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" +sdks: + dart: ">=2.18.0 <3.0.0" + flutter: ">=3.3.0" diff --git a/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml b/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml new file mode 100644 index 0000000..8fcbaf0 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml @@ -0,0 +1,60 @@ +name: {{name}} +description: {{desc}} + +publish_to: "none" + +version: 1.0.0+1 + +environment: + sdk: ">=2.17.1 <3.0.0" + +dependencies: + flutter: + sdk: flutter + flutter_localizations: + sdk: flutter + intl: ^0.17.0 + + cupertino_icons: ^1.0.5 + flutter_bloc: ^8.1.1 + equatable: ^2.0.3 + fluttertoast: ^8.0.9 + cached_network_image: ^3.2.0 + http: + http_interceptor: ^1.0.2 + shared_preferences: ^2.0.12 + retrofit: ^3.0.1+1 + dio: ^4.0.6 + built_value: ^8.4.1 + json_annotation: ^4.6.0 + bloc: ^8.1.0 + go_router: ^4.4.1 + +dev_dependencies: + flutter_test: + sdk: flutter + integration_test: + sdk: flutter + flutter_native_splash: ^2.0.2 + retrofit_generator: ^4.0.3+1 + build_runner: ^2.2.0 + json_serializable: ^6.3.1 + built_value_generator: ^8.4.1 + flutter_lints: ^2.0.0 + bloc_test: ^9.1.0 + mocktail: ^0.3.0 + +flutter_native_splash: + image: assets/images/logo.png + color: "5E92F3" + android_disable_fullscreen: true + +flutter: + generate: true + uses-material-design: true + assets: + - assets/images/logo.png + - assets/images/2.0x/logo.png + - assets/images/3.0x/logo.png + - assets/images/login.png + - assets/images/signup.png diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart new file mode 100644 index 0000000..24dd0cc --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart @@ -0,0 +1,166 @@ +import 'package:bloc_test/bloc_test.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:mocktail/mocktail.dart'; + +class MockAuthenticationRepository extends Mock + implements AuthenticationRepository {} + +void main() { + group('AuthenticationBloc', () { + late AuthenticationBloc authenticationBloc; + late AuthenticationRepository authenticationService; + late SharedPrefs prefs; + + setUp(() async { + SharedPreferences.setMockInitialValues({}); + prefs = SharedPrefs.instance; + await prefs.init(); + authenticationService = MockAuthenticationRepository(); + authenticationBloc = AuthenticationBloc( + authenticationService: authenticationService, + ); + }); + + tearDown(() { + authenticationBloc.close(); + prefs.clear(); + }); + + blocTest( + 'test initial state of the bloc', + build: () => authenticationBloc, + verify: (bloc) => bloc.state == const AuthenticationInitial(), + ); + + blocTest( + 'when auth token is null', + build: () { + prefs.remove('authtoken'); + return authenticationBloc; + }, + act: (bloc) => bloc.add(const AppLoadedup()), + wait: const Duration(milliseconds: 500), + expect: () { + return [ + const AuthenticationLoading(), + const AuthenticationStart(), + ]; + }, + ); + + blocTest( + 'when auth token is not null', + build: () { + prefs.setToken('authtoken'); + return authenticationBloc; + }, + act: (bloc) => bloc.add(const AppLoadedup()), + wait: const Duration(milliseconds: 500), + expect: () { + return [ + const AuthenticationLoading(), + const AppAutheticated(), + ]; + }, + ); + + blocTest( + 'when user signup failed', + build: () { + when(() => authenticationService.signUpWithEmailAndPassword( + 'test@gmail.in', 'test1234')).thenAnswer( + (invocation) => Future.value({'error': 'already registered'}), + ); + return authenticationBloc; + }, + act: (bloc) => bloc.add( + const UserSignUp(email: 'test@gmail.in', password: 'test1234'), + ), + wait: const Duration(milliseconds: 500), + expect: () { + return [ + const AuthenticationLoading(), + const AuthenticationFailure(message: 'already registered'), + ]; + }, + ); + + blocTest( + 'when user signup success', + build: () { + when(() => authenticationService.signUpWithEmailAndPassword( + 'eve.holt@reqres.in', 'cityslicka')).thenAnswer( + (invocation) => Future.value({'id': 1, 'token': 'abc'}), + ); + return authenticationBloc; + }, + act: (bloc) => bloc.add( + const UserSignUp(email: 'eve.holt@reqres.in', password: 'cityslicka'), + ), + wait: const Duration(milliseconds: 500), + expect: () { + return [ + const AuthenticationLoading(), + const AppAutheticated(), + ]; + }, + ); + + blocTest( + 'when user login failed', + build: () { + when(() => authenticationService.loginWithEmailAndPassword( + 'test@gmail.in', 'test1234')).thenAnswer( + (invocation) => Future.value({'error': 'user not found'}), + ); + return authenticationBloc; + }, + act: (bloc) => bloc.add( + const UserLogin(email: 'test@gmail.in', password: 'test1234'), + ), + wait: const Duration(milliseconds: 500), + expect: () { + return [ + const AuthenticationLoading(), + const AuthenticationFailure(message: 'user not found'), + ]; + }, + ); + + blocTest( + 'when user login success', + build: () { + when(() => authenticationService.loginWithEmailAndPassword( + 'eve.holt@reqres.in', 'cityslicka')).thenAnswer( + (invocation) => Future.value({'token': 'abc'}), + ); + return authenticationBloc; + }, + act: (bloc) => bloc.add( + const UserLogin(email: 'eve.holt@reqres.in', password: 'cityslicka'), + ), + wait: const Duration(milliseconds: 500), + expect: () { + return [ + const AuthenticationLoading(), + const AppAutheticated(), + ]; + }, + ); + + blocTest( + 'when user logout', + build: () => authenticationBloc, + act: (bloc) => bloc.add(const UserLogOut()), + wait: const Duration(milliseconds: 500), + expect: () { + return [ + const AuthenticationLoading(), + const UserLogoutState(), + ]; + }, + ); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart new file mode 100644 index 0000000..6673991 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart @@ -0,0 +1,29 @@ +// ignore_for_file: prefer_const_constructors + +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('AuthenticationEvent', () { + test('test value comparisons of loading event', () { + expect( + AppLoadedup(), + AppLoadedup(), + ); + }); + + test('test value comparisons of user data event', () { + expect( + GetUserData(), + GetUserData(), + ); + }); + + test('test value comparisons of logout event', () { + expect( + UserLogOut(), + UserLogOut(), + ); + }); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart new file mode 100644 index 0000000..b081910 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart @@ -0,0 +1,29 @@ +// ignore_for_file: prefer_const_constructors + +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('AuthenticationState', () { + test('test value comparisons of loading state', () { + expect( + AuthenticationLoading(), + AuthenticationLoading(), + ); + }); + + test('test value comparisons of authenticated state', () { + expect( + AppAutheticated(), + AppAutheticated(), + ); + }); + + test('test value comparisons of logout state', () { + expect( + UserLogoutState(), + UserLogoutState(), + ); + }); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart new file mode 100644 index 0000000..09125fc --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart @@ -0,0 +1,30 @@ +import 'package:bloc_test/bloc_test.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('UpdateThemeBloc', () { + late UpdateThemeBloc updateThemeBloc; + + setUp(() async { + updateThemeBloc = UpdateThemeBloc(); + }); + + tearDown(() { + updateThemeBloc.close(); + }); + + blocTest( + 'test initial state of the theme bloc', + build: () => updateThemeBloc, + verify: (bloc) => bloc.state == const SetTheme(appTheme: AppTheme.light), + ); + + blocTest( + 'test when theme is changed', + build: () => updateThemeBloc, + act: (bloc) => bloc.add(const UpdateTheme(appTheme: AppTheme.dark)), + expect: () => [const SetTheme(appTheme: AppTheme.dark)], + ); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart new file mode 100644 index 0000000..8ca75ba --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart @@ -0,0 +1,22 @@ +// ignore_for_file: prefer_const_constructors + +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('UpdateTheme', () { + test('test value comparisons during light theme', () { + expect( + UpdateTheme(appTheme: AppTheme.light), + UpdateTheme(appTheme: AppTheme.light), + ); + }); + + test('test value comparisons during dark theme', () { + expect( + UpdateTheme(appTheme: AppTheme.dark), + UpdateTheme(appTheme: AppTheme.dark), + ); + }); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart new file mode 100644 index 0000000..be2036c --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart @@ -0,0 +1,22 @@ +// ignore_for_file: prefer_const_constructors + +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('SetTheme', () { + test('test value comparisons during light theme', () { + expect( + SetTheme(appTheme: AppTheme.light), + SetTheme(appTheme: AppTheme.light), + ); + }); + + test('test value comparisons during dark theme', () { + expect( + SetTheme(appTheme: AppTheme.dark), + SetTheme(appTheme: AppTheme.dark), + ); + }); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart new file mode 100644 index 0000000..a1b5eb2 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart @@ -0,0 +1,67 @@ +import 'package:bloc_test/bloc_test.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; + +class MockAuthenticationBloc + extends MockBloc + implements AuthenticationBloc {} + +class MockUpdateThemeBloc extends MockBloc + implements UpdateThemeBloc {} + +void main() { + late AuthenticationBloc authenticationBloc; + late UpdateThemeBloc updateThemeBloc; + + setUp(() async { + authenticationBloc = MockAuthenticationBloc(); + updateThemeBloc = MockUpdateThemeBloc(); + }); + + tearDown(() { + authenticationBloc.close(); + updateThemeBloc.close(); + }); + + Widget createWidget(Widget child) { + return MaterialApp( + home: Builder(builder: (context) { + UiSizeConfig().init(context); + return MultiBlocProvider( + providers: [ + BlocProvider.value(value: authenticationBloc), + BlocProvider.value(value: updateThemeBloc), + ], + child: child, + ); + }), + ); + } + + group('Authentication check', () { + testWidgets('when user logout', (WidgetTester tester) async { + when(() => authenticationBloc.state).thenReturn( + SetUserData( + currentUserData: CurrentUserData( + data: + Data(id: 0, email: '', firstName: '', lastName: '', avatar: ''), + support: Support(url: '', text: ''), + ), + ), + ); + when(() => updateThemeBloc.state).thenReturn( + const SetTheme(appTheme: AppTheme.light), + ); + + await tester.pumpWidget(createWidget(const HomeScreen())); + final Finder logout = find.byKey(const Key('logoutButton')); + await tester.tap(logout); + await tester.pump(); + + verify(() => authenticationBloc.add(const UserLogOut())).called(1); + }); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart new file mode 100644 index 0000000..c89e7e0 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart @@ -0,0 +1,84 @@ +import 'package:bloc_test/bloc_test.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; + +class MockAuthenticationBloc + extends MockBloc + implements AuthenticationBloc {} + +void main() { + late AuthenticationBloc authenticationBloc; + + setUp(() async { + authenticationBloc = MockAuthenticationBloc(); + }); + + tearDown(() { + authenticationBloc.close(); + }); + + Widget createWidget(Widget child) { + return MaterialApp( + home: Builder(builder: (context) { + UiSizeConfig().init(context); + return BlocProvider.value( + value: authenticationBloc, + child: child, + ); + }), + ); + } + + group('Login test', () { + testWidgets('when invalid credentials are provided', + (WidgetTester tester) async { + await tester.runAsync(() async { + const emailText = ''; + const passwordText = ''; + + when(() => authenticationBloc.state) + .thenReturn(const AuthenticationInitial()); + + await tester.pumpWidget(createWidget(const LoginScreen())); + final Finder email = find.byKey(const Key('emailField')); + await tester.enterText(email, emailText); + final Finder password = find.byKey(const Key('passwordField')); + await tester.enterText(password, passwordText); + final Finder login = find.byKey(const Key('loginButton')); + await tester.tap(login); + await tester.pump(); + + verifyNever(() => authenticationBloc.add( + const UserLogin(email: emailText, password: passwordText), + )); + }); + }); + + testWidgets('when valid credentials are provided', + (WidgetTester tester) async { + await tester.runAsync(() async { + const emailText = 'eve.holt@reqres.in'; + const passwordText = 'cityslicka'; + + when(() => authenticationBloc.state) + .thenReturn(const AuthenticationInitial()); + + await tester.pumpWidget(createWidget(const LoginScreen())); + final Finder email = find.byKey(const Key('emailField')); + await tester.enterText(email, emailText); + final Finder password = find.byKey(const Key('passwordField')); + await tester.enterText(password, passwordText); + final Finder login = find.byKey(const Key('loginButton')); + await tester.tap(login); + await tester.pump(); + + verify(() => authenticationBloc.add( + const UserLogin(email: emailText, password: passwordText), + )).called(1); + }); + }); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart new file mode 100644 index 0000000..4322c2f --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart @@ -0,0 +1,90 @@ +import 'package:bloc_test/bloc_test.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; + +class MockAuthenticationBloc + extends MockBloc + implements AuthenticationBloc {} + +void main() { + late AuthenticationBloc authenticationBloc; + + setUp(() async { + authenticationBloc = MockAuthenticationBloc(); + }); + + tearDown(() { + authenticationBloc.close(); + }); + + Widget createWidget(Widget child) { + return MaterialApp( + home: Builder(builder: (context) { + UiSizeConfig().init(context); + return BlocProvider.value( + value: authenticationBloc, + child: child, + ); + }), + ); + } + + group('Signup test', () { + testWidgets('when invalid credentials are provided', + (WidgetTester tester) async { + await tester.runAsync(() async { + const nameText = ''; + const emailText = ''; + const passwordText = ''; + + when(() => authenticationBloc.state) + .thenReturn(const AuthenticationInitial()); + + await tester.pumpWidget(createWidget(const SignUpScreen())); + final Finder name = find.byKey(const Key('nameField')); + await tester.enterText(name, nameText); + final Finder email = find.byKey(const Key('emailField')); + await tester.enterText(email, emailText); + final Finder password = find.byKey(const Key('passwordField')); + await tester.enterText(password, passwordText); + final Finder signup = find.byKey(const Key('signupButton')); + await tester.tap(signup); + await tester.pump(); + + verifyNever(() => authenticationBloc.add( + const UserSignUp(email: emailText, password: passwordText), + )); + }); + }); + + testWidgets('when valid credentials are provided', + (WidgetTester tester) async { + await tester.runAsync(() async { + const nameText = 'eve'; + const emailText = 'eve.holt@reqres.in'; + const passwordText = 'cityslicka'; + + when(() => authenticationBloc.state) + .thenReturn(const AuthenticationInitial()); + + await tester.pumpWidget(createWidget(const SignUpScreen())); + final Finder name = find.byKey(const Key('nameField')); + await tester.enterText(name, nameText); + final Finder email = find.byKey(const Key('emailField')); + await tester.enterText(email, emailText); + final Finder password = find.byKey(const Key('passwordField')); + await tester.enterText(password, passwordText); + final Finder signup = find.byKey(const Key('signupButton')); + await tester.tap(signup); + await tester.pump(); + + verify(() => authenticationBloc.add( + const UserSignUp(email: emailText, password: passwordText), + )).called(1); + }); + }); + }); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/favicon.png b/bricks/flutter_starter/__brick__/{{name}}/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-192.png b/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-512.png b/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-192.png b/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-512.png b/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/index.html b/bricks/flutter_starter/__brick__/{{name}}/web/index.html new file mode 100644 index 0000000..4fb51c8 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/web/index.html @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + {{name}} + + + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/manifest.json b/bricks/flutter_starter/__brick__/{{name}}/web/manifest.json new file mode 100644 index 0000000..becec59 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "{{name}}", + "short_name": "{{name}}", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "{{desc}}", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/windows/CMakeLists.txt new file mode 100644 index 0000000..3e04b0e --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/CMakeLists.txt @@ -0,0 +1,101 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project({{name}} LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "{{name}}") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..930d207 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/CMakeLists.txt @@ -0,0 +1,104 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.cc b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..8b6d468 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,11 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + + +void RegisterPlugins(flutter::PluginRegistry* registry) { +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.h b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugins.cmake b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000..b93c4c3 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugins.cmake @@ -0,0 +1,23 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..b9e550f --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/CMakeLists.txt @@ -0,0 +1,32 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/Runner.rc b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/Runner.rc new file mode 100644 index 0000000..d38c60f --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#ifdef FLUTTER_BUILD_NUMBER +#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER +#else +#define VERSION_AS_NUMBER 1,0,0 +#endif + +#ifdef FLUTTER_BUILD_NAME +#define VERSION_AS_STRING #FLUTTER_BUILD_NAME +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example" "\0" + VALUE "FileDescription", "{{name}}" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "{{name}}" "\0" + VALUE "LegalCopyright", "Copyright (C) 2022 {{org}}. All rights reserved." "\0" + VALUE "OriginalFilename", "{{name}}.exe" "\0" + VALUE "ProductName", "{{name}}" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.cpp b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.cpp new file mode 100644 index 0000000..b43b909 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.cpp @@ -0,0 +1,61 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.h b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.h new file mode 100644 index 0000000..6da0652 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/main.cpp b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/main.cpp new file mode 100644 index 0000000..5b7e26f --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.CreateAndShow(L"{{name}}", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resource.h b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resource.h new file mode 100644 index 0000000..66a65d1 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resources/app_icon.ico b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/runner.exe.manifest b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..c977c4a --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.cpp b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.cpp new file mode 100644 index 0000000..f5bf9fa --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.cpp @@ -0,0 +1,64 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, utf8_string.data(), + target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.h b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.h new file mode 100644 index 0000000..3879d54 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.cpp b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.cpp new file mode 100644 index 0000000..c10f08d --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.cpp @@ -0,0 +1,245 @@ +#include "win32_window.h" + +#include + +#include "resource.h" + +namespace { + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + FreeLibrary(user32_module); + } +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + return OnCreate(); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.h b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.h new file mode 100644 index 0000000..17ba431 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.h @@ -0,0 +1,98 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates and shows a win32 window with |title| and position and size using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size to will treat the width height passed in to this function + // as logical pixels and scale to appropriate for the default monitor. Returns + // true if the window was created successfully. + bool CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responsponds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/bricks/flutter_starter/brick.yaml b/bricks/flutter_starter/brick.yaml new file mode 100644 index 0000000..2b23cea --- /dev/null +++ b/bricks/flutter_starter/brick.yaml @@ -0,0 +1,26 @@ +name: flutter_starter +description: Flutter Starter Brick. + +version: 0.1.0+1 + +environment: + mason: ">=0.1.0-dev.26 <0.1.0" + +vars: + name: + type: string + description: Name + default: starter + prompt: Project name? + + desc: + type: string + description: Description + default: New flutter project + prompt: Project description? + + org: + type: string + description: Organization + default: com.example + prompt: Project Organization? diff --git a/bricks/mason-lock.json b/bricks/mason-lock.json index 361334f..a1c0368 100644 --- a/bricks/mason-lock.json +++ b/bricks/mason-lock.json @@ -1,3 +1,7 @@ { - "bricks": {} + "bricks": { + "flutter_starter": { + "path": "flutter_starter" + } + } } \ No newline at end of file diff --git a/bricks/mason.yaml b/bricks/mason.yaml index 4f00993..4cecc1a 100644 --- a/bricks/mason.yaml +++ b/bricks/mason.yaml @@ -1 +1,3 @@ bricks: + flutter_starter: + path: flutter_starter From 9e541b982de4cd6d273c8cf2a8c50bd8a2df01f9 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Tue, 4 Oct 2022 16:34:00 +0530 Subject: [PATCH 03/25] add cli for flutter starter --- cli/lib/src/command_runner.dart | 1 + cli/lib/src/commands/commands.dart | 1 + cli/lib/src/commands/create_command.dart | 69 ++++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 cli/lib/src/commands/create_command.dart diff --git a/cli/lib/src/command_runner.dart b/cli/lib/src/command_runner.dart index e251f2b..207a40f 100644 --- a/cli/lib/src/command_runner.dart +++ b/cli/lib/src/command_runner.dart @@ -28,6 +28,7 @@ class FlutterStarterCliCommandRunner extends CommandRunner { help: 'Noisy logging, including all shell commands executed.', ); + addCommand(CreateCommand(logger: _logger)); addCommand(UpdateCommand(logger: _logger, pubUpdater: _pubUpdater)); } diff --git a/cli/lib/src/commands/commands.dart b/cli/lib/src/commands/commands.dart index 8a90ac2..46e7f2c 100644 --- a/cli/lib/src/commands/commands.dart +++ b/cli/lib/src/commands/commands.dart @@ -1 +1,2 @@ +export 'create_command.dart'; export 'update_command.dart'; diff --git a/cli/lib/src/commands/create_command.dart b/cli/lib/src/commands/create_command.dart new file mode 100644 index 0000000..71d783d --- /dev/null +++ b/cli/lib/src/commands/create_command.dart @@ -0,0 +1,69 @@ +import 'dart:io'; + +import 'package:args/command_runner.dart'; +import 'package:mason/mason.dart'; + +class CreateCommand extends Command { + CreateCommand({ + required Logger logger, + }) : _logger = logger { + argParser + ..addOption( + 'desc', + help: 'The description for the project.', + defaultsTo: 'A New Flutter Project.', + ) + ..addOption( + 'org', + help: 'The organization for the project.', + defaultsTo: 'com.example', + ); + } + + final Logger _logger; + + @override + String get description => 'Creates a new flutter starter project.'; + + @override + String get name => 'create'; + + @override + Future run() async { + final brick = Brick.git( + const GitPath( + 'https://git.geekyants.com/ruchika/flutter-starter-cli', + path: 'bricks/flutter_starter', + ), + ); + final target = DirectoryGeneratorTarget(Directory.current); + final name = _name; + final desc = argResults!['desc'] as String? ?? ''; + final org = argResults!['org'] as String? ?? 'com.example$name'; + final generateProgress = _logger.progress('Project Creating...'); + final generator = await MasonGenerator.fromBrick(brick); + final fileCount = await generator.generate( + target, + logger: _logger, + vars: { + 'name': name, + 'desc': desc, + 'org': org, + }, + ); + generateProgress + .complete('Project Created with ${fileCount.length} Files!'); + return ExitCode.success.code; + } + + String get _name { + final args = argResults!.rest; + if (args.isEmpty) { + usageException('Please provide project name'); + } + if (args.length > 1) { + usageException('Please provide valid project name'); + } + return args.first; + } +} From fb77cf7186da7cffba4ddb401b6a85ac481db489 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Thu, 6 Oct 2022 18:19:01 +0530 Subject: [PATCH 04/25] add api service option --- cli/lib/src/cli.dart | 38 ++++++++++++++++++++++++ cli/lib/src/commands/create_command.dart | 38 ++++++++++++++++++++++-- cli/lib/src/utils.dart | 4 +++ 3 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 cli/lib/src/cli.dart create mode 100644 cli/lib/src/utils.dart diff --git a/cli/lib/src/cli.dart b/cli/lib/src/cli.dart new file mode 100644 index 0000000..4b93d12 --- /dev/null +++ b/cli/lib/src/cli.dart @@ -0,0 +1,38 @@ +import 'dart:io'; + +class Cli { + static Future removeFiles({ + String path = '.', + String api = 'http', + }) async { + await Process.run( + 'rm', + ['-rf', 'lib/api_sdk/${api == "http" ? "dio" : "http"}'], + workingDirectory: path, + ); + } + + static Future pubGet({ + String path = '.', + String api = 'dio', + }) async { + if (api == 'dio') { + await Process.run( + 'flutter', + ['pub', 'add', 'dio', 'retrofit'], + workingDirectory: path, + ); + } else { + await Process.run( + 'flutter', + ['pub', 'add', 'http', 'http_interceptor'], + workingDirectory: path, + ); + } + await Process.run( + 'flutter', + ['pub', 'get'], + workingDirectory: path, + ); + } +} diff --git a/cli/lib/src/commands/create_command.dart b/cli/lib/src/commands/create_command.dart index 71d783d..17f0b47 100644 --- a/cli/lib/src/commands/create_command.dart +++ b/cli/lib/src/commands/create_command.dart @@ -1,6 +1,9 @@ import 'dart:io'; import 'package:args/command_runner.dart'; +import 'package:flutter_starter_cli/src/cli.dart'; +import 'package:flutter_starter_cli/src/command_runner.dart'; +import 'package:flutter_starter_cli/src/utils.dart'; import 'package:mason/mason.dart'; class CreateCommand extends Command { @@ -17,6 +20,13 @@ class CreateCommand extends Command { 'org', help: 'The organization for the project.', defaultsTo: 'com.example', + ) + ..addOption( + 'api', + abbr: 'a', + help: 'The API service for the project.', + defaultsTo: APIService.dio.name, + allowed: [APIService.dio.name, APIService.http.name], ); } @@ -28,6 +38,9 @@ class CreateCommand extends Command { @override String get name => 'create'; + @override + String get invocation => '$executableName $name '; + @override Future run() async { final brick = Brick.git( @@ -36,10 +49,12 @@ class CreateCommand extends Command { path: 'bricks/flutter_starter', ), ); - final target = DirectoryGeneratorTarget(Directory.current); + final dir = Directory.current; + final target = DirectoryGeneratorTarget(dir); final name = _name; - final desc = argResults!['desc'] as String? ?? ''; - final org = argResults!['org'] as String? ?? 'com.example$name'; + final desc = argResults!['desc']; + final org = argResults!['org']; + final api = argResults!['api']; final generateProgress = _logger.progress('Project Creating...'); final generator = await MasonGenerator.fromBrick(brick); final fileCount = await generator.generate( @@ -49,8 +64,10 @@ class CreateCommand extends Command { 'name': name, 'desc': desc, 'org': org, + 'api': api, }, ); + await onGenerateComplete(_logger, '${Directory.current.path}/$name', api); generateProgress .complete('Project Created with ${fileCount.length} Files!'); return ExitCode.success.code; @@ -66,4 +83,19 @@ class CreateCommand extends Command { } return args.first; } + + Future onGenerateComplete( + Logger logger, + String path, + String api, + ) async { + await Cli.removeFiles( + path: path, + api: api, + ); + await Cli.pubGet( + path: path, + api: api, + ); + } } diff --git a/cli/lib/src/utils.dart b/cli/lib/src/utils.dart new file mode 100644 index 0000000..3565b64 --- /dev/null +++ b/cli/lib/src/utils.dart @@ -0,0 +1,4 @@ +enum APIService { + dio, + http, +} From e5c535450c0d29653a5cab6b0da7e87cad6a5cf3 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Fri, 7 Oct 2022 19:03:20 +0530 Subject: [PATCH 05/25] update brick template --- bricks/flutter_starter/__brick__/.DS_Store | Bin 8196 -> 6148 bytes .../{{name}}/integration_test/app_test.dart | 2 +- .../{{name}}/lib/api_sdk/api_sdk.dart | 39 ---------------- .../api_sdk/dio/dio_helpers/dio_client.dart | 16 ++++--- .../api_sdk/dio/dio_helpers/dio_client.g.dart | 32 +++++++++---- .../dio/dio_helpers/dio_interceptor.dart | 3 +- .../{{name}}/lib/api_sdk/dio/dio_service.dart | 15 ++++-- .../lib/api_sdk/dio/models/user_model.dart | 1 + .../{{name}}/lib/api_sdk/dio_api_sdk.dart | 18 +++++++ .../http/http_helpers/http_client.dart | 5 +- .../lib/api_sdk/http/http_service.dart | 5 +- .../{{name}}/lib/api_sdk/http_api_sdk.dart | 19 ++++++++ .../__brick__/{{name}}/lib/app.dart | 5 +- .../lib/{{{name}}.dart => common_export.dart} | 44 +++++++----------- .../__brick__/{{name}}/lib/main.dart | 5 +- .../__brick__/{{name}}/lib/routes/routes.dart | 9 ++-- .../{{name}}/lib/screens/home/home.dart | 7 +-- .../lib/screens/login/login_screen.dart | 3 +- .../lib/screens/login/widgets/login_form.dart | 3 +- .../lib/screens/signup/signup_screen.dart | 4 +- .../screens/signup/widgets/signup_form.dart | 3 +- .../lib/screens/splash/splash_screen.dart | 3 +- .../authentication/authentication_bloc.dart | 3 +- .../bloc/update_theme/update_theme_bloc.dart | 7 ++- .../bloc/update_theme/update_theme_event.dart | 2 +- .../bloc/update_theme/update_theme_state.dart | 4 +- ...ry.dart => authentication_repository.dart} | 8 ++-- .../dio_authentication_repository.dart | 10 ---- .../{{name}}/lib/utils/size_utils.dart | 3 +- .../__brick__/{{name}}/pubspec.lock | 13 ++---- .../__brick__/{{name}}/pubspec.yaml | 5 -- .../authentication_bloc_test.dart | 2 +- .../authentication_event_test.dart | 2 +- .../authentication_state_test.dart | 2 +- .../update_theme/update_theme_bloc_test.dart | 2 +- .../update_theme/update_theme_event_test.dart | 2 +- .../update_theme/update_theme_state_test.dart | 2 +- .../test/screens/home/logout_test.dart | 2 +- .../test/screens/login/login_test.dart | 2 +- .../test/screens/signup/signup_test.dart | 2 +- 40 files changed, 158 insertions(+), 156 deletions(-) delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/api_sdk.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio_api_sdk.dart create mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http_api_sdk.dart rename bricks/flutter_starter/__brick__/{{name}}/lib/{{{name}}.dart => common_export.dart} (53%) rename bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/{http_authentication_repository.dart => authentication_repository.dart} (73%) delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/dio_authentication_repository.dart diff --git a/bricks/flutter_starter/__brick__/.DS_Store b/bricks/flutter_starter/__brick__/.DS_Store index 8bddbcd6ded627099623f296fa90d88b8ca5d75f..a1ba6ab2c59a6d554934199c2be58ae6d51bd3df 100644 GIT binary patch delta 152 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{MGjdEU6q~50$jCG?VE1GL8J5W`f`XG31R90S z40IHXO)P446sj$afNT?Ev&mZoTqfTT*WcLifORoD2Ztat&;%e5;06+|Aj38merKM{ eFJq|y5@uvzV1m*tAR5R4SqpLr!{&INIm`fnX&Gez literal 8196 zcmeHMUu+ab7@u!j%C24L6bo$OfP*S1UZ4j8EhrrA@u!qh==FcmdUw0f4ST!wcJB_U z)iWB6!i#?&#b}I)5<(CXUmzHX^1=hAA(1E=gV85nG$x=XelxR&l(vZvYKZPMJKxUt zXLjbdzi+0qM+kwYoE{}aBZSC!F-a@2nxrs0yCxLL*C;3f;|a+SgN%~VRKXpd;2kIe z1OfyC1OfyC1Of!^1O#x;W<{Q2-xt=P4iE?s_+KKx)`u`&OvZd!6p}9;Sn(qO%5qfm zg7 zoj^>;pbiiS5SWMnJG;wd1pjQ3y!HH^vYZs!K1vN+rt8($Uk0hHd|JhHdAeLFKav=7 z3JEXi<=m!Zc7U}y9mh(Q?vtr*(W53aCBY6Xe2zcwqbQ7yryx@=%^yku3NdGWAK2Lv7ML1RKQ;j$c)>j zc6hRR>2BIe;W(M^gh^ZbqlvVW;U6w)f2#dh9@P z`+Lo_V<*f*#vrY75uFxn?#>!{M5QO~Sh&?|K`&eYrQI$5uocQ#0A&NVs=?90p>aqJPhn#G>hKFqptyN#@ivMyH7 z=1z!meCFKH;(M2`e6Vq2^S0LZu_{_UORZ7o^yE#~Oj$-(!PLE>zNDKrY~8f?_v0(F zJ#(LFWEFZ$>9ms>g9mA~+I*ST$-TLh`FPIso*0`&tE(0))YQE?j-$=dS&&Xo%L=zF zS*U3P%+j1Su-0XntCud*)J_*Mph@5HfrzSh9zd#4R}rE0QB~`*k}1QYx+22XtW~w1 zyqFwq^_A;4s9G<+$_$R!t%iuN-W1ccN7<8iCS9+6*syU_7yQS^(bn${C9_6*0om$n zx1*N7K-9CKExPGB%*fEv7HYd>xsP?YS=SAnPhJ;vz}t=dvu<#SRxa z_;s=6T#`B=2;p!lHKnF6*`Bz7EF}%N2X>Nu#39d+BjhMKMb4137!I$tAT!ru9I^2L?rE+PSR3TBRR*Fa~q?J;= z6qVLX&C*V3kJKSXFO@QLVEnA4G`1%upPL^Ri6xz!Jh4LCTXwXnZFhWPeKC`frd^X7*ZsEejb)h^5#rjC#r?3d_Lw>J?7;Hs;?|@cl zgKnSUd%=KxFvMBzK@JLV5Dvk!@Ekl3FCf!j;Y@!6j>22;HoODx!f`kOC*eal1!v$a zoP&?y6XgCyxC~#zHTdo}M(-NWX!vC^MrWLO+}}gxhKeJwEPHe`_Wd)KIS)7DH8^bo&UE?{r!Kc@IW6R5Fqd$Kmf|)iFgxEWU56& zLR%QG$M9l>`4xraAy_dNrsv0TlsA7c#QU&si}|uBBwDci>mLIC;eV`y{Xf|M*>B)? H`u_h1iCo0W diff --git a/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart b/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart index 843fc60..85604a7 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/api_sdk.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/api_sdk.dart deleted file mode 100644 index 3871625..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/api_sdk.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'package:{{name}}/api_sdk/dio/dio_service.dart'; -import 'package:{{name}}/{{name}}.dart'; - -import 'http/http_helpers/http_apis.dart'; - -// example network calls made from app - -/// This file can be omitted and Service can directly use at repository level -class ApiSdk { - // Http Service - static loginWithEmailAndPassword(dynamic body) async { - final response = await HttpService.postData(HttpApis.login, body); - return response; - } - - // Http Service - static signUpWithEmailAndPassword(dynamic body) async { - final response = await HttpService.postData(HttpApis.register, body); - return response; - } - - // Http Service - static getUserData(int id) async { - final response = await HttpService.getData(HttpApis.users(id)); - return response; - } - - // Dio Service - static getUserDataDio(int id) async { - final response = await DioService.getUserData(id); - return response; - } - - // Dio Service - static postUserDataDio(dynamic body) async { - final response = await DioService.postUserData(body); - return response; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart index 2dad8da..7826e14 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart @@ -1,8 +1,9 @@ -import 'package:{{name}}/api_sdk/dio/models/user_model.dart'; -import 'package:{{name}}/config/config.dart'; -import 'package:{{name}}/{{name}}.dart'; -import 'package:retrofit/retrofit.dart'; import 'package:dio/dio.dart'; +import 'package:retrofit/retrofit.dart'; + +import '../../../config/config.dart'; +import 'dio_apis.dart'; + part 'dio_client.g.dart'; @RestApi(baseUrl: baseUrl) @@ -10,8 +11,11 @@ abstract class DioClient { factory DioClient(Dio dio, {String baseUrl}) = _DioClient; @GET(DioApis.users) - Future getUsers(@Path("id") int id); + Future getUsers(@Path("id") int id); @POST(DioApis.login) - Future createPost(@Body() dynamic body); + Future loginUser(@Body() dynamic body); + + @POST(DioApis.register) + Future registerUser(@Body() dynamic body); } diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart index 39fdf60..f963aea 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart @@ -18,23 +18,22 @@ class _DioClient implements DioClient { String? baseUrl; @override - Future getUsers(id) async { + Future getUsers(id) async { const _extra = {}; final queryParameters = {}; final _headers = {}; final _data = {}; - final _result = await _dio.fetch>( - _setStreamType( - Options(method: 'GET', headers: _headers, extra: _extra) - .compose(_dio.options, '/users/${id}', - queryParameters: queryParameters, data: _data) - .copyWith(baseUrl: baseUrl ?? _dio.options.baseUrl))); - final value = DioResponseData.fromJson(_result.data!); + final _result = await _dio.fetch(_setStreamType( + Options(method: 'GET', headers: _headers, extra: _extra) + .compose(_dio.options, '/users/${id}', + queryParameters: queryParameters, data: _data) + .copyWith(baseUrl: baseUrl ?? _dio.options.baseUrl))); + final value = _result.data; return value; } @override - Future createPost(body) async { + Future loginUser(body) async { const _extra = {}; final queryParameters = {}; final _headers = {}; @@ -48,6 +47,21 @@ class _DioClient implements DioClient { return value; } + @override + Future registerUser(body) async { + const _extra = {}; + final queryParameters = {}; + final _headers = {}; + final _data = body; + final _result = await _dio.fetch(_setStreamType( + Options(method: 'POST', headers: _headers, extra: _extra) + .compose(_dio.options, '/register', + queryParameters: queryParameters, data: _data) + .copyWith(baseUrl: baseUrl ?? _dio.options.baseUrl))); + final value = _result.data; + return value; + } + RequestOptions _setStreamType(RequestOptions requestOptions) { if (T != dynamic && !(requestOptions.responseType == ResponseType.bytes || diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart index d02c8a9..d4a70d5 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart @@ -1,5 +1,6 @@ import 'package:dio/dio.dart'; -import 'package:{{name}}/{{name}}.dart'; + +import 'dio_exceptions.dart'; class DioInterceptor extends Interceptor { @override diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart index 8d40d45..84c80a2 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart @@ -1,6 +1,7 @@ import 'package:dio/dio.dart'; -import 'package:{{name}}/api_sdk/dio/models/user_model.dart'; -import 'package:{{name}}/{{name}}.dart'; + +import 'dio_helpers/dio_client.dart'; +import 'dio_helpers/dio_interceptor.dart'; class DioApi { DioApi._internal(); @@ -30,9 +31,15 @@ class DioService { return response; } - static postUserData(dynamic body) async { + static loginUser(dynamic body) async { + final client = DioClient(DioApi.createDio()); + final response = await client.loginUser(body); + return response; + } + + static registerUser(dynamic body) async { final client = DioClient(DioApi.createDio()); - final response = await client.createPost(body); + final response = await client.loginUser(body); return response; } } diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart index a008837..b4b4803 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart @@ -1,4 +1,5 @@ import 'package:json_annotation/json_annotation.dart'; + part 'user_model.g.dart'; @JsonSerializable() diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio_api_sdk.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio_api_sdk.dart new file mode 100644 index 0000000..0c11611 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio_api_sdk.dart @@ -0,0 +1,18 @@ +import 'dio/dio_service.dart'; + +class ApiSdk { + static loginWithEmailAndPassword(dynamic body) async { + final response = await DioService.loginUser(body); + return response; + } + + static signUpWithEmailAndPassword(dynamic body) async { + final response = await DioService.registerUser(body); + return response; + } + + static getUserData(int id) async { + final response = await DioService.getUserData(id); + return response; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart index 40a3933..ef5292b 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart @@ -1,14 +1,13 @@ import 'dart:convert'; import 'dart:io'; -import 'package:{{name}}/config/config.dart'; import 'package:http/http.dart' as http; -import 'package:http/http.dart'; +import '../../../config/config.dart'; import 'http_exception.dart'; class HttpClient { - final Client client; + final http.Client client; HttpClient({required this.client}); Future get( String url, { diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart index cb9bd68..b509392 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart @@ -1,8 +1,9 @@ -import 'package:{{name}}/config/config.dart'; -import 'package:{{name}}/{{name}}.dart'; import 'package:http/http.dart'; import 'package:http_interceptor/http/intercepted_client.dart'; +import 'http_helpers/http_client.dart'; +import 'http_helpers/http_interceptor.dart'; + class HttpApi { HttpApi._internal(); diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http_api_sdk.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http_api_sdk.dart new file mode 100644 index 0000000..2de3065 --- /dev/null +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http_api_sdk.dart @@ -0,0 +1,19 @@ +import 'http/http_helpers/http_apis.dart'; +import 'http/http_service.dart'; + +class ApiSdk { + static loginWithEmailAndPassword(dynamic body) async { + final response = await HttpService.postData(HttpApis.login, body); + return response; + } + + static signUpWithEmailAndPassword(dynamic body) async { + final response = await HttpService.postData(HttpApis.register, body); + return response; + } + + static getUserData(int id) async { + final response = await HttpService.getData(HttpApis.users(id)); + return response; + } +} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart index 17e57d6..5d13045 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:{{name}}/{{name}}.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; + +import 'common_export.dart'; class App extends StatelessWidget { const App({Key? key}) : super(key: key); diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/{{name}}.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/common_export.dart similarity index 53% rename from bricks/flutter_starter/__brick__/{{name}}/lib/{{name}}.dart rename to bricks/flutter_starter/__brick__/{{name}}/lib/common_export.dart index ef13b14..0f5e03b 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/{{name}}.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/common_export.dart @@ -1,37 +1,27 @@ -export 'api_sdk/http/http_service.dart'; -export 'api_sdk/http/http_helpers/http_client.dart'; -export 'api_sdk/http/http_helpers/http_interceptor.dart'; -export 'shared/models/firebase_user.dart'; +export 'api_sdk/{{api}}_api_sdk.dart'; +export 'app.dart'; +export 'routes/routes.dart'; +export 'screens/home/home.dart'; +export 'screens/login/login_screen.dart'; +export 'screens/login/widgets/login_form.dart'; +export 'screens/signup/signup_screen.dart'; +export 'screens/signup/widgets/signup_form.dart'; +export 'screens/splash/splash_screen.dart'; +export 'shared/bloc/authentication/authentication_bloc.dart'; export 'shared/bloc/bloc_controller.dart'; +export 'shared/bloc/update_theme/update_theme_bloc.dart'; +export 'shared/models/current_user_data.dart'; +export 'shared/models/current_user_data.dart'; +export 'shared/models/firebase_user.dart'; export 'shared/models/firebase_user.dart'; -export 'shared/repository/http_authentication_repository.dart'; -export 'api_sdk/api_sdk.dart'; export 'shared/models/token.dart'; export 'shared/models/user.dart'; export 'shared/models/user_data.dart'; -export 'shared/models/current_user_data.dart'; +export 'shared/repository/authentication_repository.dart'; export 'shared/shared.dart'; -export 'shared/bloc/authentication/authentication_bloc.dart'; -export 'shared/models/current_user_data.dart'; -export 'app.dart'; export 'themes/color_constants.dart'; -export 'utils/image_constants.dart'; export 'themes/theme_data.dart'; -export 'routes/routes.dart'; -export 'screens/login/widgets/login_form.dart'; -export 'screens/signup/widgets/signup_form.dart'; -export '/widgets/cache_image_widget.dart'; -export 'screens/splash/splash_screen.dart'; -export 'screens/home/home.dart'; -export 'api_sdk/dio/dio_helpers/dio_apis.dart'; -export 'api_sdk/dio/dio_helpers/dio_client.dart'; -export 'shared/repository/dio_authentication_repository.dart'; -export 'api_sdk/dio/dio_helpers/dio_exceptions.dart'; -export 'api_sdk/dio/dio_helpers/dio_interceptor.dart'; -export 'package:{{name}}/shared/bloc/update_theme/update_theme_event.dart'; -export 'package:{{name}}/shared/bloc/update_theme/update_theme_state.dart'; -export 'package:{{name}}/shared/bloc/update_theme/update_theme_bloc.dart'; +export 'utils/image_constants.dart'; export 'utils/responsive.dart'; export 'utils/size_utils.dart'; -export 'screens/login/login_screen.dart'; -export 'screens/signup/signup_screen.dart'; +export 'widgets/cache_image_widget.dart'; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart index 6bbe7d4..1c226f5 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart @@ -1,6 +1,7 @@ -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +import 'common_export.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart index 37d5d7d..c88e1d1 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart @@ -1,7 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:{{name}}/{{name}}.dart'; import 'package:go_router/go_router.dart'; +import '../common_export.dart'; + final GoRouter router = GoRouter( initialLocation: '/', routes: [ @@ -32,10 +33,8 @@ final GoRouter router = GoRouter( ], ); - - /// routes for the app Without go_router -// import 'package:{{name}}/{{name}}.dart'; +// import 'package:flutter_starter/flutter_starter.dart'; // import 'package:flutter/material.dart'; @@ -50,4 +49,4 @@ final GoRouter router = GoRouter( // default: // return MaterialPageRoute(builder: (_) => const SplashScreen()); // } -// } \ No newline at end of file +// } diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart index 7ba9419..973a77e 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart @@ -1,11 +1,12 @@ -// home screen contents -import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; + +import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:{{name}}/{{name}}.dart'; import 'package:go_router/go_router.dart'; +import '../../common_export.dart'; + class HomeScreen extends StatefulWidget { const HomeScreen({Key? key}) : super(key: key); diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart index 404fcf0..a3c8d6e 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart @@ -1,9 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:go_router/go_router.dart'; +import '../../common_export.dart'; + class LoginScreen extends StatefulWidget { const LoginScreen({Key? key}) : super(key: key); diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart index 089bf15..bc0d978 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:{{name}}/{{name}}.dart'; + +import '../../../common_export.dart'; class LoginForm extends StatefulWidget { final AuthenticationBloc authenticationBloc; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart index f75ec42..0f60767 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart @@ -1,9 +1,11 @@ import 'package:flutter/material.dart'; + import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:go_router/go_router.dart'; +import '../../common_export.dart'; + class SignUpScreen extends StatefulWidget { const SignUpScreen({Key? key}) : super(key: key); diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart index 78a77f0..288fabb 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:{{name}}/{{name}}.dart'; + +import '../../../common_export.dart'; class SignUpForm extends StatefulWidget { final AuthenticationBloc authenticationBloc; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart index d609cce..4449289 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart @@ -1,8 +1,9 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; import 'package:go_router/go_router.dart'; +import '../../common_export.dart'; + class SplashScreen extends StatefulWidget { const SplashScreen({Key? key}) : super(key: key); diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart index f84b563..de0e063 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart @@ -1,6 +1,7 @@ import 'package:equatable/equatable.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; + +import '../../../common_export.dart'; part 'authentication_event.dart'; part 'authentication_state.dart'; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart index a73252a..cebc977 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart @@ -1,5 +1,8 @@ -import 'package:bloc/bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; +import 'package:equatable/equatable.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; + +part 'update_theme_event.dart'; +part 'update_theme_state.dart'; class UpdateThemeBloc extends Bloc { UpdateThemeBloc() : super(const SetTheme(appTheme: AppTheme.light)) { diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart index 9948ff1..85776e9 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart @@ -1,4 +1,4 @@ -import 'package:equatable/equatable.dart'; +part of 'update_theme_bloc.dart'; enum AppTheme { light, dark } diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart index 910e8a0..a9af389 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart @@ -1,6 +1,4 @@ -import 'package:equatable/equatable.dart'; - -import '../../../{{name}}.dart'; +part of 'update_theme_bloc.dart'; abstract class UpdateThemeState extends Equatable { const UpdateThemeState(); diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/http_authentication_repository.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/authentication_repository.dart similarity index 73% rename from bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/http_authentication_repository.dart rename to bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/authentication_repository.dart index 4e354a5..839f329 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/http_authentication_repository.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/authentication_repository.dart @@ -1,10 +1,9 @@ -import 'package:{{name}}/{{name}}.dart'; +import '../../common_export.dart'; class AuthenticationRepository { Future signUpWithEmailAndPassword( String email, String password) async { - await Future.delayed( - const Duration(seconds: 1)); // simulate a network delay + await Future.delayed(const Duration(seconds: 1)); final response = await ApiSdk.signUpWithEmailAndPassword( {'email': email, 'password': password}); @@ -13,8 +12,7 @@ class AuthenticationRepository { Future loginWithEmailAndPassword( String email, String password) async { - await Future.delayed( - const Duration(seconds: 1)); // simulate a network delay + await Future.delayed(const Duration(seconds: 1)); final response = await ApiSdk.loginWithEmailAndPassword( {'email': email, 'password': password}); diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/dio_authentication_repository.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/dio_authentication_repository.dart deleted file mode 100644 index d0fb056..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/dio_authentication_repository.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:{{name}}/api_sdk/dio/dio_service.dart'; -import 'package:{{name}}/api_sdk/dio/models/user_model.dart'; - -class DioAuthenticationRepository { - Future getUserData(int id) async { - final response = await DioService.getUserData(id); - - return response; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart index fc82bb6..4740ed1 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:{{name}}/{{name}}.dart'; + +import '../common_export.dart'; /// [SizeConfig] to make project scalable class UiSizeConfig { diff --git a/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock b/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock index 3052fbe..f0bc20f 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock +++ b/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock @@ -226,7 +226,7 @@ packages: source: hosted version: "0.4.1" dio: - dependency: "direct main" + dependency: transitive description: name: dio url: "https://pub.dartlang.org" @@ -375,19 +375,12 @@ packages: source: hosted version: "0.15.0" http: - dependency: "direct main" + dependency: transitive description: name: http url: "https://pub.dartlang.org" source: hosted version: "0.13.5" - http_interceptor: - dependency: "direct main" - description: - name: http_interceptor - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" http_multi_server: dependency: transitive description: @@ -660,7 +653,7 @@ packages: source: hosted version: "3.1.0" retrofit: - dependency: "direct main" + dependency: transitive description: name: retrofit url: "https://pub.dartlang.org" diff --git a/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml b/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml index 8fcbaf0..6016e87 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml +++ b/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml @@ -14,17 +14,12 @@ dependencies: flutter_localizations: sdk: flutter intl: ^0.17.0 - cupertino_icons: ^1.0.5 flutter_bloc: ^8.1.1 equatable: ^2.0.3 fluttertoast: ^8.0.9 cached_network_image: ^3.2.0 - http: - http_interceptor: ^1.0.2 shared_preferences: ^2.0.12 - retrofit: ^3.0.1+1 - dio: ^4.0.6 built_value: ^8.4.1 json_annotation: ^4.6.0 bloc: ^8.1.0 diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart index 24dd0cc..86cc877 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart @@ -1,5 +1,5 @@ import 'package:bloc_test/bloc_test.dart'; -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart index 6673991..111fe0c 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart @@ -1,6 +1,6 @@ // ignore_for_file: prefer_const_constructors -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart index b081910..e6814a3 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart @@ -1,6 +1,6 @@ // ignore_for_file: prefer_const_constructors -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart index 09125fc..ee58891 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart @@ -1,5 +1,5 @@ import 'package:bloc_test/bloc_test.dart'; -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart index 8ca75ba..02d09ad 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart @@ -1,6 +1,6 @@ // ignore_for_file: prefer_const_constructors -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart index be2036c..21f2783 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart @@ -1,6 +1,6 @@ // ignore_for_file: prefer_const_constructors -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart index a1b5eb2..c53eb65 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart @@ -1,7 +1,7 @@ import 'package:bloc_test/bloc_test.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart index c89e7e0..f9678fa 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart @@ -1,7 +1,7 @@ import 'package:bloc_test/bloc_test.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart index 4322c2f..362e67f 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart +++ b/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart @@ -1,7 +1,7 @@ import 'package:bloc_test/bloc_test.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/{{name}}.dart'; +import 'package:{{name}}/common_export.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; From b90f1711888b372ccb5fd12e49c34029e05e321c Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Fri, 7 Oct 2022 19:03:49 +0530 Subject: [PATCH 06/25] add interactive cli --- cli/lib/src/cli.dart | 23 ++++++- cli/lib/src/commands/create_command.dart | 87 ++++++++++++++++++++---- cli/lib/src/utils.dart | 13 ++++ 3 files changed, 108 insertions(+), 15 deletions(-) diff --git a/cli/lib/src/cli.dart b/cli/lib/src/cli.dart index 4b93d12..864f6d2 100644 --- a/cli/lib/src/cli.dart +++ b/cli/lib/src/cli.dart @@ -7,12 +7,16 @@ class Cli { }) async { await Process.run( 'rm', - ['-rf', 'lib/api_sdk/${api == "http" ? "dio" : "http"}'], + [ + '-rf', + 'lib/api_sdk/${api == "http" ? "dio" : "http"}', + 'lib/api_sdk/${api == "http" ? "dio" : "http"}_api_sdk.dart', + ], workingDirectory: path, ); } - static Future pubGet({ + static Future addPub({ String path = '.', String api = 'dio', }) async { @@ -29,10 +33,25 @@ class Cli { workingDirectory: path, ); } + } + + static Future pubGet({ + String path = '.', + }) async { await Process.run( 'flutter', ['pub', 'get'], workingDirectory: path, ); } + + static Future gitInit({ + String path = '.', + }) async { + await Process.run( + 'git', + ['init'], + workingDirectory: path, + ); + } } diff --git a/cli/lib/src/commands/create_command.dart b/cli/lib/src/commands/create_command.dart index 17f0b47..2ffee31 100644 --- a/cli/lib/src/commands/create_command.dart +++ b/cli/lib/src/commands/create_command.dart @@ -25,8 +25,13 @@ class CreateCommand extends Command { 'api', abbr: 'a', help: 'The API service for the project.', - defaultsTo: APIService.dio.name, allowed: [APIService.dio.name, APIService.http.name], + ) + ..addFlag( + 'git', + abbr: 'g', + help: 'Initialize Git Repository.', + defaultsTo: null, ); } @@ -43,6 +48,7 @@ class CreateCommand extends Command { @override Future run() async { + Status.init(_logger); final brick = Brick.git( const GitPath( 'https://git.geekyants.com/ruchika/flutter-starter-cli', @@ -52,10 +58,11 @@ class CreateCommand extends Command { final dir = Directory.current; final target = DirectoryGeneratorTarget(dir); final name = _name; - final desc = argResults!['desc']; - final org = argResults!['org']; - final api = argResults!['api']; - final generateProgress = _logger.progress('Project Creating...'); + final desc = _desc; + final org = _org; + final api = _api; + final git = _git; + Status.start('Project Creating...'); final generator = await MasonGenerator.fromBrick(brick); final fileCount = await generator.generate( target, @@ -67,35 +74,89 @@ class CreateCommand extends Command { 'api': api, }, ); - await onGenerateComplete(_logger, '${Directory.current.path}/$name', api); - generateProgress - .complete('Project Created with ${fileCount.length} Files!'); + Status.end('Project Created with ${fileCount.length} Files!!!'); + await onGenerateComplete( + _logger, '${Directory.current.path}/$name', api, git); + _logger.success('Your Project is Ready to Use 🚀'); return ExitCode.success.code; } String get _name { final args = argResults!.rest; if (args.isEmpty) { - usageException('Please provide project name'); - } - if (args.length > 1) { - usageException('Please provide valid project name'); + return _logger.prompt( + 'Name of the Project?', + defaultValue: 'counter', + ); } return args.first; } + String get _api { + return argResults?['api'] ?? + _logger.chooseOne( + 'Select the API Service', + choices: [APIService.dio.name, APIService.http.name], + defaultValue: APIService.dio.name, + ); + } + + String get _desc { + return argResults?['desc'] ?? + _logger.prompt( + 'Please Enter the Description', + defaultValue: 'A New Flutter Project.', + ); + } + + String get _org { + return argResults?['org'] ?? + _logger.prompt( + 'Please Enter the Organization', + defaultValue: 'com.example', + ); + } + + bool get _git { + return argResults?['git'] ?? + _logger.confirm( + 'Initialize Git Repository?', + defaultValue: false, + ); + } + Future onGenerateComplete( Logger logger, String path, String api, + bool git, ) async { + Status.start('Running Basic Setup...'); await Cli.removeFiles( path: path, api: api, ); - await Cli.pubGet( + Status.end('Basic Setup Completed!!!'); + + Status.start('Adding dependencies...'); + await Cli.addPub( path: path, api: api, ); + Status.end('Dependencies Added!!!'); + + Status.start('Running Pub Get...'); + await Cli.pubGet( + path: path, + ); + Status.end('Pub Get Completed!!!'); + + if (git) { + Status.start('Initialize Git...'); + await Cli.gitInit( + path: path, + ); + Status.end('Git Initialized!!!'); + } } } diff --git a/cli/lib/src/utils.dart b/cli/lib/src/utils.dart index 3565b64..fc6aa89 100644 --- a/cli/lib/src/utils.dart +++ b/cli/lib/src/utils.dart @@ -1,4 +1,17 @@ +import 'package:mason_logger/mason_logger.dart'; + enum APIService { dio, http, } + +class Status { + static late Progress progress; + static late Logger logger; + + static init(log) => logger = log; + + static start(String message) => progress = logger.progress(message); + + static end(String message) => progress.complete(message); +} From 22a3f1925d1a7d577383f5f7f393c8dc3ca11e23 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Mon, 10 Oct 2022 17:45:14 +0530 Subject: [PATCH 07/25] update template --- .../__brick__/{{name}}/pubspec.lock | 991 ------------------ .../__brick__/{{name}}/pubspec.yaml | 4 + 2 files changed, 4 insertions(+), 991 deletions(-) delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/pubspec.lock diff --git a/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock b/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock deleted file mode 100644 index f0bc20f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/pubspec.lock +++ /dev/null @@ -1,991 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _fe_analyzer_shared: - dependency: transitive - description: - name: _fe_analyzer_shared - url: "https://pub.dartlang.org" - source: hosted - version: "47.0.0" - analyzer: - dependency: transitive - description: - name: analyzer - url: "https://pub.dartlang.org" - source: hosted - version: "4.7.0" - archive: - dependency: transitive - description: - name: archive - url: "https://pub.dartlang.org" - source: hosted - version: "3.3.0" - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "2.3.1" - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - bloc: - dependency: "direct main" - description: - name: bloc - url: "https://pub.dartlang.org" - source: hosted - version: "8.1.0" - bloc_test: - dependency: "direct dev" - description: - name: bloc_test - url: "https://pub.dartlang.org" - source: hosted - version: "9.1.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - build: - dependency: transitive - description: - name: build - url: "https://pub.dartlang.org" - source: hosted - version: "2.3.1" - build_config: - dependency: transitive - description: - name: build_config - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" - build_daemon: - dependency: transitive - description: - name: build_daemon - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" - build_resolvers: - dependency: transitive - description: - name: build_resolvers - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.10" - build_runner: - dependency: "direct dev" - description: - name: build_runner - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.1" - build_runner_core: - dependency: transitive - description: - name: build_runner_core - url: "https://pub.dartlang.org" - source: hosted - version: "7.2.4" - built_collection: - dependency: transitive - description: - name: built_collection - url: "https://pub.dartlang.org" - source: hosted - version: "5.1.1" - built_value: - dependency: "direct main" - description: - name: built_value - url: "https://pub.dartlang.org" - source: hosted - version: "8.4.1" - built_value_generator: - dependency: "direct dev" - description: - name: built_value_generator - url: "https://pub.dartlang.org" - source: hosted - version: "8.4.1" - cached_network_image: - dependency: "direct main" - description: - name: cached_network_image - url: "https://pub.dartlang.org" - source: hosted - version: "3.2.2" - cached_network_image_platform_interface: - dependency: transitive - description: - name: cached_network_image_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - cached_network_image_web: - dependency: transitive - description: - name: cached_network_image_web - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - code_builder: - dependency: transitive - description: - name: code_builder - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.0" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.2" - coverage: - dependency: transitive - description: - name: coverage - url: "https://pub.dartlang.org" - source: hosted - version: "1.5.0" - crypto: - dependency: transitive - description: - name: crypto - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.2" - csslib: - dependency: transitive - description: - name: csslib - url: "https://pub.dartlang.org" - source: hosted - version: "0.17.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - dart_style: - dependency: transitive - description: - name: dart_style - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.4" - diff_match_patch: - dependency: transitive - description: - name: diff_match_patch - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.1" - dio: - dependency: transitive - description: - name: dio - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.6" - equatable: - dependency: "direct main" - description: - name: equatable - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.5" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - file: - dependency: transitive - description: - name: file - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.2" - fixnum: - dependency: transitive - description: - name: fixnum - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_bloc: - dependency: "direct main" - description: - name: flutter_bloc - url: "https://pub.dartlang.org" - source: hosted - version: "8.1.1" - flutter_blurhash: - dependency: transitive - description: - name: flutter_blurhash - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.0" - flutter_cache_manager: - dependency: transitive - description: - name: flutter_cache_manager - url: "https://pub.dartlang.org" - source: hosted - version: "3.3.0" - flutter_driver: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_localizations: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_native_splash: - dependency: "direct dev" - description: - name: flutter_native_splash - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.9" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - fluttertoast: - dependency: "direct main" - description: - name: fluttertoast - url: "https://pub.dartlang.org" - source: hosted - version: "8.0.9" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.3" - fuchsia_remote_debug_protocol: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - glob: - dependency: transitive - description: - name: glob - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - go_router: - dependency: "direct main" - description: - name: go_router - url: "https://pub.dartlang.org" - source: hosted - version: "4.5.1" - graphs: - dependency: transitive - description: - name: graphs - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - html: - dependency: transitive - description: - name: html - url: "https://pub.dartlang.org" - source: hosted - version: "0.15.0" - http: - dependency: transitive - description: - name: http - url: "https://pub.dartlang.org" - source: hosted - version: "0.13.5" - http_multi_server: - dependency: transitive - description: - name: http_multi_server - url: "https://pub.dartlang.org" - source: hosted - version: "3.2.1" - http_parser: - dependency: transitive - description: - name: http_parser - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.1" - image: - dependency: transitive - description: - name: image - url: "https://pub.dartlang.org" - source: hosted - version: "3.2.0" - integration_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - intl: - dependency: "direct main" - description: - name: intl - url: "https://pub.dartlang.org" - source: hosted - version: "0.17.0" - io: - dependency: transitive - description: - name: io - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.3" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - json_annotation: - dependency: "direct main" - description: - name: json_annotation - url: "https://pub.dartlang.org" - source: hosted - version: "4.6.0" - json_serializable: - dependency: "direct dev" - description: - name: json_serializable - url: "https://pub.dartlang.org" - source: hosted - version: "6.3.2" - lint: - dependency: transitive - description: - name: lint - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - logging: - dependency: transitive - description: - name: logging - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - mime: - dependency: transitive - description: - name: mime - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - mocktail: - dependency: "direct dev" - description: - name: mocktail - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.0" - nested: - dependency: transitive - description: - name: nested - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - node_preamble: - dependency: transitive - description: - name: node_preamble - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - octo_image: - dependency: transitive - description: - name: octo_image - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - package_config: - dependency: transitive - description: - name: package_config - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - path_provider: - dependency: transitive - description: - name: path_provider - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.11" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.20" - path_provider_ios: - dependency: transitive - description: - name: path_provider_ios - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.11" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.7" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.3" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.11.1" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "5.0.0" - platform: - dependency: transitive - description: - name: platform - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - pool: - dependency: transitive - description: - name: pool - url: "https://pub.dartlang.org" - source: hosted - version: "1.5.1" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.4" - provider: - dependency: transitive - description: - name: provider - url: "https://pub.dartlang.org" - source: hosted - version: "6.0.3" - pub_semver: - dependency: transitive - description: - name: pub_semver - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - pubspec_parse: - dependency: transitive - description: - name: pubspec_parse - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - quiver: - dependency: transitive - description: - name: quiver - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" - retrofit: - dependency: transitive - description: - name: retrofit - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1+1" - retrofit_generator: - dependency: "direct dev" - description: - name: retrofit_generator - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.3+2" - rxdart: - dependency: transitive - description: - name: rxdart - url: "https://pub.dartlang.org" - source: hosted - version: "0.27.5" - shared_preferences: - dependency: "direct main" - description: - name: shared_preferences - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.15" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.13" - shared_preferences_ios: - dependency: transitive - description: - name: shared_preferences_ios - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - shared_preferences_macos: - dependency: transitive - description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - shelf: - dependency: transitive - description: - name: shelf - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.2" - shelf_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" - shelf_static: - dependency: transitive - description: - name: shelf_static - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_gen: - dependency: transitive - description: - name: source_gen - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.3" - source_helper: - dependency: transitive - description: - name: source_helper - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.3" - source_map_stack_trace: - dependency: transitive - description: - name: source_map_stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - source_maps: - dependency: transitive - description: - name: source_maps - url: "https://pub.dartlang.org" - source: hosted - version: "0.10.10" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - sqflite: - dependency: transitive - description: - name: sqflite - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.3+1" - sqflite_common: - dependency: transitive - description: - name: sqflite_common - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.1+1" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - stream_transform: - dependency: transitive - description: - name: stream_transform - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - sync_http: - dependency: transitive - description: - name: sync_http - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.1" - synchronized: - dependency: transitive - description: - name: synchronized - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.0+3" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test: - dependency: transitive - description: - name: test - url: "https://pub.dartlang.org" - source: hosted - version: "1.21.4" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - test_core: - dependency: transitive - description: - name: test_core - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.16" - timing: - dependency: transitive - description: - name: timing - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - tuple: - dependency: transitive - description: - name: tuple - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - universal_io: - dependency: transitive - description: - name: universal_io - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" - uuid: - dependency: transitive - description: - name: uuid - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.6" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - vm_service: - dependency: transitive - description: - name: vm_service - url: "https://pub.dartlang.org" - source: hosted - version: "9.0.0" - watcher: - dependency: transitive - description: - name: watcher - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.0" - webdriver: - dependency: transitive - description: - name: webdriver - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.0" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.0" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.0" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.0+2" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.0" - yaml: - dependency: transitive - description: - name: yaml - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.1" -sdks: - dart: ">=2.18.0 <3.0.0" - flutter: ">=3.3.0" diff --git a/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml b/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml index 6016e87..19ff8c8 100644 --- a/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml +++ b/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml @@ -19,7 +19,11 @@ dependencies: equatable: ^2.0.3 fluttertoast: ^8.0.9 cached_network_image: ^3.2.0 + http: + http_interceptor: ^1.0.2 shared_preferences: ^2.0.12 + retrofit: ^3.0.1+1 + dio: ^4.0.6 built_value: ^8.4.1 json_annotation: ^4.6.0 bloc: ^8.1.0 From b61c29e47ef20536dead0f1b5cda8f879d0b3995 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Mon, 10 Oct 2022 17:46:16 +0530 Subject: [PATCH 08/25] handle exceptions --- cli/lib/src/cli.dart | 57 ------------------ cli/lib/src/cli/actions.dart | 62 ++++++++++++++++++++ cli/lib/src/cli/cli.dart | 73 ++++++++++++++++++++++++ cli/lib/src/command_runner.dart | 15 +++-- cli/lib/src/commands/create_command.dart | 53 ++++++----------- cli/lib/src/commands/update_command.dart | 9 +-- cli/lib/src/utils.dart | 6 +- cli/pubspec.yaml | 2 - 8 files changed, 169 insertions(+), 108 deletions(-) delete mode 100644 cli/lib/src/cli.dart create mode 100644 cli/lib/src/cli/actions.dart create mode 100644 cli/lib/src/cli/cli.dart diff --git a/cli/lib/src/cli.dart b/cli/lib/src/cli.dart deleted file mode 100644 index 864f6d2..0000000 --- a/cli/lib/src/cli.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'dart:io'; - -class Cli { - static Future removeFiles({ - String path = '.', - String api = 'http', - }) async { - await Process.run( - 'rm', - [ - '-rf', - 'lib/api_sdk/${api == "http" ? "dio" : "http"}', - 'lib/api_sdk/${api == "http" ? "dio" : "http"}_api_sdk.dart', - ], - workingDirectory: path, - ); - } - - static Future addPub({ - String path = '.', - String api = 'dio', - }) async { - if (api == 'dio') { - await Process.run( - 'flutter', - ['pub', 'add', 'dio', 'retrofit'], - workingDirectory: path, - ); - } else { - await Process.run( - 'flutter', - ['pub', 'add', 'http', 'http_interceptor'], - workingDirectory: path, - ); - } - } - - static Future pubGet({ - String path = '.', - }) async { - await Process.run( - 'flutter', - ['pub', 'get'], - workingDirectory: path, - ); - } - - static Future gitInit({ - String path = '.', - }) async { - await Process.run( - 'git', - ['init'], - workingDirectory: path, - ); - } -} diff --git a/cli/lib/src/cli/actions.dart b/cli/lib/src/cli/actions.dart new file mode 100644 index 0000000..154b6b1 --- /dev/null +++ b/cli/lib/src/cli/actions.dart @@ -0,0 +1,62 @@ +import 'package:flutter_starter_cli/src/cli/cli.dart'; +import 'package:flutter_starter_cli/src/utils.dart'; + +class Actions { + static Future setupFiles(String path, String api) async { + Status.start('Running Basic Setup...'); + if (api == 'dio') { + try { + await Cli.removeHttpFiles(path); + Status.complete('Basic Setup Completed!!!'); + } catch (_) { + Status.fail('Setup Failed.'); + } + } else { + try { + await Cli.removeDioFiles(path); + Status.complete('Basic Setup Completed!!!'); + } catch (_) { + Status.fail('Setup Failed.'); + } + } + } + + static Future addPackages(String path, String api) async { + Status.start('Adding Dependencies...'); + if (api == 'dio') { + try { + await Cli.removeHttpPackage(path); + Status.complete('Dependencies Added!!!'); + } catch (_) { + Status.fail('Pub Add Failed.'); + } + } else { + try { + await Cli.removeDioPackage(path); + Status.complete('Dependencies Added!!!'); + } catch (_) { + Status.fail('Pub Add Failed.'); + } + } + } + + static Future getPackages(String path) async { + Status.start('Running Pub Get...'); + try { + await Cli.getPackages(path); + Status.complete('Pub Get Completed!!!'); + } catch (_) { + Status.fail('Pub Get Failed.'); + } + } + + static Future initializeGit(String path) async { + Status.start('Initialize Git...'); + try { + await Cli.initializeGit(path); + Status.complete('Git Initialized!!!'); + } catch (_) { + Status.fail('Git Not Installed.'); + } + } +} diff --git a/cli/lib/src/cli/cli.dart b/cli/lib/src/cli/cli.dart new file mode 100644 index 0000000..fc68ede --- /dev/null +++ b/cli/lib/src/cli/cli.dart @@ -0,0 +1,73 @@ +import 'dart:io'; + +class Cli { + static Future _run( + String cmd, + List args, { + String? path, + }) async { + final result = await Process.run( + cmd, + args, + workingDirectory: path, + runInShell: true, + ); + return result; + } + + static Future removeDioFiles(String path) async { + await _run( + 'rm', + [ + '-rf', + 'lib/api_sdk/dio', + 'lib/api_sdk/dio_api_sdk.dart', + ], + path: path, + ); + } + + static Future removeHttpFiles(String path) async { + await _run( + 'rm', + [ + '-rf', + 'lib/api_sdk/http', + 'lib/api_sdk/http_api_sdk.dart', + ], + path: path, + ); + } + + static Future removeDioPackage(String path) async { + await _run( + 'flutter', + ['pub', 'remove', 'dio', 'retrofit'], + path: path, + ); + } + + static Future removeHttpPackage(String path) async { + await _run( + 'flutter', + ['pub', 'remove', 'http', 'http_interceptor'], + path: path, + ); + } + + static Future getPackages(String path) async { + await _run( + 'flutter', + ['pub', 'get'], + path: path, + ); + } + + static Future initializeGit(String path) async { + await _run( + 'git', + ['init'], + path: path, + ); + } +} diff --git a/cli/lib/src/command_runner.dart b/cli/lib/src/command_runner.dart index 207a40f..7caa867 100644 --- a/cli/lib/src/command_runner.dart +++ b/cli/lib/src/command_runner.dart @@ -1,10 +1,12 @@ import 'package:args/args.dart'; import 'package:args/command_runner.dart'; -import 'package:mason_logger/mason_logger.dart'; -import 'package:flutter_starter_cli/src/commands/commands.dart'; -import 'package:flutter_starter_cli/src/version.dart'; +import 'package:mason/mason.dart'; import 'package:pub_updater/pub_updater.dart'; +import 'package:flutter_starter_cli/src/commands/commands.dart'; +import 'package:flutter_starter_cli/src/utils.dart'; +import 'package:flutter_starter_cli/src/version.dart' as ver; + const executableName = 'flutter_starter_cli'; const packageName = 'flutter_starter_cli'; const description = 'Flutter Starter CLI'; @@ -37,6 +39,7 @@ class FlutterStarterCliCommandRunner extends CommandRunner { @override Future run(Iterable args) async { + Status.init(_logger); try { final topLevelResults = parse(args); if (topLevelResults['verbose'] == true) { @@ -83,7 +86,7 @@ class FlutterStarterCliCommandRunner extends CommandRunner { final int? exitCode; if (topLevelResults['version'] == true) { - _logger.info(packageVersion); + _logger.info(ver.packageVersion); exitCode = ExitCode.success.code; } else { exitCode = await super.runCommand(topLevelResults); @@ -95,13 +98,13 @@ class FlutterStarterCliCommandRunner extends CommandRunner { Future _checkForUpdates() async { try { final latestVersion = await _pubUpdater.getLatestVersion(packageName); - final isUpToDate = packageVersion == latestVersion; + final isUpToDate = ver.packageVersion == latestVersion; if (!isUpToDate) { _logger ..info('') ..info( ''' -${lightYellow.wrap('Update available!')} ${lightCyan.wrap(packageVersion)} \u2192 ${lightCyan.wrap(latestVersion)} +${lightYellow.wrap('Update available!')} ${lightCyan.wrap(ver.packageVersion)} \u2192 ${lightCyan.wrap(latestVersion)} Run ${lightCyan.wrap('flutter_starter_cli update')} to update''', ); } diff --git a/cli/lib/src/commands/create_command.dart b/cli/lib/src/commands/create_command.dart index 2ffee31..b7d2418 100644 --- a/cli/lib/src/commands/create_command.dart +++ b/cli/lib/src/commands/create_command.dart @@ -1,10 +1,11 @@ import 'dart:io'; import 'package:args/command_runner.dart'; -import 'package:flutter_starter_cli/src/cli.dart'; +import 'package:mason/mason.dart'; + +import 'package:flutter_starter_cli/src/cli/actions.dart'; import 'package:flutter_starter_cli/src/command_runner.dart'; import 'package:flutter_starter_cli/src/utils.dart'; -import 'package:mason/mason.dart'; class CreateCommand extends Command { CreateCommand({ @@ -48,13 +49,14 @@ class CreateCommand extends Command { @override Future run() async { - Status.init(_logger); - final brick = Brick.git( - const GitPath( - 'https://git.geekyants.com/ruchika/flutter-starter-cli', - path: 'bricks/flutter_starter', - ), - ); + final brick = Brick.path( + '/Users/jeevanchandrajoshi/Code/Projects/flutter-starter-cli/bricks/flutter_starter'); + // final brick = Brick.git( + // const GitPath( + // 'https://git.geekyants.com/ruchika/flutter-starter-cli', + // path: 'bricks/flutter_starter', + // ), + // ); final dir = Directory.current; final target = DirectoryGeneratorTarget(dir); final name = _name; @@ -74,7 +76,7 @@ class CreateCommand extends Command { 'api': api, }, ); - Status.end('Project Created with ${fileCount.length} Files!!!'); + Status.complete('Project Created with ${fileCount.length} Files!!!'); await onGenerateComplete( _logger, '${Directory.current.path}/$name', api, git); _logger.success('Your Project is Ready to Use 🚀'); @@ -131,32 +133,9 @@ class CreateCommand extends Command { String api, bool git, ) async { - Status.start('Running Basic Setup...'); - await Cli.removeFiles( - path: path, - api: api, - ); - Status.end('Basic Setup Completed!!!'); - - Status.start('Adding dependencies...'); - await Cli.addPub( - path: path, - api: api, - ); - Status.end('Dependencies Added!!!'); - - Status.start('Running Pub Get...'); - await Cli.pubGet( - path: path, - ); - Status.end('Pub Get Completed!!!'); - - if (git) { - Status.start('Initialize Git...'); - await Cli.gitInit( - path: path, - ); - Status.end('Git Initialized!!!'); - } + await Actions.setupFiles(path, api); + await Actions.addPackages(path, api); + await Actions.getPackages(path); + if (git) await Actions.initializeGit(path); } } diff --git a/cli/lib/src/commands/update_command.dart b/cli/lib/src/commands/update_command.dart index c22c921..22b27c7 100644 --- a/cli/lib/src/commands/update_command.dart +++ b/cli/lib/src/commands/update_command.dart @@ -1,9 +1,10 @@ import 'package:args/command_runner.dart'; -import 'package:mason_logger/mason_logger.dart'; -import 'package:flutter_starter_cli/src/command_runner.dart'; -import 'package:flutter_starter_cli/src/version.dart'; +import 'package:mason/mason.dart'; import 'package:pub_updater/pub_updater.dart'; +import 'package:flutter_starter_cli/src/command_runner.dart'; +import 'package:flutter_starter_cli/src/version.dart' as ver; + class UpdateCommand extends Command { UpdateCommand({ required Logger logger, @@ -33,7 +34,7 @@ class UpdateCommand extends Command { } updateCheckProgress.complete('Checked for updates'); - final isUpToDate = packageVersion == latestVersion; + final isUpToDate = ver.packageVersion == latestVersion; if (isUpToDate) { _logger.info('CLI is already at the latest version.'); return ExitCode.success.code; diff --git a/cli/lib/src/utils.dart b/cli/lib/src/utils.dart index fc6aa89..90aab26 100644 --- a/cli/lib/src/utils.dart +++ b/cli/lib/src/utils.dart @@ -1,4 +1,4 @@ -import 'package:mason_logger/mason_logger.dart'; +import 'package:mason/mason.dart'; enum APIService { dio, @@ -13,5 +13,7 @@ class Status { static start(String message) => progress = logger.progress(message); - static end(String message) => progress.complete(message); + static complete(String message) => progress.complete(message); + + static fail(String message) => progress.fail(message); } diff --git a/cli/pubspec.yaml b/cli/pubspec.yaml index f3aa5aa..617f811 100644 --- a/cli/pubspec.yaml +++ b/cli/pubspec.yaml @@ -9,12 +9,10 @@ environment: dependencies: args: ^2.3.1 mason: ^0.1.0-dev.33 - mason_logger: ^0.1.3 pub_updater: ^0.2.1 dev_dependencies: build_runner: ^2.0.0 - build_verify: ^3.0.0 build_version: ^2.0.0 flutter_lints: ^2.0.1 From 0ac72e8fb5d3b548352f20d79bd58ea024d8b438 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Mon, 10 Oct 2022 18:16:15 +0530 Subject: [PATCH 09/25] update readme --- README.md | 35 +++++++++++++++++++++++++++++++++-- flutter-starter-cli.gif | Bin 0 -> 262644 bytes 2 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 flutter-starter-cli.gif diff --git a/README.md b/README.md index 00e3640..3a8e87f 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,49 @@ ## Getting Started 🚀 -Activate globally via: +If the CLI application is available on [pub](https://pub.dev), activate globally via: ```sh -pub global activate flutter_starter_cli +dart pub global activate flutter_starter_cli +``` + +Or locally via: + +```sh +dart pub global activate --source=path ``` ## Usage ```sh # Show CLI version + $ flutter_starter_cli --version +``` +```sh # Show usage help + $ flutter_starter_cli --help ``` + +```sh +# To create project + +$ flutter_starter_cli create + +# Then follow instructions +``` + +```sh +# Shorthand to create project + +$ flutter_starter_cli create --api= -g + +# Omit `-g` to create project without git +# Available API services (dio, http) +``` + +## Demo + +![demo](flutter-starter-cli.gif) diff --git a/flutter-starter-cli.gif b/flutter-starter-cli.gif new file mode 100644 index 0000000000000000000000000000000000000000..bb2bc53694daff17da89886462f4a495516aac01 GIT binary patch literal 262644 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⪼;{ft?3a6 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�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 literal 0 HcmV?d00001 From f5d0bf4d9b64c7f657cd4f163867b3a1536e7c7e Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Tue, 11 Oct 2022 13:50:31 +0530 Subject: [PATCH 10/25] update readme --- README.md | 120 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 107 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 3a8e87f..0fc429f 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,144 @@ # Flutter Starter CLI -## Getting Started 🚀 +The `Flutter Starter CLI` is a very useful tool that provides commands for the ease of setting up a Flutter project from scratch. -If the CLI application is available on [pub](https://pub.dev), activate globally via: +## Introduction -```sh -dart pub global activate flutter_starter_cli -``` +`Flutter Starter CLI` is written in the Dart programming language.\ +While working with the Flutter projects we have to write the same repetitive code multiple times but using this CLI, we can create a Flutter template on the fly.\ +Also, the basic structure of all the tests in Flutter is the same. So this CLI also provides a basic starter pack for the Flutter test as well. + +`Flutter Starter CLI` under the hood uses mason to generate the project template.\ +Mason is an open-source tool that generates code from custom templates called bricks. + +Out of the box, `Flutter Starter CLI` includes:- + +- ✅ **State Management** + - BLoC - BLoC is a popular design/architectural pattern that is used to separate the logic from the UI. + - Riverpod - (Coming Soon... 🥳) +- ✅ **API-Services** + - Dio - A powerful HTTP client for Dart, which supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, Timeout etc. + - Http - A composable, Future-based library for making HTTP requests. +- ✅ **Basic Setup** + - Themes - Themes are used to share colors and font styles throughout an app. + - Localization - The project provides support for multiple languages like English, Spanish and French. + - Routing - Go_Router is used to provide a convenient, URL-based API for navigating between different screens. +- ✅ **Testing** + - Unit - A unit test tests a single function, method, or class. + - Widget - A widget test tests a single widget. + - Integration - An integration test tests a complete app or a large part of an app. + +## Dependencies + +Currently, the `Flutter Starter CLI` depends on the following packages:- -Or locally via: +| Package | Version | Description | +| ------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- | +| args | 2.3.1 | Parses raw command-line arguments into a set of options and values. | +| mason | 0.1.0 | A template generator which helps to generate files quickly and consistently. | +| pub_updater | 0.2.1 | A Dart package which enables checking whether packages are up to date and supports updating them. | +| build_runner | 2.0.0 | The build_runner package provides a concrete way of generating files using Dart code, outside of tools like pub. | +| build_version | 2.0.0 | Include the version of the package in the source code. | +| flutter_lints | 2.0.1 | This package contains a recommended set of lints for Flutter apps, packages, and plugins to encourage good coding practices. | + +## Getting Started + +Firstly clone the project on your system then run the following command: ```sh -dart pub global activate --source=path +dart pub global activate --source=path ``` ## Usage +In the root of your application, run the following commands: + ```sh # Show CLI version - $ flutter_starter_cli --version ``` ```sh # Show usage help - $ flutter_starter_cli --help ``` ```sh # To create project - $ flutter_starter_cli create # Then follow instructions ``` ```sh -# Shorthand to create project - +# Shorthand to create project with git $ flutter_starter_cli create --api= -g -# Omit `-g` to create project without git +# Shorthand to create project without git +$ flutter_starter_cli create --api= + # Available API services (dio, http) ``` +## Complete Usage + +The complete usage of the create command with options and flags. + +```sh +âžœ ~ flutter_starter_cli create +Creates a new flutter starter project. + +Usage: flutter_starter_cli create +-h, --help Print this usage information. + --desc The description for the project. + (defaults to "A New Flutter Project.") + --org The organization for the project. + (defaults to "com.example") +-a, --api The API service for the project. + [dio, http] +-g, --[no-]git Initialize Git Repository. + +Run "flutter_starter_cli help" to see global options. +``` + +## Directory Structure + +The complete structure of the newly created project directory looks like this: + +``` +. +├── android +├── assets +├── integration_test +├── ios +└── lib + ├── api_sdk + ├── config + ├── l10n + ├── routes + ├── screens + ├── shared + ├── themes + ├── utils + ├── widgets + ├── app.dart + ├── common_export.dart + ├── main.dart +├── linux +├── macos +├── test +├── web +├── windows +├── .gitignore +├── analysis_options.yaml +├── l10n.yaml +├── pubspec.lock +├── pubspec.yaml +└── README.md +``` + ## Demo +A demo video to illustrate how to use the `Flutter_Starter_CLI` + ![demo](flutter-starter-cli.gif) From 109b59b6746eeec1d62397ccd070de5e8e528060 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Tue, 11 Oct 2022 17:27:55 +0530 Subject: [PATCH 11/25] add flag for test cases --- cli/lib/src/cli/actions.dart | 42 +++++----------- cli/lib/src/cli/cli.dart | 62 +++++++++++++----------- cli/lib/src/commands/create_command.dart | 41 +++++++++++----- 3 files changed, 76 insertions(+), 69 deletions(-) diff --git a/cli/lib/src/cli/actions.dart b/cli/lib/src/cli/actions.dart index 154b6b1..4ce6fdc 100644 --- a/cli/lib/src/cli/actions.dart +++ b/cli/lib/src/cli/actions.dart @@ -2,41 +2,23 @@ import 'package:flutter_starter_cli/src/cli/cli.dart'; import 'package:flutter_starter_cli/src/utils.dart'; class Actions { - static Future setupFiles(String path, String api) async { + static Future setupFiles(String path, String api, bool test) async { Status.start('Running Basic Setup...'); - if (api == 'dio') { - try { - await Cli.removeHttpFiles(path); - Status.complete('Basic Setup Completed!!!'); - } catch (_) { - Status.fail('Setup Failed.'); - } - } else { - try { - await Cli.removeDioFiles(path); - Status.complete('Basic Setup Completed!!!'); - } catch (_) { - Status.fail('Setup Failed.'); - } + try { + await Cli.removeFiles(path, api, test); + Status.complete('Basic Setup Completed!!!'); + } catch (_) { + Status.fail('Setup Failed.'); } } - static Future addPackages(String path, String api) async { + static Future setupPackages(String path, String api, bool test) async { Status.start('Adding Dependencies...'); - if (api == 'dio') { - try { - await Cli.removeHttpPackage(path); - Status.complete('Dependencies Added!!!'); - } catch (_) { - Status.fail('Pub Add Failed.'); - } - } else { - try { - await Cli.removeDioPackage(path); - Status.complete('Dependencies Added!!!'); - } catch (_) { - Status.fail('Pub Add Failed.'); - } + try { + await Cli.removePackages(path, api, test); + Status.complete('Dependencies Added!!!'); + } catch (_) { + Status.fail('Pub Add Failed.'); } } diff --git a/cli/lib/src/cli/cli.dart b/cli/lib/src/cli/cli.dart index fc68ede..ed190e8 100644 --- a/cli/lib/src/cli/cli.dart +++ b/cli/lib/src/cli/cli.dart @@ -15,42 +15,48 @@ class Cli { return result; } - static Future removeDioFiles(String path) async { + static Future removeFiles(String path, String api, bool test) async { + var args = []; + if (api == 'dio') { + args + ..add('lib/api_sdk/http') + ..add('lib/api_sdk/http_api_sdk.dart'); + } else { + args + ..add('lib/api_sdk/dio') + ..add('lib/api_sdk/dio_api_sdk.dart'); + } + if (!test) { + args + ..add('integration_test') + ..add('test'); + } await _run( 'rm', - [ - '-rf', - 'lib/api_sdk/dio', - 'lib/api_sdk/dio_api_sdk.dart', - ], + ['-rf', ...args], path: path, ); } - static Future removeHttpFiles(String path) async { - await _run( - 'rm', - [ - '-rf', - 'lib/api_sdk/http', - 'lib/api_sdk/http_api_sdk.dart', - ], - path: path, - ); - } - - static Future removeDioPackage(String path) async { - await _run( - 'flutter', - ['pub', 'remove', 'dio', 'retrofit'], - path: path, - ); - } - - static Future removeHttpPackage(String path) async { + static Future removePackages(String path, String api, bool test) async { + var args = []; + if (api == 'dio') { + args + ..add('http') + ..add('http_interceptor'); + } else { + args + ..add('dio') + ..add('retrofit'); + } + if (!test) { + args + ..add('bloc_test') + ..add('mocktail'); + } await _run( 'flutter', - ['pub', 'remove', 'http', 'http_interceptor'], + ['pub', 'remove', ...args], path: path, ); } diff --git a/cli/lib/src/commands/create_command.dart b/cli/lib/src/commands/create_command.dart index b7d2418..19f7739 100644 --- a/cli/lib/src/commands/create_command.dart +++ b/cli/lib/src/commands/create_command.dart @@ -28,6 +28,12 @@ class CreateCommand extends Command { help: 'The API service for the project.', allowed: [APIService.dio.name, APIService.http.name], ) + ..addFlag( + 'test', + abbr: 't', + help: 'Setup Test Cases.', + defaultsTo: null, + ) ..addFlag( 'git', abbr: 'g', @@ -49,20 +55,19 @@ class CreateCommand extends Command { @override Future run() async { - final brick = Brick.path( - '/Users/jeevanchandrajoshi/Code/Projects/flutter-starter-cli/bricks/flutter_starter'); - // final brick = Brick.git( - // const GitPath( - // 'https://git.geekyants.com/ruchika/flutter-starter-cli', - // path: 'bricks/flutter_starter', - // ), - // ); + final brick = Brick.git( + const GitPath( + 'https://git.geekyants.com/ruchika/flutter-starter-cli', + path: 'bricks/flutter_starter', + ), + ); final dir = Directory.current; final target = DirectoryGeneratorTarget(dir); final name = _name; final desc = _desc; final org = _org; final api = _api; + final test = _test; final git = _git; Status.start('Project Creating...'); final generator = await MasonGenerator.fromBrick(brick); @@ -78,7 +83,12 @@ class CreateCommand extends Command { ); Status.complete('Project Created with ${fileCount.length} Files!!!'); await onGenerateComplete( - _logger, '${Directory.current.path}/$name', api, git); + _logger, + '${Directory.current.path}/$name', + api, + test, + git, + ); _logger.success('Your Project is Ready to Use 🚀'); return ExitCode.success.code; } @@ -119,6 +129,14 @@ class CreateCommand extends Command { ); } + bool get _test { + return argResults?['test'] ?? + _logger.confirm( + 'Whether Test Cases Required?', + defaultValue: true, + ); + } + bool get _git { return argResults?['git'] ?? _logger.confirm( @@ -131,10 +149,11 @@ class CreateCommand extends Command { Logger logger, String path, String api, + bool test, bool git, ) async { - await Actions.setupFiles(path, api); - await Actions.addPackages(path, api); + await Actions.setupFiles(path, api, test); + await Actions.setupPackages(path, api, test); await Actions.getPackages(path); if (git) await Actions.initializeGit(path); } From 2b6bdf0edd47643c8595df6d8744b69023723c8a Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Tue, 11 Oct 2022 18:20:45 +0530 Subject: [PATCH 12/25] update brick path --- cli/lib/src/commands/create_command.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/lib/src/commands/create_command.dart b/cli/lib/src/commands/create_command.dart index 19f7739..2c13ba2 100644 --- a/cli/lib/src/commands/create_command.dart +++ b/cli/lib/src/commands/create_command.dart @@ -57,7 +57,7 @@ class CreateCommand extends Command { Future run() async { final brick = Brick.git( const GitPath( - 'https://git.geekyants.com/ruchika/flutter-starter-cli', + 'https://github.com/GeekyAnts/flutter-starter-cli', path: 'bricks/flutter_starter', ), ); From 93ea8be8ff9f056728a20cc9f3f49104748a2cfc Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Mon, 17 Oct 2022 10:11:26 +0530 Subject: [PATCH 13/25] update cli: generating project from git --- .gitignore | 4 + ...ysis_options.yaml => analysis_options.yaml | 0 {cli/bin => bin}/flutter_starter_cli.dart | 0 bricks/.DS_Store | Bin 6148 -> 0 bytes bricks/.mason/bricks.json | 3 - bricks/flutter_starter/__brick__/.DS_Store | Bin 6148 -> 0 bytes .../__brick__/{{name}}/.gitignore | 49 -- .../__brick__/{{name}}/README.md | 3 - .../__brick__/{{name}}/android/.gitignore | 13 - .../{{name}}/android/app/build.gradle | 71 --- .../android/app/src/debug/AndroidManifest.xml | 8 - .../android/app/src/main/AndroidManifest.xml | 34 -- .../app/FlutterMultiDexApplication.java | 25 - .../kotlin/com/example/app/MainActivity.kt | 6 - .../res/drawable-v21/launch_background.xml | 12 - .../main/res/drawable/launch_background.xml | 12 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 544 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 442 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 721 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 1031 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 1443 -> 0 bytes .../app/src/main/res/values-night/styles.xml | 18 - .../app/src/main/res/values/styles.xml | 18 - .../app/src/profile/AndroidManifest.xml | 8 - .../__brick__/{{name}}/android/build.gradle | 31 - .../{{name}}/android/gradle.properties | 3 - .../gradle/wrapper/gradle-wrapper.properties | 6 - .../{{name}}/android/settings.gradle | 11 - .../{{name}}/assets/images/2.0x/logo.png | Bin 15736 -> 0 bytes .../{{name}}/assets/images/3.0x/logo.png | Bin 25917 -> 0 bytes .../{{name}}/assets/images/login.png | Bin 48507 -> 0 bytes .../__brick__/{{name}}/assets/images/logo.png | Bin 7224 -> 0 bytes .../{{name}}/assets/images/signup.png | Bin 68930 -> 0 bytes .../{{name}}/integration_test/app_test.dart | 106 ---- .../__brick__/{{name}}/ios/.gitignore | 34 -- .../ios/Flutter/AppFrameworkInfo.plist | 26 - .../{{name}}/ios/Flutter/Debug.xcconfig | 2 - .../{{name}}/ios/Flutter/Release.xcconfig | 2 - .../__brick__/{{name}}/ios/Podfile | 41 -- .../__brick__/{{name}}/ios/Podfile.lock | 59 -- .../ios/Runner.xcodeproj/project.pbxproj | 549 ----------------- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 10 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../{{name}}/ios/Runner/AppDelegate.swift | 13 - .../AppIcon.appiconset/Contents.json | 122 ---- .../Icon-App-1024x1024@1x.png | Bin 10932 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 0 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 0 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 0 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 0 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 0 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 0 bytes .../LaunchImage.imageset/Contents.json | 23 - .../LaunchImage.imageset/LaunchImage.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 68 -> 0 bytes .../LaunchImage.imageset/README.md | 5 - .../Runner/Base.lproj/LaunchScreen.storyboard | 37 -- .../ios/Runner/Base.lproj/Main.storyboard | 26 - .../__brick__/{{name}}/ios/Runner/Info.plist | 55 -- .../ios/Runner/Runner-Bridging-Header.h | 1 - .../__brick__/{{name}}/l10n.yaml | 6 - .../{{name}}/lib/api_sdk/dio/README.md | 23 - .../lib/api_sdk/dio/dio_helpers/dio_apis.dart | 5 - .../api_sdk/dio/dio_helpers/dio_client.dart | 21 - .../api_sdk/dio/dio_helpers/dio_client.g.dart | 77 --- .../dio/dio_helpers/dio_exceptions.dart | 43 -- .../dio/dio_helpers/dio_interceptor.dart | 79 --- .../{{name}}/lib/api_sdk/dio/dio_service.dart | 45 -- .../lib/api_sdk/dio/models/user_model.dart | 41 -- .../lib/api_sdk/dio/models/user_model.g.dart | 49 -- .../{{name}}/lib/api_sdk/dio_api_sdk.dart | 18 - .../{{name}}/lib/api_sdk/http/README.md | 17 - .../api_sdk/http/http_helpers/http_apis.dart | 5 - .../http/http_helpers/http_client.dart | 99 --- .../http/http_helpers/http_exception.dart | 42 -- .../http/http_helpers/http_interceptor.dart | 15 - .../lib/api_sdk/http/http_service.dart | 41 -- .../{{name}}/lib/api_sdk/http_api_sdk.dart | 19 - .../__brick__/{{name}}/lib/app.dart | 45 -- .../__brick__/{{name}}/lib/common_export.dart | 27 - .../__brick__/{{name}}/lib/config/config.dart | 1 - .../__brick__/{{name}}/lib/l10n/app_en.arb | 4 - .../__brick__/{{name}}/lib/l10n/app_es.arb | 4 - .../__brick__/{{name}}/lib/l10n/app_fr.arb | 4 - .../__brick__/{{name}}/lib/main.dart | 26 - .../__brick__/{{name}}/lib/routes/routes.dart | 52 -- .../{{name}}/lib/screens/home/home.dart | 180 ------ .../lib/screens/login/login_screen.dart | 125 ---- .../lib/screens/login/widgets/login_form.dart | 107 ---- .../lib/screens/signup/signup_screen.dart | 144 ----- .../screens/signup/widgets/signup_form.dart | 120 ---- .../lib/screens/splash/splash_screen.dart | 49 -- .../authentication/authentication_bloc.dart | 106 ---- .../authentication/authentication_event.dart | 39 -- .../authentication/authentication_state.dart | 46 -- .../lib/shared/bloc/bloc_controller.dart | 6 - .../bloc/update_theme/update_theme_bloc.dart | 15 - .../bloc/update_theme/update_theme_event.dart | 18 - .../bloc/update_theme/update_theme_state.dart | 14 - .../lib/shared/models/current_user_data.dart | 76 --- .../lib/shared/models/firebase_user.dart | 14 - .../{{name}}/lib/shared/models/token.dart | 15 - .../{{name}}/lib/shared/models/user.dart | 9 - .../{{name}}/lib/shared/models/user_data.dart | 18 - .../repository/authentication_repository.dart | 27 - .../__brick__/{{name}}/lib/shared/shared.dart | 26 - .../{{name}}/lib/themes/color_constants.dart | 14 - .../{{name}}/lib/themes/theme_data.dart | 218 ------- .../{{name}}/lib/utils/image_constants.dart | 12 - .../{{name}}/lib/utils/responsive.dart | 47 -- .../{{name}}/lib/utils/size_utils.dart | 182 ------ .../{{name}}/lib/utils/string_constants.dart | 1 - .../lib/widgets/cache_image_widget.dart | 36 -- .../__brick__/{{name}}/linux/.gitignore | 1 - .../__brick__/{{name}}/linux/CMakeLists.txt | 138 ----- .../{{name}}/linux/flutter/CMakeLists.txt | 88 --- .../flutter/generated_plugin_registrant.cc | 11 - .../flutter/generated_plugin_registrant.h | 15 - .../linux/flutter/generated_plugins.cmake | 23 - .../__brick__/{{name}}/linux/main.cc | 6 - .../{{name}}/linux/my_application.cc | 104 ---- .../__brick__/{{name}}/linux/my_application.h | 18 - .../__brick__/{{name}}/macos/.gitignore | 7 - .../macos/Flutter/Flutter-Debug.xcconfig | 2 - .../macos/Flutter/Flutter-Release.xcconfig | 2 - .../Flutter/GeneratedPluginRegistrant.swift | 16 - .../__brick__/{{name}}/macos/Podfile | 40 -- .../macos/Runner.xcodeproj/project.pbxproj | 572 ------------------ .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../{{name}}/macos/Runner/AppDelegate.swift | 9 - .../AppIcon.appiconset/Contents.json | 68 --- .../AppIcon.appiconset/app_icon_1024.png | Bin 46993 -> 0 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 3276 -> 0 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 1429 -> 0 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 5933 -> 0 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 1243 -> 0 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 14800 -> 0 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 1874 -> 0 bytes .../macos/Runner/Base.lproj/MainMenu.xib | 343 ----------- .../macos/Runner/Configs/AppInfo.xcconfig | 14 - .../macos/Runner/Configs/Debug.xcconfig | 2 - .../macos/Runner/Configs/Release.xcconfig | 2 - .../macos/Runner/Configs/Warnings.xcconfig | 13 - .../macos/Runner/DebugProfile.entitlements | 12 - .../{{name}}/macos/Runner/Info.plist | 32 - .../macos/Runner/MainFlutterWindow.swift | 15 - .../macos/Runner/Release.entitlements | 8 - .../__brick__/{{name}}/pubspec.yaml | 59 -- .../authentication_bloc_test.dart | 166 ----- .../authentication_event_test.dart | 29 - .../authentication_state_test.dart | 29 - .../update_theme/update_theme_bloc_test.dart | 30 - .../update_theme/update_theme_event_test.dart | 22 - .../update_theme/update_theme_state_test.dart | 22 - .../test/screens/home/logout_test.dart | 67 -- .../test/screens/login/login_test.dart | 84 --- .../test/screens/signup/signup_test.dart | 90 --- .../__brick__/{{name}}/web/favicon.png | Bin 917 -> 0 bytes .../__brick__/{{name}}/web/icons/Icon-192.png | Bin 5292 -> 0 bytes .../__brick__/{{name}}/web/icons/Icon-512.png | Bin 8252 -> 0 bytes .../{{name}}/web/icons/Icon-maskable-192.png | Bin 5594 -> 0 bytes .../{{name}}/web/icons/Icon-maskable-512.png | Bin 20998 -> 0 bytes .../__brick__/{{name}}/web/index.html | 61 -- .../__brick__/{{name}}/web/manifest.json | 35 -- .../__brick__/{{name}}/windows/.gitignore | 17 - .../__brick__/{{name}}/windows/CMakeLists.txt | 101 ---- .../{{name}}/windows/flutter/CMakeLists.txt | 104 ---- .../flutter/generated_plugin_registrant.cc | 11 - .../flutter/generated_plugin_registrant.h | 15 - .../windows/flutter/generated_plugins.cmake | 23 - .../{{name}}/windows/runner/CMakeLists.txt | 32 - .../{{name}}/windows/runner/Runner.rc | 121 ---- .../windows/runner/flutter_window.cpp | 61 -- .../{{name}}/windows/runner/flutter_window.h | 33 - .../{{name}}/windows/runner/main.cpp | 43 -- .../{{name}}/windows/runner/resource.h | 16 - .../windows/runner/resources/app_icon.ico | Bin 33772 -> 0 bytes .../windows/runner/runner.exe.manifest | 20 - .../{{name}}/windows/runner/utils.cpp | 64 -- .../__brick__/{{name}}/windows/runner/utils.h | 19 - .../{{name}}/windows/runner/win32_window.cpp | 245 -------- .../{{name}}/windows/runner/win32_window.h | 98 --- bricks/flutter_starter/brick.yaml | 26 - bricks/mason-lock.json | 7 - bricks/mason.yaml | 3 - cli/.gitignore | 10 - cli/analysis_options.yaml | 1 - cli/lib/src/cli/actions.dart | 44 -- {cli/lib => lib}/flutter_starter_cli.dart | 0 lib/src/cli/actions.dart | 82 +++ {cli/lib => lib}/src/cli/cli.dart | 40 +- {cli/lib => lib}/src/command_runner.dart | 10 +- {cli/lib => lib}/src/commands/commands.dart | 0 .../src/commands/create_command.dart | 48 +- .../src/commands/update_command.dart | 6 +- {cli/lib => lib}/src/utils.dart | 2 +- {cli/lib => lib}/src/version.dart | 0 cli/pubspec.yaml => pubspec.yaml | 5 +- 215 files changed, 132 insertions(+), 7584 deletions(-) create mode 100644 .gitignore rename bricks/flutter_starter/__brick__/{{name}}/analysis_options.yaml => analysis_options.yaml (100%) rename {cli/bin => bin}/flutter_starter_cli.dart (100%) delete mode 100644 bricks/.DS_Store delete mode 100644 bricks/.mason/bricks.json delete mode 100644 bricks/flutter_starter/__brick__/.DS_Store delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/.gitignore delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/README.md delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/.gitignore delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/build.gradle delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/debug/AndroidManifest.xml delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/AndroidManifest.xml delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/kotlin/com/example/app/MainActivity.kt delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable-v21/launch_background.xml delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable/launch_background.xml delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values-night/styles.xml delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values/styles.xml delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/app/src/profile/AndroidManifest.xml delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/build.gradle delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/gradle.properties delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/gradle/wrapper/gradle-wrapper.properties delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/android/settings.gradle delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/2.0x/logo.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/3.0x/logo.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/login.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/logo.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/assets/images/signup.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/.gitignore delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/AppFrameworkInfo.plist delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Debug.xcconfig delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Release.xcconfig delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Podfile delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Podfile.lock delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.pbxproj delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/AppDelegate.swift delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/LaunchScreen.storyboard delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/Main.storyboard delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Info.plist delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Runner-Bridging-Header.h delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/l10n.yaml delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/README.md delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_apis.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_exceptions.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.g.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio_api_sdk.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/README.md delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_apis.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_exception.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_interceptor.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http_api_sdk.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/app.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/common_export.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/config/config.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_en.arb delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_es.arb delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_fr.arb delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/main.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_event.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_state.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/bloc_controller.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/current_user_data.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/firebase_user.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/token.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user_data.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/authentication_repository.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/shared/shared.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/themes/color_constants.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/themes/theme_data.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/utils/image_constants.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/utils/responsive.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/utils/string_constants.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/lib/widgets/cache_image_widget.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/.gitignore delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/CMakeLists.txt delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/flutter/CMakeLists.txt delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.cc delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.h delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugins.cmake delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/main.cc delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/my_application.cc delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/linux/my_application.h delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/.gitignore delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Debug.xcconfig delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Release.xcconfig delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/GeneratedPluginRegistrant.swift delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Podfile delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.pbxproj delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/AppDelegate.swift delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Base.lproj/MainMenu.xib delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/AppInfo.xcconfig delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Debug.xcconfig delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Release.xcconfig delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Warnings.xcconfig delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/DebugProfile.entitlements delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Info.plist delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/MainFlutterWindow.swift delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Release.entitlements delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/favicon.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-192.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-512.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-192.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-512.png delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/index.html delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/web/manifest.json delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/.gitignore delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/CMakeLists.txt delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/flutter/CMakeLists.txt delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.cc delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.h delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugins.cmake delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/CMakeLists.txt delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/Runner.rc delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.cpp delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.h delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/main.cpp delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/resource.h delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/resources/app_icon.ico delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/runner.exe.manifest delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.cpp delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.h delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.cpp delete mode 100644 bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.h delete mode 100644 bricks/flutter_starter/brick.yaml delete mode 100644 bricks/mason-lock.json delete mode 100644 bricks/mason.yaml delete mode 100644 cli/.gitignore delete mode 100644 cli/analysis_options.yaml delete mode 100644 cli/lib/src/cli/actions.dart rename {cli/lib => lib}/flutter_starter_cli.dart (100%) create mode 100644 lib/src/cli/actions.dart rename {cli/lib => lib}/src/cli/cli.dart (56%) rename {cli/lib => lib}/src/command_runner.dart (90%) rename {cli/lib => lib}/src/commands/commands.dart (100%) rename {cli/lib => lib}/src/commands/create_command.dart (73%) rename {cli/lib => lib}/src/commands/update_command.dart (89%) rename {cli/lib => lib}/src/utils.dart (87%) rename {cli/lib => lib}/src/version.dart (100%) rename cli/pubspec.yaml => pubspec.yaml (78%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b4bd933 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.dart_tool/ +.packages +build/ +pubspec.lock diff --git a/bricks/flutter_starter/__brick__/{{name}}/analysis_options.yaml b/analysis_options.yaml similarity index 100% rename from bricks/flutter_starter/__brick__/{{name}}/analysis_options.yaml rename to analysis_options.yaml diff --git a/cli/bin/flutter_starter_cli.dart b/bin/flutter_starter_cli.dart similarity index 100% rename from cli/bin/flutter_starter_cli.dart rename to bin/flutter_starter_cli.dart diff --git a/bricks/.DS_Store b/bricks/.DS_Store deleted file mode 100644 index bcada08fb44979083bbd400cce1eb522c4442636..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!Ab)$5S_HuZYg393OxqA7Hlh3i*t7nSU*h*T zlcZv);z1B8Gcb9R$xK3CmdpkKL}%P@08{|LK_$$Uu=zr0oODTY)1 zCSK~NR20l@KR6EulU`-(SjDLy#)FYg2>SyJxw;7BzM6E@IPNDp*E0i7 z$tm?J)#HgtfO}5&t*{tMj@9Z9(_8y|gSUnqR1%8EEHZ0EJ1&tqe z`Q(k_NX2&;IiF>o&BzQe1I)mxF<|dGr@U$#ghJGJu zyg*2THoYYXrA60bW)MeEgh@p-slq-ngh@xgv~jM*%%DjJp;yLv?8?HvP=sC`{Zfa6 za1CLiPXT`}hB168D$^W?-cl5QVPS?ckPdZC%S5Z<-bZYe?z3OxqA7OZV4ikDF93mDOZN=-=6V45vWYY!oiv%Zi|;`2DO zy8%mc@FZeq%I-HiKf9R^x<8CDK3WDRj9H8^0S%F(QXy!rbnTd6M6TwTvXJF0_gCqx zVxqrj!fzKWgI~ft_U-%qSo+}m@Mm$9F1p=MzEi93?lnY1w8Vq^ELZNrTP)L&H^0Nt zwUn`6>YjfSg{z5ma3Pb07bW3bB}738A@{dY63Ep^E|VZtxvqAIrf5#Ac9!*q-HzQK zoaP-nJL`cy=nwO}DGra0&#xvg@idWdnoJJ7E7><#!aFD%b-lXtB$mk&_{zL8o{$(I z28aP-V0#!aXMkvJPsvm%F+dFbkOABuY-os%!9t_jI-tYrGy3a@D4^q80?{_;7%Vh` z2ZZZXK%L6X6NBq?u-hiiF<5BS>5QwDVIH$``FP=Kb+FqioN-4Z^~3-%u+BhD4=p_Z zFX1m!`N&^Sp%F1a4E!?&czx`SM^KbGTQ|zXv(|?82n_|}3RFNqU%Ldr0QZr$a%#Vg aI>b2!3ynAn+EqFrT?7;%)DZ)}z`z$O7fqZ1 diff --git a/bricks/flutter_starter/__brick__/{{name}}/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/.gitignore deleted file mode 100644 index a093ad0..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/.gitignore +++ /dev/null @@ -1,49 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Web related -lib/generated_plugin_registrant.dart - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -#android Firebase -google-services.json - -#ios Firebase -GoogleService-Info.plist -Secrets -Secrets.tar \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/README.md b/bricks/flutter_starter/__brick__/{{name}}/README.md deleted file mode 100644 index bbc8416..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# {{name}} - -## {{desc}} diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/android/.gitignore deleted file mode 100644 index 6f56801..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/build.gradle b/bricks/flutter_starter/__brick__/{{name}}/android/app/build.gradle deleted file mode 100644 index e756e74..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/build.gradle +++ /dev/null @@ -1,71 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "{{org}}.{{name}}" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. - minSdkVersion 19 - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/debug/AndroidManifest.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index ad0158c..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/AndroidManifest.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 382382e..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java deleted file mode 100644 index 752fc18..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java +++ /dev/null @@ -1,25 +0,0 @@ -// Generated file. -// -// If you wish to remove Flutter's multidex support, delete this entire file. -// -// Modifications to this file should be done in a copy under a different name -// as this file may be regenerated. - -package io.flutter.app; - -import android.app.Application; -import android.content.Context; -import androidx.annotation.CallSuper; -import androidx.multidex.MultiDex; - -/** - * Extension of {@link android.app.Application}, adding multidex support. - */ -public class FlutterMultiDexApplication extends Application { - @Override - @CallSuper - protected void attachBaseContext(Context base) { - super.attachBaseContext(base); - MultiDex.install(this); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/kotlin/com/example/app/MainActivity.kt b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/kotlin/com/example/app/MainActivity.kt deleted file mode 100644 index 12e5477..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/kotlin/com/example/app/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package {{org}}.{{name}} - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable-v21/launch_background.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable/launch_background.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7b0906d62b1847e87f15cdcacf6a4f29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79bb8a35cc66c3c1fd44f5a5526c1b78be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5Xx&nMcT!A!W`0S9QKQy;}1Cl^CgaH=;G9cpY;r$Q>i*pfB zP2drbID<_#qf;rPZx^FqH)F_D#*k@@q03KywUtLX8Ua?`H+NMzkczFPK3lFz@i_kW%1NOn0|D2I9n9wzH8m|-tHjsw|9>@K=iMBhxvkv6m8Y-l zytQ?X=U+MF$@3 zt`~i=@j|6y)RWMK--}M|=T`o&^Ni>IoWKHEbBXz7?A@mgWoL>!*SXo`SZH-*HSdS+ yn*9;$7;m`l>wYBC5bq;=U}IMqLzqbYCidGC!)_gkIk_C@Uy!y&wkt5C($~2D>~)O*cj@FGjOCM)M>_ixfudOh)?xMu#Fs z#}Y=@YDTwOM)x{K_j*Q;dPdJ?Mz0n|pLRx{4n|)f>SXlmV)XB04CrSJn#dS5nK2lM zrZ9#~WelCp7&e13Y$jvaEXHskn$2V!!DN-nWS__6T*l;H&Fopn?A6HZ-6WRLFP=R` zqG+CE#d4|IbyAI+rJJ`&x9*T`+a=p|0O(+s{UBcyZdkhj=yS1>AirP+0R;mf2uMgM zC}@~JfByORAh4SyRgi&!(cja>F(l*O+nd+@4m$|6K6KDn_&uvCpV23&>G9HJp{xgg zoq1^2_p9@|WEo z*X_Uko@K)qYYv~>43eQGMdbiGbo>E~Q& zrYBH{QP^@Sti!`2)uG{irBBq@y*$B zi#&(U-*=fp74j)RyIw49+0MRPMRU)+a2r*PJ$L5roHt2$UjExCTZSbq%V!HeS7J$N zdG@vOZB4v_lF7Plrx+hxo7(fCV&}fHq)$ diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34e7a88e3f88bea192c3a370d44689c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eebdb28e45604e46eeda8dd24651419bc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values-night/styles.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values/styles.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef88..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/profile/AndroidManifest.xml b/bricks/flutter_starter/__brick__/{{name}}/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index ad0158c..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/build.gradle b/bricks/flutter_starter/__brick__/{{name}}/android/build.gradle deleted file mode 100644 index 83ae220..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -buildscript { - ext.kotlin_version = '1.6.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -task clean(type: Delete) { - delete rootProject.buildDir -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/gradle.properties b/bricks/flutter_starter/__brick__/{{name}}/android/gradle.properties deleted file mode 100644 index 94adc3a..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.useAndroidX=true -android.enableJetifier=true diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/gradle/wrapper/gradle-wrapper.properties b/bricks/flutter_starter/__brick__/{{name}}/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index cc5527d..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,6 +0,0 @@ -#Fri Jun 23 08:50:38 CEST 2017 -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/bricks/flutter_starter/__brick__/{{name}}/android/settings.gradle b/bricks/flutter_starter/__brick__/{{name}}/android/settings.gradle deleted file mode 100644 index 44e62bc..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/android/settings.gradle +++ /dev/null @@ -1,11 +0,0 @@ -include ':app' - -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() - -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } - -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/bricks/flutter_starter/__brick__/{{name}}/assets/images/2.0x/logo.png b/bricks/flutter_starter/__brick__/{{name}}/assets/images/2.0x/logo.png deleted file mode 100644 index f2c967fff1db66c7fb0048a2b997962b634a97dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15736 zcmeHuWmsE5+a{!eLUChcMn#eSb-wN8r&%mG&ls8;_gn7qQx4ZxNiD> z`|a+}{kzw-KhBktIdd}4%se*t{UlmlRSxSF=_@28BrFAa8BHW4WGLeDK|@8f@VG#C z5g*8&nsU-eRTJa~h%YiW`U)z*IM_jdB8zdyLEd?1V?T^SOIq1z4vW@Wj?4%4NMj*gKUJ@UzPZB8_ zKx;wB9}?9~R2>y15qX3ZV+!B?oVQq_w_BFK<^56U7YZIBE;30EAvGqzg723!J~cfJ zJubEIaK?IYe@E}c#Gmz!wu*r3(+apz$-S3OrQu~oxv5EG!0%Hu+>mZYASx>Am!r*( z!xP{WdLxAaZP@&y#$9l_b(FRJn(njz5xvt9Z0#->V%@R>iP63`n|hvXfv^K6V%`1h;_wK(-w# z_|)nm03qlMzn?H0`@S{r_ec6!hP`}cMkQz4TjtXq*){`6*fr z5R#G#SNCTz{z3!RsUbzCJPP#mkODxOR+n&ea1y;hVF3;S->BG|W;1bGR@ z3}%`lHS^AxhnAf*km=|QS1vxyR61fp+^^${l_ldHxrqEycdVn=&gAUhA-C0^Y7XCm zjB%Pa$k~}ik;!$J10=JKxa7Q(m2V1mP6e{0&wc=1H7|U3n_baVKd=MAbRoTp@f?|f zXhRC#EQf^A!sSgj^xN(N=wh_>oop>K6BS%pjFvhY2+?9z>PVnzWgiIqlr7+wGPx`zR!poE2d|q#n0|FjUz}2H3m9JD4 z*?~O--4+pcvLlR$u~fCdZVJc0%mBdS@7vWw4knnd(3+`3dO=dPJ0d%!K184M6m65q zQRdy0%~P?1jpL8X2Byg)B!vL&GJNDrn*7w%a{TfjSizp6yDrun4|{RsBQnp*YW=)W zbYKC#`4^%TU^YeopdoEHW(9*Wy#N5Do405i545w9 zM61NDk>D+vi8LIRGekQ*6TOrC2oM>L)pWc^eq1_jkw-^11L(2r@r}cD?~17b0Dho8 zJ~Z@4)jMS2ii4O&oX5CpHCarcA!CiYuqt@Ajzkn05Q^x7+4sH(FR@-kD@&AKi0y^6 zyF&Nf97T%6o+el8EBO!-U1YL(ofI#85)PBDd05E{uyW)&^L>QYtQ-sD64;j?kABmf|qpjne4yI@(@cZ)$o zk`ryS1~jcaOvYl@2vKY?1i7C>Gyp(pf|`scZjfPh_=HqX4}P}=5zL`iPkF*o6w+zR z!~cm>Q<|C|;Hfjyw$orLUn%oygdU+;j9Cogg*(vWHl5%UW%+7t#m|zXKw{>>Zy>`@ zb`>^W{lncVulpTFQ=Mq-8uNI@QUmy(21G{es#r z9*iAYBzwjM&O8dfcL1R{X6gsCCyn7VT6EpfZ2WU49Hk(B$B7uE&;q<0=pV}V8vB$2 zi7dpjxQrCJ%OPeg$Yz9E)Pb?ssx1#hrKd`st@Aa*f2ABkpdU)MSk7o?tmX=bT5!R zT(TCOUHuX}advAh48_UL)rm_#Y{X#MXz@fAM(|3Pzx+jL4Um!f*JVmAt^m#fND{H6 zVIN*O6`+;|PL4?6^%yPoO4FHWpf9~?ZslQ&F&vzk$B5KPWL)fS*fnYM&Vd^c6{(bc za0UnvbC$)%Esdy81tG%BRZ}P%Mkl>2+!KN+j?0V|x~-GIMO?%QsYVqvATWuN#h6y6THm>Og~L&`(yM?6F={aJy|u@5{cU}k!5gaCb0#RWIYDLlN01|Z;; z>8;jlKfB#7(%njArO(1H0a)z^JdfDJo7uX^^)yr10CCm}3PaND+4vq7UP^=xiv_t1 zbJ+1KqO8Jow^uEZBBZG|fW#x8?!}#KIx93Jjtua}?6S<*>pgUDokgLp?~utv1-_sO zBYgRYL70QjB}&F8=ZUcaV>Iiy?pji%yvaz~naLqZ4ud(f-2*}BND=p;-Cs~;dM z9T01aps>?<5pIGeL~U+0GC)l85}0nWoBxfkZAHg+A_a3Yv?U!av>i{MF08~c^-_Bs zlPjxZtmb@r>s?BQP{pSPBHg`&kT?!9tMFKam$qpSUT!RaEKQ9vQAR1`hmLHS`t;!sOtw`H|M;<91Dm$E znkpfnGjutf&N>;17aA)NYpX|Kvr-7AA>qfXr&gB%9BG%aWZEo`pwd_&M7DuSIgSaN z-3wKaQXflGqW}cS&njid zV0e>JA^Hmva78U&j`6tEU}5GeOH&mC@n+MSn$DR}#T5)0@}8OhP@vg(HgS4`$m>r znkXRbRFU(Yw(kl9Wwm&K)VN_tR)VPQLIwu-vG2JoO-;VX=`QqxzvJm7VgYdNsX|?e zIyzEO^%^F_L8)Vy72+pB1u^{wjgjIIX==_;3r%yY^h6$nwTyJL^-nLa_U35PY{np2 zEfEb9U)0bq0oY$FG?F)0UWjr1viyOf?j@No4m>W5hp{&oiT9_~YpZ4+G~M6p(Eps> zSB=I+MCgHTyMS}te(_{{#U8jDl)z;#p>-qZ1@AXFAg3(zf$1j3%;D?0c z3sq6CQbF%edY6gyE=}v^g3l2WZa?aR+?Z&u?a1+>C?9X||7wWFRcX!7=lvT74Xbyp@_`tO^qbv(It0d$<+>*SiQ><2!c z^RLh7)jb;hL=7v1E0@Kd{U#kEi9zHpgvCqI*s+z!C=s;gU3w;;l$sV7&5o09XY}qm z+#W3A{;+fSh|dd?Y_r6wlk2`pJQzEWoKRxH5nJ1TG!$e`W@xW#-MD|sYy0|?MU2fB zfgRVYh+G$w&s)+f{1+nD*1mB+jJ0MO{KHQ76024nN9_5bSX$I!;A3DR)9E{GHssPq z)<&4i#>8^d)tmcW`l*t%u!oBeZ2?uMqgGgCA159t;kkbOEiFY=;CtNx|22yzZv{j~ z54N>3xj#5f9MB-=AP9XoVX)6(xUN^s>ZZ9kYFo{AIFldeL3R`lL>xx&!;Lh=#cyeu zX^w!YT_T$%*XC*qtqqd_ts+f*E@mPDX@K4)ZcDZ6?_3c6?HTQ!A?`uZ>$7i{Lf~OuEg|jxhIl z(?g?f_0rnh{;OZdN#+&5<@5vews(MEH%ykTDu3fxOrxz05Xl&1Te;%#k?UmtyDbvx zdNw;=_;>A1KBbG=emjbFl8>8z!aA;1sJ2|zz7RaVqu}dnGf~Rw>h!KmBH0!TOa_e+ zM~I>{%@D&^2E2BBfa=>wvQ{DC&-$9b+0$&0CnKg=eU?&McgWFcsA6(!7eA{>&pn=^Fi!{u@T3+T;4ER*hUvpmKfJUiT-kF&Ofp^J;e zGZrfDPV9B?-*^LnT+_KPEptGoo~tc z`?B+8IRp+qt*$J=fB)7`@{+QdOXyXsnjd5;AszRlsTufzF|xr&yROX0qRU(Ces^l& zWc93&Cxkut@9=~9QKhafbq%OaQV=O5RMM6XNeT7-ayYc4R?6+Jj~<$`ast+h+iS;N z8v7B}fngTgd7S!M6{S9@Hcvfls|Fvy)@a1=pMf^FR0!+y*ms;_&u79lj;)X7z7x~p zV6y>>q7(*X#^hiCyrm$o2O6IZt-$q%*XcI9rABYB2prj8vK^xvqy{%ew2!nNc2dG8 z@3cP{bY>a_mQ{+glQAeS70+f-{N49m^WHPLNppp7sJ{6Vx5kqtXf9)+wJ8=ses5r3 zeUlb!P%10n!n~uSn~|O3&33=J+2177H4h)RDim(L<9r-B41zm#nVIaUjVi} z9ov1EO1EHGe1#a9b#$y8W|Te~L+V4adf*~lFv}ZBAlSYxzG>q1zR7n!FlW894f7mU z-CikPCahP&X(xwyaw?GIEYaReM*Qre?18t#5KJ=|M7+6O19pm-9xnUfX^OUlVRfA+ zG}Lxx;hPs>295N7UF}}N#XibyybZS+h}xZeL9I7kp_Hf3bdvh)$gkS@Y{030K68nU!-D&2ek5 zB7if9oewe8P$*G}clpBy7pR(Db&@`_HE6`DwOtFjt}s|z7pyieY-3XrU$s15^udh0 z7h;cmd!${S z9Cn5BmU#o-wRWxsJhW(vR5GuHiK!sY=9x$_csWmDJlwGiPX0hu3Hzv~jjH}9@e0NI zCb#ak%@tR->GK;LRXy)L^HGHMfBP@({|*1EFu}-Y7ZM`wdY|Eo^%pzKFkVk?Y5dK* z#Mwj6Nu_;~d-OP7a$RY2NNNRiXKBy0z5{u?7fybdQ?St>a+3G?Wx(bQcvZ=h((agP zE)U@b5JoiGK4BS+4guw>Gr2b^C7n%A<68o z|CpJv4a1;-&Uliq``-cYcZJuPQ@fA*?-EY2mpyA1Gx9wz*xrqAr)}uOSZKs37B9P% z+oT}AI=alR`IHzL2Pv+)YL^Ilv~hAo*lg@gXZiZe*%K#wErDbr?Is;4TCUCEb<0QX zk*^8=#^HTUz4p6)R?BPJ$V%!!lW*&8i@di{(fT1Vq!6iS!;ryPe`~n zFZTcJwAfz7u$jyj9=pHa3WCE1{k=f&%j0=D*;iL8jgRYM?eaS1)fiS?xlx7B9{Pv` zLH)00m=)w5pNZS`fB`=o^@_D*Z2;?1Rowdb-G2J9LGkU^`}Tgedrx?GuED}Sho4{f z>XnLcx}~67`3II%L6M=_8wA30MsnwnKPy1Zn@qVF67&51yJ1{5%yZGdtl04OF68-`E1CXQYMgS7>a1?$u8n**Z1SR9%$K(#VDIwd;ECDN%hDG8N*~=pBUP&S(1p^% z*@bTNMGEAA{v-uMi-BY*P~!XcQLo-Uiq_dl*&00oil#0Mm5jL`h`lkmVW6R@(HzBO z6NcHVW_0iMinb?E2+WC|NeaTHKmCCOP1?GnV8uR$lM+X!;Odv{vi|GoN)UQ|%)1nD z?|KH$JU*ggK0nHQbB}(h_8&dEirCREBmtbzxzB{YZKi+M){s`AAd8mfWHko}|ciKYa-zCBBn&Cr2DZYyJwHsZmr{ zb3l775jyx|`?@t8bF^(GK0cnmycgWQ_~M>sDykdpC0xQ-Z!FD^y)5?e!;%nj5>iv+ zAaIHP9?r}mLqzv+*Y(Hh1DcIe3*!$I3k2AmwC&4NH-fG*yP4*lcKCB9{`2hU zjH@WQs=DGU^{Ui=6#U9eEiN1fOd)sglt3HM9nH{A_IfHE3ziV<2Ddc*V%52Nr?HsqHfFoin<#Q@&Xc{?DLwtPPx`p zZS{J+W(Qz}uY`Lo|95Xce8IHB;g#sCaI|9{fhXLf6SC7Fcb6vL)$NXT$&0*R+Qq4u zPm=H_(d(J{iO$)}y;>7fpf`)J%IQ&IBchD!cYr<@bZo-SP~&h8qNV~jQ;zHh znI~gUOXuDk5pfXe&J=lVfdxJ_uDn!IhomY5rCrcFBf6QUaBNEiz5)^ z(fV&N;W%s%R18?GM!thZVcc!zOw0E@b*$ZL!*Go0OGH>L<#)9PFiPb7t4ezZxE}0N z^)HzU!4_8F7l+T6RSsiyn1d3TCMSHwi6sto|3@Z23u$+mp?16L194)hE;}Up-pola=5Xis{O+}YAQ{L` zWz7D{zSWfQxly0&U*+O4nW#A)LY>|(LzQVW4>59ga*Oy%I zHx(9|3noUS4-Wy6en#=kgHx-He^ud7t1o_ZF&(6L_BOF;jYcK9a8PXKoI5J9mx($1 zHwevJf9uF=Hzv$QxNtvZ&=p5@b!Tw1pksZ{ldH~2ee4Nqba+!gB{zDnlZJRstE{=K zs;eMX_TSK7>zw{2rg*)%cjJfIII*V#&ZZyjY{mzdRLcmqYcv6smVc7lQ%yaRlf401 zIPlY_%bQ@)o?;Id)b^sROFmQ z{|nlmSvm`~4#{#Px76lc4uRGK>hO>?)PUEMhgZbazb7MqVL=;w8G|mSEY^McADrdG zNUPs@)yKJX$;Y=b{6{-71dK$wE%*zydu|lAMLMdVXVKsbaslmRRDaG=+q0<#8}F}7 z*17%HW^zS|J^ktxe659R(5cg=h1k>hvW{9mC~$&zd>#k?-1#5O|7M!iX#Ev3mEKLw zF|}H+$oTK9fAwpCDfj5_!d3HQgWUFvk*MQiw*;Q$Wa>$~ibJqL&6iqk75Qi+yM$y( zy|2@Cndr`6bj`4M5`^m&*ITnmNiEiE1J8X`Zls_FA zXXKbddSfOyHC2V7YHZs$bT*6x2#|;YkoT?kP9qhQwUq;LI5yJ9c7nzjv$LFtD2@!V zU;`9zYZ$(Gfb^A;)Z-@xfI30BqlWTlY+(+KqG*io|qx)Y;>01S;kpPfI8nfid=>xf~=h;Fm3-A81#$br;TBFF*5C)k-598ThF!p6AfUv@uR%21@l2Rrl~TZbV5 zXBgaBCRj~2FCpB$<@cKV?ght&FaP{_C0;K-}Qk+;j!rMEdAEu2uv`oT_ z;YqD70I=JJ)-CP`L5~}wOF}_~W37x~#TNL$5y{QWkvHt`O+0nvQh~fH#)hN~aBFc^ z60imVHwHkKzD6}AlQxpSD=K9)AO`^xH=wY+*!vut8EJsa%o>W}uDk4FXsf^MLZ(&^ z<*?2*Iav0sN0951b--g$J%ZgDT?Qk}mBRm`1z+8=zSw7DA(X{Kpy~U8D0V3)uH6XC z`lNncWW2$3dLouQJti7=h%M9rq#L<6e^a*<*E=GmG-`3e%6o$Krq|P)lTn)54Y)95 z9#Gh?<;UCZd{sxE9!6Y^S@aiV&Wd=L06Y#16{;X_Am>GZRp1N+oJ#HT=YK=^IEtfB zApH*2hVS$m2$jL_KT`Fxk<8(Y6aUjtfDV8#np+)sW$OgpA>gBTE;er6H5F2(tI34| zy>rS0HH%!!>9jlHNC^7Eq12GKQS654G1&Qp`w9WUrlJ`$*m)Z(3CsWVL69FXL8&9u zA&WRo&Nd$M4S!dVWc~$^IHsFV7@7iM`o@dIj=l%|G4^vrQdFVsAvdM>s&@y5U&HN* zKT%%kg4^Owu50aeGG2--C`Wus9D6130KHlL??+;_#Zj0T5jEA`7UeZc^1YN@PtljsY@uNc?T^kE7=s}nW7KB_d zH^Y=9gvlxGC6(uTYI@!qWHK_QZ7BYBR;DGnu48EuoBWG2SBGau5CejiZ(%&0A9*wE z&G6Rr^>0aLRAde;L!&1t&?jz384l{r@a~iu&}Z_65CRuw2Q~yIY;@MfVXW$u&bLl2 zyi{r1AVr-9bWNL=8#eIXpYe}f4@bgwBA~yOpe|{IIGVrkcIGaRu62ZkJ6m{fcf7@Mb~h|zXpx&a0OA=&d7Ep?<;S@@g9UyGy8)AD)L z6Owni_9p$=zeutJ7WNbR4Ein8m&b&lV*)B-y?o~TO1*6i)%~+Fu4p@7LM|_T_3naP zV+W>A5ySj4*yV(v{(0oN3j}+&@KT1+OpziVZNn=rZWlmc5kW+k7Kd{CFOEnXMcE~a z&6R?r(jc3>kjoP-wm|Xw1xpKS#I_IpK2OqkajR)?-}0az3&FLI?%rn&Y=i*M12)WIB?GI{0Rx}y|f*fNt2wT+EQ+0ax`22c!p>c3IQt|`(()%A* z*(u^xQp_|6Inl{FU?U(yg3D(!1_H-~dYsT$JbmhbV=Uq;NwM!mz-FbIA}q5?pIxAP z$Wv2V1U_}5EMP(KWGzIff*qzBBk-$6GdyR$z>BsfEqsMZ!F94cZb`=wu)uUudDK1x zYcSc2i`lMOH`h26&%r(B#gtPx4)X<~S%-#P%HHP^<)IBrJ6U(5lIx<9(y%f9?lY%q z6_q--QE<~e?unnltLd~0oa!VT8+@&_`0zxuSBw!X0EwR-f8+KVDPY2;L^CY^+<`#9 z2%wf)*eZJRnT6~AAIa4fw_<6r8_ul~VKz(rg1I3U2(4D>HAtyF=$$8tB#PH!(K_g> zl_q+pdoHV>#zLchz=x*4Q77T!44H&zFxu=S{xf~&2A^~&L(c*0HP7&kPqJD@1VfEF zzofOr zG(p)h;#xiU79$TB+S!*myp>!Ad93OkrHVZW8&`hgt}*WvJ!NaumAI6OgrJEjwR>iF zOP!TMB$W{JX$=3`rvpeKn0UI|$W1fQ5}zOjNC2S;`ew^icDwJRdR5R7VJIdFIF4oy zYpj@g(B>&LFx*m7Fi&-S^bjsDQ8Wl(J&8s7M;MJ(45`Y1-^*@#4cDE6^Y^@gP_9pN zcc>HP@tDsa5Tp|uz5vfH-juTwMt=_7Ei{~q^gfjJ%Hy8)^k1ckMkT9{PMJw2!b%)w zI5iAF##cF&e;Ig{v|Y;Y5(Epg8RYn>-r%~cAmHsx<~spe>Ot>t>`z8@*B|g6wD?y^$%ZLJ)kq@HD3$KK^?ni1n%I;5Rq=)4C-M|?eDM_s~ zRC|^-c>hX&mdb^pN#u*BJooIw!{8snP-#3BnD5iFoY-Vqp?`A}QIYB`E#kNI0*KZP zg{x}IcgnyC3dai{rSE{psTX-lK@4(@e2-f!cz`&>?~!``vPVT5@}r>Tok(mqgqo1_2D*Ku_FjqB3tT40kxkQ=R>jafRQ zBz65iPw7I6=_DgL;bcV7M3S~f8Jrj{!H&iejtuG0vNTKRlvZ_A!0=Oe6$-;QuW2HB z7codfz0a?Ddor&kr-Yppn~W>KaGHs|#@?a|ip!qcQb}?L0+tc!>qropg#{V_WO`Mw z_JRRXqc-yNDNUTq276>jRhXr1I{_)w7{Olew%)#7PY5AjT8QC&shbkmXg1e0xVkz` zl{i)vLq7L)g-J4B9U*6gqblpRoFuk$`qovFa+-4GkhRNSpX={yWNKV#_cPj1G?r$2$Lth&ItR@k+GPVCDN8}$2HvG{Tnze2`P|ec{5;_@ zKalGGQDrAgg#BJ}!nt`SE-n4Vs%l+|wep%z@>5er*7%Hb%XCp|waH}aq4Njp)x*y5 za9u@HFnjfCXa4iJ6i2d_VIiV+2{!}@NR1$F5ftj;$WhlB??g5#$~3KhVe@(XxP6p(D4z2h)EFQV5~S)4OOLeAOHmqyeksSud{4A7cHNHng${5Kg&%c_NYy1|msa4+; z1&b9{7D?k!b|1sfA0>Gj7@w6yg6d{Av_08xO^8Gk!P+;Hfmqs8@yHREb0z!1Xbp;z zk4NUiT=bJKFB%=St9@KkKN(tvWg>+tt@LGefm@LND*Uoa_3w zNFyL3=_Bd221JPZRNDL>^;tWtI)?(oatyFf)9hX>KfZ&h6e;zdGRApuaYD24gv_ow z8>7eV9ASKIQkisKV{kiCqsFCbDa!pw0d{neMPu~{k#8;~<$;4G{?+BR?+yqSPive4 zu`pPsrOrMjlm|o<`79Uc0Iu#2=VvZ4Tqf1Cu){SZja-${DaroY?*}_#813FE6OaWJ zcDlZHj+3rGBYXpI=aRRmcPIhNU`H6>6C$_yUt?Tl$ty|4WFI<}oqlE@9?bwZ2E`Ga z-8A)Df`eA-P>IDH&HI*!25tBEx*4Q)^O*f)@d+ulcii9c5($b^|2>LX9pS2`&}&bs z{Q)+|wb=r_mwaK_5c^nZ9c5M6MZflZtj}~vo%jm*a?OJEH)xm`8Kp}5=RJShd56b) z56|S{=@HH9_+Y~`E|lNC#PcKIP3e?7$3C#0?3kPYS~$b04Fe`=a`C?Ia3ENYL4a)C z;GB3^j$WYVv8T&v)2u*h8J-rhjXT5~iebHIiVQQzlaLKub=APZRP=-m{J2!~f)@E3 zwQ|Zu6*O8Xqt2rF&`temJq!)p!6pd z7;$~STTQ8FTM}4UE?8~!vDrb`Bi74Rw-ZMpGs5$yJ_%IzgAfTBJ36W-qW~3fV03I8 zp#11-g0g}|h!wWwe7TuNFU5v7$Tv17g=U=?Lf&Vcahb$eY*KjhY!7DCnyzF=w;gfk zA42A_e@#{RXI{ZRS1tPyskwR!Dn%9{mwf$e1r74f_}R@!*wz>QF2X|b{(I|?6J&BB zN)WhsC%}BQtl`(jI#PT_K<@);I(PsL*Mnv8>(AU)V1z}!YBuS6Ne5grEj?Swf2ds~ zXfx<*seCHO)L4TuV4OX!D#;JE3hhir#6zk|*A{sVSofLdLMLPrHr4N-bx;aB#bWtm z-K|>udn}8xKFW|z6;Q|Fc^&L~*oBDGAfKN;3Y&7w&!+cHR{Y=7m-<(!=%rqJsIffd z&Fl57Ba2EOB&6}ZdYt*&b{8dc|2bJM(`SK<yS7 z(>%Swi|V4w`J?J5uCRn;W3~evi*|8!eYkT)IjL*P(En@HaJ5(OVJp znc#3WlKEbO9>Su&ytJhmOFD;-$VCmR_aEp)bq1orgY*{C3HXnymaiGUf1VL>k~>h$ zj?_`yO)hZLJ6xG*F>nszK!3H+byC3OrGA$>xj3@j&gJz5mLA?hlOI3BP^(w^liIJT zh%Wr>O7fRm@+2n^kXMHGeH6SzeV++?9%bqn$23N1GsJvFg%JZCIAA@y2Y-{Wtnbwh zyNOF$f*$Y;Q_^5i6?wthZ;Q@z-|(oZ*YT}#55-@4lxr>D`DigVqW2Bn`Pa7@zAKi< zeTu_x{PN*v(}W5$F0%L1xAF-%gPa^Rl_UCuRXnmn>wbNYRQmdL^4?~MS0J)S<%ebb z!pEnE7PWz3t-w~IYmWJ0NZ|zw=aa>67ze)3s-_R%v}zsbGpg-D^-kq=_BjaCwj!{BU2+IBh|XGkYY$IPl|Al>4{jO{5T zzI|T{0xOrYYjiBfHqViM%sK^++QRC@FQpUZhRq#{`=I&7$!~hIC@xw~gVc1a9+0C| znslgIfdCBlRB8QDk}|6@j{-OEmf2SSSLRSqSEP;P(`gh4o79 z8gS}lxJ(E!_bBEr89b@UZ16;|ETH^srD?<|0$;^SpQEg^>CB%8d&ig=XVFyOR|-Mf z7i!sk^4_RVfAy|g*@QaI9^8zIWCSV=IxAF4qV4XX5AS8tq;;-~~8!FJriOUQ&CCP|8 zK-S~y8U?1BoE)56sdk|3m-54E^l(`4IeDfI-=sHN+=AHN=K#rvL7pc%u$rQPUzE|{Lr;864a0yIWYpHl1*fi`^KH{NXRhV%b&Wnv z7{nMp3@0KDjTAa0cd$0%$IiPcti#FCwK8Qr0&F&ub%hk$QSl&)DB8Vy*)Kw_lP`7! z?A=#*mV-0wYgFg2dcin~pVL|V1K-M>((Sgr_a}bXR=*3@=^O{0_?22Q1Sv&~V^)YX z+8)#qQ_ZO&6b+AbB)e;kcfS#vGbjNLLcQ&(>dzE6k*h!#&*HCYz?Y&m#>RIFm`od4}JY*`hkv470>4 zb_SrMOsg!1dRJxHN1wKM1DlB=8zoadvClTLRC@%ChH^&9bQJh%_|S^5#_!v*H2LNP z%C34c*vUWG(!kY!1~BL;X`~{=NDuluKjgJ^eH7ZF?V=anTdM z>^8M8!7C#Irk%X*Ltw?*#QZ<7iiLa=_SHUh}u(@>`MKdV!iUCUF8scwSoTfmPIY6#s6_TpB=vvl6OwUB6vx;N6{8 zr<|)ulu<37@mj-8F3;+oUx>gA9?wRer6!h`lo+woU~Wy4!ErO4dVxKu?I&8oS74+p zo5$g&YxF#g%x7K0u0i@wb&c0=u`46}3@gjSFt6q(!=R)cRtKK~JP{uS* za@GC0VSn7vjf5mcHKuJiPmses97lx&r{{Ep|30U-xJ9~<2iUs%xL7_0r`&;sq1%oL zi^sl>&-;q?2{Tm{!np?~ydu>!zrRmhR#S~Q^&2)CQT&nJ<#r%E_9baM=XA99IbW}i zh`9z9sW?H?>(B3hJP0&;*WaOP(*$cUz*jBEj)n8W1x8=pWm}lWN+|A9|i|WW&WMVH_Kz`EZghp=Gy65j8eO3qSo7 zrRAo_6_I0)I4n==s{mc~oASH(O6dmP@IM%`-uhP&3o4{igV4@*Nn@Dy6kVeI`r;&3X2mX#a63J_9P-XRY(UKx>Ahh`pCd`M z_Btt=xQ~moyHJ>GDEWJ?8yg4e2w*v}>og9# zE-w{3J*IR<6%S0l7ZwV}FQ0DY5k8wCl+e}L;T(B)dFSQ1qodwk(Y{AYK;=beNqL)V zTh>!vAz#eapN3(K&o zx1y|Ee~u0#V?9j0Jz@*3**}#4G6d0##?62-}Qt( znkpPasTp8O1$>%|_o=L6x<;(ew%{~rZA5ZiNV&EXXZ%gtv~)I&>uR_`AtBO z<+JLfcPE{?%AWCP3*Pa3J3fL#QQc}**vF*gFKzcKZOV4U=aNLA&rxZ9+ndNsDyrv8 zq`X#^_5Dh)=Ff!wLPxudd!H1kv6E-rr+m=}LA?iA?os}n>8}jk~`Oh6lccRjH=cBm=LWC zvNd*7*eRwPSrnv%TLm0lG#vw7^SEC7&QQpyE>@WW{PUo{H)7`eVss}lYZW8*zF4Rc zzD~p!Kk|Xx+m_c6#-h+yVlTwl=;g_#2IVI(GCD1I_&di%Bxq_?aYgC#CqFK!5DLn^ zojAN;i5BPYVw8S@*?t?>8x0Xu>ZCh}w~rm4;Y?Oe>AbD{?LM74WAPe&@8dXfB)YDe z6Yo({(65hOQS=FIn;K4e7b!5eMNm{7mrt;^1R0gokM-Z{$JameA38la@1*}wq*Alv ze($BXlTTG3MKPkSPr43Le71A3G7D8oP;p~Y;!L|i@pR_8m0h4zlia{RXvj!?RDZTo zn3`|OI8WSh9;V-Iljkvi`S*?W{V0CLsLb$ddO`V2;p!kri<)JZ#hpmEX3CBEna^O9a96Mu~ST{;G3qky8B!@UnjWYoRD zXq}B+m$~5ir%5iJKWEK>-zl0}2P!?ygRn+w6>B2<)(36lM@-TDnj||)U1+6jTv_^k zKn(;v_R%IO?^q0qKx8@ggu7J6NA=($&nSUy22ow>WEjl3S-(!whjR{ABX!xd@#z@Q zdlwnqILjJ+iQ%cN79&;q6$64O6KRB8Ea7ZvF{~<$v4}JKDGRK+wX~pDeVo(P7g1Vk vax&O)co*H7SaN5@_WuqXN3Xc~{9<2lq9$dh0rB5zBqRk{RhcSj^UwbSL9Rpw diff --git a/bricks/flutter_starter/__brick__/{{name}}/assets/images/3.0x/logo.png b/bricks/flutter_starter/__brick__/{{name}}/assets/images/3.0x/logo.png deleted file mode 100644 index 6b5dcc95e3dbadd92732b6817033b4e4f67899da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25917 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

!ZXxUZo3-jc~o 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

Ih>Xo6wTPDyGc;48$#k=R3-J;pxf{*iKkS& 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Ξ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 diff --git a/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart b/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart deleted file mode 100644 index 85604a7..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/integration_test/app_test.dart +++ /dev/null @@ -1,106 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:integration_test/integration_test.dart'; - -void main() { - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - - late final AuthenticationBloc authenticationBloc; - late final UpdateThemeBloc updateThemeBloc; - late final AuthenticationRepository authenticationService; - - setUpAll(() async { - await SharedPrefs.instance.init(); - authenticationService = AuthenticationRepository(); - updateThemeBloc = UpdateThemeBloc(); - authenticationBloc = AuthenticationBloc( - authenticationService: authenticationService, - ); - }); - - tearDownAll(() { - authenticationBloc.close(); - updateThemeBloc.close(); - }); - - Widget createWidget(Widget child) { - return MaterialApp( - debugShowCheckedModeBanner: false, - home: Builder(builder: (context) { - UiSizeConfig().init(context); - return MultiBlocProvider( - providers: [ - BlocProvider.value(value: authenticationBloc), - BlocProvider.value(value: updateThemeBloc), - ], - child: child, - ); - }), - ); - } - - group('Flutter starter', () { - testWidgets('Complete app test', (tester) async { - await tester.pumpWidget(createWidget(const App())); - - await tester.pumpAndSettle(); - await Future.delayed(const Duration(milliseconds: 500)); - await tester.pumpAndSettle(); - - final Finder email = find.byKey(const Key('emailField')); - final Finder password = find.byKey(const Key('passwordField')); - final Finder login = find.byKey(const Key('loginButton')); - final Finder theme = find.byKey(const Key('themeSwitch')); - final Finder logout = find.byKey(const Key('logoutButton')); - - /// Empty - await tester.enterText(email, ''); - await tester.enterText(password, ''); - - await tester.tap(login); - await tester.pumpAndSettle(); - - expect(authenticationBloc.state, const AuthenticationStart()); - - /// Invalid - await tester.enterText(email, 'test@gmail.com'); - await tester.enterText(password, 'test1234'); - - await tester.tap(login); - await tester.pumpAndSettle(); - - expect( - authenticationBloc.state, - const AuthenticationFailure( - message: 'Invalid Request: {"error":"user not found"}'), - ); - - /// Login - await tester.enterText(email, 'eve.holt@reqres.in'); - await tester.enterText(password, 'cityslicka'); - - await tester.tap(login); - await tester.pumpAndSettle(); - - /// Theme - final ScaffoldState state = tester.firstState(find.byType(Scaffold)); - state.openDrawer(); - await tester.pumpAndSettle(); - await tester.tap(theme); - await tester.pumpAndSettle(); - - state.closeDrawer(); - await tester.pumpAndSettle(); - - expect(updateThemeBloc.state, const SetTheme(appTheme: AppTheme.dark)); - - /// Logout - await tester.tap(logout); - await tester.pumpAndSettle(); - - expect(authenticationBloc.state, const UserLogoutState()); - }); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/ios/.gitignore deleted file mode 100644 index 7a7f987..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/AppFrameworkInfo.plist b/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 9625e10..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Debug.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Debug.xcconfig deleted file mode 100644 index ec97fc6..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Release.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Release.xcconfig deleted file mode 100644 index c4855bf..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile b/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile deleted file mode 100644 index 313ea4a..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile +++ /dev/null @@ -1,41 +0,0 @@ -# Uncomment this line to define a global platform for your project -platform :ios, '11.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile.lock b/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile.lock deleted file mode 100644 index 37d7c0f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Podfile.lock +++ /dev/null @@ -1,59 +0,0 @@ -PODS: - - Flutter (1.0.0) - - flutter_native_splash (0.0.1): - - Flutter - - fluttertoast (0.0.2): - - Flutter - - Toast - - FMDB (2.7.5): - - FMDB/standard (= 2.7.5) - - FMDB/standard (2.7.5) - - path_provider_ios (0.0.1): - - Flutter - - shared_preferences_ios (0.0.1): - - Flutter - - sqflite (0.0.2): - - Flutter - - FMDB (>= 2.7.5) - - Toast (4.0.0) - -DEPENDENCIES: - - Flutter (from `Flutter`) - - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) - - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) - - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) - - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) - - sqflite (from `.symlinks/plugins/sqflite/ios`) - -SPEC REPOS: - trunk: - - FMDB - - Toast - -EXTERNAL SOURCES: - Flutter: - :path: Flutter - flutter_native_splash: - :path: ".symlinks/plugins/flutter_native_splash/ios" - fluttertoast: - :path: ".symlinks/plugins/fluttertoast/ios" - path_provider_ios: - :path: ".symlinks/plugins/path_provider_ios/ios" - shared_preferences_ios: - :path: ".symlinks/plugins/shared_preferences_ios/ios" - sqflite: - :path: ".symlinks/plugins/sqflite/ios" - -SPEC CHECKSUMS: - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef - fluttertoast: 16fbe6039d06a763f3533670197d01fc73459037 - FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a - path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 - shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad - sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 - Toast: 91b396c56ee72a5790816f40d3a94dd357abc196 - -PODFILE CHECKSUM: 7368163408c647b7eb699d0d788ba6718e18fb8d - -COCOAPODS: 1.11.3 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.pbxproj b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 13ef714..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,549 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 50; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 96B4905726F45C2D9B05EDF0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 90E2746B12027798B0662130 /* 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 */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4A63F70A590EEC2C31E49E53 /* 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 = ""; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 90E2746B12027798B0662130 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 91B24820E83830628E56E6F1 /* 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 = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D936D17513099C123DDF7A65 /* 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 = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 96B4905726F45C2D9B05EDF0 /* Pods_Runner.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - F61B79B65E4ED1DCA6E50A2C /* Pods */, - C7ED4B9403C7740748C190CE /* Frameworks */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; - C7ED4B9403C7740748C190CE /* Frameworks */ = { - isa = PBXGroup; - children = ( - 90E2746B12027798B0662130 /* Pods_Runner.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - F61B79B65E4ED1DCA6E50A2C /* Pods */ = { - isa = PBXGroup; - children = ( - D936D17513099C123DDF7A65 /* Pods-Runner.debug.xcconfig */, - 4A63F70A590EEC2C31E49E53 /* Pods-Runner.release.xcconfig */, - 91B24820E83830628E56E6F1 /* Pods-Runner.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - F10AA196B4EF3EDBC65C1C6B /* [CP] Check Pods Manifest.lock */, - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 24E4F4EB271A687C8E367BA0 /* [CP] Embed Pods Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 24E4F4EB271A687C8E367BA0 /* [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; - }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; - F10AA196B4EF3EDBC65C1C6B /* [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; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = {{org}}.testApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = {{org}}.testApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = {{org}}.testApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index c87d15a..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/contents.xcworkspacedata b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 21a3cc1..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/AppDelegate.swift b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fa..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "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" - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada4725e9b0ddb1deab583e5b5102493aa332..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10932 zcmeHN2~<R zh`|8`A_PQ1nSu(UMFx?8j8PC!!VDphaL#`F42fd#7Vlc`zIE4n%Y~eiz4y1j|NDpi z?<@|pSJ-HM`qifhf@m%MamgwK83`XpBA<+azdF#2QsT{X@z0A9Bq>~TVErigKH1~P zRX-!h-f0NJ4Mh++{D}J+K>~~rq}d%o%+4dogzXp7RxX4C>Km5XEI|PAFDmo;DFm6G zzjVoB`@qW98Yl0Kvc-9w09^PrsobmG*Eju^=3f?0o-t$U)TL1B3;sZ^!++3&bGZ!o-*6w?;oOhf z=A+Qb$scV5!RbG+&2S}BQ6YH!FKb0``VVX~T$dzzeSZ$&9=X$3)_7Z{SspSYJ!lGE z7yig_41zpQ)%5dr4ff0rh$@ky3-JLRk&DK)NEIHecf9c*?Z1bUB4%pZjQ7hD!A0r-@NF(^WKdr(LXj|=UE7?gBYGgGQV zidf2`ZT@pzXf7}!NH4q(0IMcxsUGDih(0{kRSez&z?CFA0RVXsVFw3^u=^KMtt95q z43q$b*6#uQDLoiCAF_{RFc{!H^moH_cmll#Fc^KXi{9GDl{>%+3qyfOE5;Zq|6#Hb zp^#1G+z^AXfRKaa9HK;%b3Ux~U@q?xg<2DXP%6k!3E)PA<#4$ui8eDy5|9hA5&{?v z(-;*1%(1~-NTQ`Is1_MGdQ{+i*ccd96ab$R$T3=% zw_KuNF@vI!A>>Y_2pl9L{9h1-C6H8<)J4gKI6{WzGBi<@u3P6hNsXG=bRq5c+z;Gc3VUCe;LIIFDmQAGy+=mRyF++u=drBWV8-^>0yE9N&*05XHZpPlE zxu@?8(ZNy7rm?|<+UNe0Vs6&o?l`Pt>P&WaL~M&#Eh%`rg@Mbb)J&@DA-wheQ>hRV z<(XhigZAT z>=M;URcdCaiO3d^?H<^EiEMDV+7HsTiOhoaMX%P65E<(5xMPJKxf!0u>U~uVqnPN7T!X!o@_gs3Ct1 zlZ_$5QXP4{Aj645wG_SNT&6m|O6~Tsl$q?nK*)(`{J4b=(yb^nOATtF1_aS978$x3 zx>Q@s4i3~IT*+l{@dx~Hst21fR*+5}S1@cf>&8*uLw-0^zK(+OpW?cS-YG1QBZ5q! zgTAgivzoF#`cSz&HL>Ti!!v#?36I1*l^mkrx7Y|K6L#n!-~5=d3;K<;Zqi|gpNUn_ z_^GaQDEQ*jfzh;`j&KXb66fWEk1K7vxQIMQ_#Wu_%3 z4Oeb7FJ`8I>Px;^S?)}2+4D_83gHEq>8qSQY0PVP?o)zAv3K~;R$fnwTmI-=ZLK`= zTm+0h*e+Yfr(IlH3i7gUclNH^!MU>id$Jw>O?2i0Cila#v|twub21@e{S2v}8Z13( zNDrTXZVgris|qYm<0NU(tAPouG!QF4ZNpZPkX~{tVf8xY690JqY1NVdiTtW+NqyRP zZ&;T0ikb8V{wxmFhlLTQ&?OP7 z;(z*<+?J2~z*6asSe7h`$8~Se(@t(#%?BGLVs$p``;CyvcT?7Y!{tIPva$LxCQ&4W z6v#F*);|RXvI%qnoOY&i4S*EL&h%hP3O zLsrFZhv&Hu5tF$Lx!8(hs&?!Kx5&L(fdu}UI5d*wn~A`nPUhG&Rv z2#ixiJdhSF-K2tpVL=)5UkXRuPAFrEW}7mW=uAmtVQ&pGE-&az6@#-(Te^n*lrH^m@X-ftVcwO_#7{WI)5v(?>uC9GG{lcGXYJ~Q8q zbMFl7;t+kV;|;KkBW2!P_o%Czhw&Q(nXlxK9ak&6r5t_KH8#1Mr-*0}2h8R9XNkr zto5-b7P_auqTJb(TJlmJ9xreA=6d=d)CVbYP-r4$hDn5|TIhB>SReMfh&OVLkMk-T zYf%$taLF0OqYF?V{+6Xkn>iX@TuqQ?&cN6UjC9YF&%q{Ut3zv{U2)~$>-3;Dp)*(? zg*$mu8^i=-e#acaj*T$pNowo{xiGEk$%DusaQiS!KjJH96XZ-hXv+jk%ard#fu=@Q z$AM)YWvE^{%tDfK%nD49=PI|wYu}lYVbB#a7wtN^Nml@CE@{Gv7+jo{_V?I*jkdLD zJE|jfdrmVbkfS>rN*+`#l%ZUi5_bMS<>=MBDNlpiSb_tAF|Zy`K7kcp@|d?yaTmB^ zo?(vg;B$vxS|SszusORgDg-*Uitzdi{dUV+glA~R8V(?`3GZIl^egW{a919!j#>f` znL1o_^-b`}xnU0+~KIFLQ)$Q6#ym%)(GYC`^XM*{g zv3AM5$+TtDRs%`2TyR^$(hqE7Y1b&`Jd6dS6B#hDVbJlUXcG3y*439D8MrK!2D~6gn>UD4Imctb z+IvAt0iaW73Iq$K?4}H`7wq6YkTMm`tcktXgK0lKPmh=>h+l}Y+pDtvHnG>uqBA)l zAH6BV4F}v$(o$8Gfo*PB>IuaY1*^*`OTx4|hM8jZ?B6HY;F6p4{`OcZZ(us-RVwDx zUzJrCQlp@mz1ZFiSZ*$yX3c_#h9J;yBE$2g%xjmGF4ca z&yL`nGVs!Zxsh^j6i%$a*I3ZD2SoNT`{D%mU=LKaEwbN(_J5%i-6Va?@*>=3(dQy` zOv%$_9lcy9+(t>qohkuU4r_P=R^6ME+wFu&LA9tw9RA?azGhjrVJKy&8=*qZT5Dr8g--d+S8zAyJ$1HlW3Olryt`yE zFIph~Z6oF&o64rw{>lgZISC6p^CBer9C5G6yq%?8tC+)7*d+ib^?fU!JRFxynRLEZ zj;?PwtS}Ao#9whV@KEmwQgM0TVP{hs>dg(1*DiMUOKHdQGIqa0`yZnHk9mtbPfoLx zo;^V6pKUJ!5#n`w2D&381#5#_t}AlTGEgDz$^;u;-vxDN?^#5!zN9ngytY@oTv!nc zp1Xn8uR$1Z;7vY`-<*?DfPHB;x|GUi_fI9@I9SVRv1)qETbNU_8{5U|(>Du84qP#7 z*l9Y$SgA&wGbj>R1YeT9vYjZuC@|{rajTL0f%N@>3$DFU=`lSPl=Iv;EjuGjBa$Gw zHD-;%YOE@<-!7-Mn`0WuO3oWuL6tB2cpPw~Nvuj|KM@))ixuDK`9;jGMe2d)7gHin zS<>k@!x;!TJEc#HdL#RF(`|4W+H88d4V%zlh(7#{q2d0OQX9*FW^`^_<3r$kabWAB z$9BONo5}*(%kx zOXi-yM_cmB3>inPpI~)duvZykJ@^^aWzQ=eQ&STUa}2uT@lV&WoRzkUoE`rR0)`=l zFT%f|LA9fCw>`enm$p7W^E@U7RNBtsh{_-7vVz3DtB*y#*~(L9+x9*wn8VjWw|Q~q zKFsj1Yl>;}%MG3=PY`$g$_mnyhuV&~O~u~)968$0b2!Jkd;2MtAP#ZDYw9hmK_+M$ zb3pxyYC&|CuAbtiG8HZjj?MZJBFbt`ryf+c1dXFuC z0*ZQhBzNBd*}s6K_G}(|Z_9NDV162#y%WSNe|FTDDhx)K!c(mMJh@h87@8(^YdK$&d*^WQe8Z53 z(|@MRJ$Lk-&ii74MPIs80WsOFZ(NX23oR-?As+*aq6b?~62@fSVmM-_*cb1RzZ)`5$agEiL`-E9s7{GM2?(KNPgK1(+c*|-FKoy}X(D_b#etO|YR z(BGZ)0Ntfv-7R4GHoXp?l5g#*={S1{u-QzxCGng*oWr~@X-5f~RA14b8~B+pLKvr4 zfgL|7I>jlak9>D4=(i(cqYf7#318!OSR=^`xxvI!bBlS??`xxWeg?+|>MxaIdH1U~#1tHu zB{QMR?EGRmQ_l4p6YXJ{o(hh-7Tdm>TAX380TZZZyVkqHNzjUn*_|cb?T? zt;d2s-?B#Mc>T-gvBmQZx(y_cfkXZO~{N zT6rP7SD6g~n9QJ)8F*8uHxTLCAZ{l1Y&?6v)BOJZ)=R-pY=Y=&1}jE7fQ>USS}xP#exo57uND0i*rEk@$;nLvRB@u~s^dwRf?G?_enN@$t* zbL%JO=rV(3Ju8#GqUpeE3l_Wu1lN9Y{D4uaUe`g>zlj$1ER$6S6@{m1!~V|bYkhZA z%CvrDRTkHuajMU8;&RZ&itnC~iYLW4DVkP<$}>#&(`UO>!n)Po;Mt(SY8Yb`AS9lt znbX^i?Oe9r_o=?})IHKHoQGKXsps_SE{hwrg?6dMI|^+$CeC&z@*LuF+P`7LfZ*yr+KN8B4{Nzv<`A(wyR@!|gw{zB6Ha ziwPAYh)oJ(nlqSknu(8g9N&1hu0$vFK$W#mp%>X~AU1ay+EKWcFdif{% z#4!4aoVVJ;ULmkQf!ke2}3hqxLK>eq|-d7Ly7-J9zMpT`?dxo6HdfJA|t)?qPEVBDv z{y_b?4^|YA4%WW0VZd8C(ZgQzRI5(I^)=Ub`Y#MHc@nv0w-DaJAqsbEHDWG8Ia6ju zo-iyr*sq((gEwCC&^TYBWt4_@|81?=B-?#P6NMff(*^re zYqvDuO`K@`mjm_Jd;mW_tP`3$cS?R$jR1ZN09$YO%_iBqh5ftzSpMQQtxKFU=FYmP zeY^jph+g<4>YO;U^O>-NFLn~-RqlHvnZl2yd2A{Yc1G@Ga$d+Q&(f^tnPf+Z7serIU};17+2DU_f4Z z@GaPFut27d?!YiD+QP@)T=77cR9~MK@bd~pY%X(h%L={{OIb8IQmf-!xmZkm8A0Ga zQSWONI17_ru5wpHg3jI@i9D+_Y|pCqVuHJNdHUauTD=R$JcD2K_liQisqG$(sm=k9;L* z!L?*4B~ql7uioSX$zWJ?;q-SWXRFhz2Jt4%fOHA=Bwf|RzhwqdXGr78y$J)LR7&3T zE1WWz*>GPWKZ0%|@%6=fyx)5rzUpI;bCj>3RKzNG_1w$fIFCZ&UR0(7S?g}`&Pg$M zf`SLsz8wK82Vyj7;RyKmY{a8G{2BHG%w!^T|Njr!h9TO2LaP^_f22Q1=l$QiU84ao zHe_#{S6;qrC6w~7{y(hs-?-j?lbOfgH^E=XcSgnwW*eEz{_Z<_Px$?ny*JR5%f>l)FnDQ543{x%ZCiu33$Wg!pQFfT_}?5Q|_VSlIbLC`dpoMXL}9 zHfd9&47Mo(7D231gb+kjFxZHS4-m~7WurTH&doVX2KI5sU4v(sJ1@T9eCIKPjsqSr z)C01LsCxk=72-vXmX}CQD#BD;Cthymh&~=f$Q8nn0J<}ZrusBy4PvRNE}+1ceuj8u z0mW5k8fmgeLnTbWHGwfKA3@PdZxhn|PypR&^p?weGftrtCbjF#+zk_5BJh7;0`#Wr zgDpM_;Ax{jO##IrT`Oz;MvfwGfV$zD#c2xckpcXC6oou4ML~ezCc2EtnsQTB4tWNg z?4bkf;hG7IMfhgNI(FV5Gs4|*GyMTIY0$B=_*mso9Ityq$m^S>15>-?0(zQ<8Qy<_TjHE33(?_M8oaM zyc;NxzRVK@DL6RJnX%U^xW0Gpg(lXp(!uK1v0YgHjs^ZXSQ|m#lV7ip7{`C_J2TxPmfw%h$|%acrYHt)Re^PB%O&&=~a zhS(%I#+V>J-vjIib^<+s%ludY7y^C(P8nmqn9fp!i+?vr`bziDE=bx`%2W#Xyrj|i z!XQ4v1%L`m{7KT7q+LZNB^h8Ha2e=`Wp65^0;J00)_^G=au=8Yo;1b`CV&@#=jIBo zjN^JNVfYSs)+kDdGe7`1&8!?MQYKS?DuHZf3iogk_%#9E|5S zWeHrmAo>P;ejX7mwq#*}W25m^ZI+{(Z8fI?4jM_fffY0nok=+88^|*_DwcW>mR#e+ zX$F_KMdb6sRz!~7KkyN0G(3XQ+;z3X%PZ4gh;n-%62U<*VUKNv(D&Q->Na@Xb&u5Q3`3DGf+a8O5x7c#7+R+EAYl@R5us)CIw z7sT@_y~Ao@uL#&^LIh&QceqiT^+lb0YbFZt_SHOtWA%mgPEKVNvVgCsXy{5+zl*X8 zCJe)Q@y>wH^>l4;h1l^Y*9%-23TSmE>q5nI@?mt%n;Sj4Qq`Z+ib)a*a^cJc%E9^J zB;4s+K@rARbcBLT5P=@r;IVnBMKvT*)ew*R;&8vu%?Z&S>s?8?)3*YawM0P4!q$Kv zMmKh3lgE~&w&v%wVzH3Oe=jeNT=n@Y6J6TdHWTjXfX~-=1A1Bw`EW8rn}MqeI34nh zexFeA?&C3B2(E?0{drE@DA2pu(A#ElY&6el60Rn|Qpn-FkfQ8M93AfWIr)drgDFEU zghdWK)^71EWCP(@(=c4kfH1Y(4iugD4fve6;nSUpLT%!)MUHs1!zJYy4y||C+SwQ! z)KM&$7_tyM`sljP2fz6&Z;jxRn{Wup8IOUx8D4uh&(=O zx-7$a;U><*5L^!%xRlw)vAbh;sdlR||& ze}8_8%)c2Fwy=F&H|LM+p{pZB5DKTx>Y?F1N%BlZkXf!}JeGuMZk~LPi7{cidvUGB zAJ4LVeNV%XO>LTrklB#^-;8nb;}6l;1oW&WS=Mz*Az!4cqqQzbOSFq`$Q%PfD7srM zpKgP-D_0XPTRX*hAqeq0TDkJ;5HB1%$3Np)99#16c{ zJImlNL(npL!W|Gr_kxl1GVmF5&^$^YherS7+~q$p zt}{a=*RiD2Ikv6o=IM1kgc7zqpaZ;OB)P!1zz*i3{U()Dq#jG)egvK}@uFLa`oyWZ zf~=MV)|yJn`M^$N%ul5);JuQvaU1r2wt(}J_Qgyy`qWQI`hEeRX0uC@c1(dQ2}=U$ tNIIaX+dr)NRWXcxoR{>fqI{SF_dm1Ylv~=3YHI)h002ovPDHLkV1g(pWS;;4 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index f091b6b0bca859a3f474b03065bef75ba58a9e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1588 zcmV-42Fv-0P)C1SqPt}wig>|5Crh^=oyX$BK<}M8eLU3e2hGT;=G|!_SP)7zNI6fqUMB=)y zRAZ>eDe#*r`yDAVgB_R*LB*MAc)8(b{g{9McCXW!lq7r(btRoB9!8B-#AI6JMb~YFBEvdsV)`mEQO^&#eRKx@b&x- z5lZm*!WfD8oCLzfHGz#u7sT0^VLMI1MqGxF^v+`4YYnVYgk*=kU?HsSz{v({E3lb9 z>+xILjBN)t6`=g~IBOelGQ(O990@BfXf(DRI5I$qN$0Gkz-FSc$3a+2fX$AedL4u{ z4V+5Ong(9LiGcIKW?_352sR;LtDPmPJXI{YtT=O8=76o9;*n%_m|xo!i>7$IrZ-{l z-x3`7M}qzHsPV@$v#>H-TpjDh2UE$9g6sysUREDy_R(a)>=eHw-WAyfIN z*qb!_hW>G)Tu8nSw9yn#3wFMiLcfc4pY0ek1}8(NqkBR@t4{~oC>ryc-h_ByH(Cg5 z>ao-}771+xE3um9lWAY1FeQFxowa1(!J(;Jg*wrg!=6FdRX+t_<%z&d&?|Bn){>zm zZQj(aA_HeBY&OC^jj*)N`8fa^ePOU72VpInJoI1?`ty#lvlNzs(&MZX+R%2xS~5Kh zX*|AU4QE#~SgPzOXe9>tRj>hjU@c1k5Y_mW*Jp3fI;)1&g3j|zDgC+}2Q_v%YfDax z!?umcN^n}KYQ|a$Lr+51Nf9dkkYFSjZZjkma$0KOj+;aQ&721~t7QUKx61J3(P4P1 zstI~7-wOACnWP4=8oGOwz%vNDqD8w&Q`qcNGGrbbf&0s9L0De{4{mRS?o0MU+nR_! zrvshUau0G^DeMhM_v{5BuLjb#Hh@r23lDAk8oF(C+P0rsBpv85EP>4CVMx#04MOfG z;P%vktHcXwTj~+IE(~px)3*MY77e}p#|c>TD?sMatC0Tu4iKKJ0(X8jxQY*gYtxsC z(zYC$g|@+I+kY;dg_dE>scBf&bP1Nc@Hz<3R)V`=AGkc;8CXqdi=B4l2k|g;2%#m& z*jfX^%b!A8#bI!j9-0Fi0bOXl(-c^AB9|nQaE`*)Hw+o&jS9@7&Gov#HbD~#d{twV zXd^Tr^mWLfFh$@Dr$e;PBEz4(-2q1FF0}c;~B5sA}+Q>TOoP+t>wf)V9Iy=5ruQa;z)y zI9C9*oUga6=hxw6QasLPnee@3^Rr*M{CdaL5=R41nLs(AHk_=Y+A9$2&H(B7!_pURs&8aNw7?`&Z&xY_Ye z)~D5Bog^td-^QbUtkTirdyK^mTHAOuptDflut!#^lnKqU md>ggs(5nOWAqO?umG&QVYK#ibz}*4>0000U6E9hRK9^#O7(mu>ETqrXGsduA8$)?`v2seloOCza43C{NQ$$gAOH**MCn0Q?+L7dl7qnbRdqZ8LSVp1ItDxhxD?t@5_yHg6A8yI zC*%Wgg22K|8E#!~cTNYR~@Y9KepMPrrB8cABapAFa=`H+UGhkXUZV1GnwR1*lPyZ;*K(i~2gp|@bzp8}og7e*#% zEnr|^CWdVV!-4*Y_7rFvlww2Ze+>j*!Z!pQ?2l->4q#nqRu9`ELo6RMS5=br47g_X zRw}P9a7RRYQ%2Vsd0Me{_(EggTnuN6j=-?uFS6j^u69elMypu?t>op*wBx<=Wx8?( ztpe^(fwM6jJX7M-l*k3kEpWOl_Vk3@(_w4oc}4YF4|Rt=2V^XU?#Yz`8(e?aZ@#li0n*=g^qOcVpd-Wbok=@b#Yw zqn8u9a)z>l(1kEaPYZ6hwubN6i<8QHgsu0oE) ziJ(p;Wxm>sf!K+cw>R-(^Y2_bahB+&KI9y^);#0qt}t-$C|Bo71lHi{_+lg#f%RFy z0um=e3$K3i6K{U_4K!EX?F&rExl^W|G8Z8;`5z-k}OGNZ0#WVb$WCpQu-_YsiqKP?BB# vzVHS-CTUF4Ozn5G+mq_~Qqto~ahA+K`|lyv3(-e}00000NkvXXu0mjfd`9t{ diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index d0ef06e7edb86cdfe0d15b4b0d98334a86163658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1716 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 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index c8f9ed8f5cee1c98386d13b17e89f719e83555b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1895 zcmV-t2blPYP)FQtfgmafE#=YDCq`qUBt#QpG%*H6QHY765~R=q zZ6iudfM}q!Pz#~9JgOi8QJ|DSu?1-*(kSi1K4#~5?#|rh?sS)(-JQqX*}ciXJ56_H zdw=^s_srbAdqxlvGyrgGet#6T7_|j;95sL%MtM;q86vOxKM$f#puR)Bjv9Zvz9-di zXOTSsZkM83)E9PYBXC<$6(|>lNLVBb&&6y{NByFCp%6+^ALR@NCTse_wqvNmSWI-m z!$%KlHFH2omF!>#%1l3LTZg(s7eof$7*xB)ZQ0h?ejh?Ta9fDv59+u#MokW+1t8Zb zgHv%K(u9G^Lv`lh#f3<6!JVTL3(dCpxHbnbA;kKqQyd1~^Xe0VIaYBSWm6nsr;dFj z4;G-RyL?cYgsN1{L4ZFFNa;8)Rv0fM0C(~Tkit94 zz#~A)59?QjD&pAPSEQ)p8gP|DS{ng)j=2ux)_EzzJ773GmQ_Cic%3JJhC0t2cx>|v zJcVusIB!%F90{+}8hG3QU4KNeKmK%T>mN57NnCZ^56=0?&3@!j>a>B43pi{!u z7JyDj7`6d)qVp^R=%j>UIY6f+3`+qzIc!Y_=+uN^3BYV|o+$vGo-j-Wm<10%A=(Yk^beI{t%ld@yhKjq0iNjqN4XMGgQtbKubPM$JWBz}YA65k%dm*awtC^+f;a-x4+ddbH^7iDWGg&N0n#MW{kA|=8iMUiFYvMoDY@sPC#t$55gn6ykUTPAr`a@!(;np824>2xJthS z*ZdmT`g5-`BuJs`0LVhz+D9NNa3<=6m;cQLaF?tCv8)zcRSh66*Z|vXhG@$I%U~2l z?`Q zykI#*+rQ=z6Jm=Bui-SfpDYLA=|vzGE(dYm=OC8XM&MDo7ux4UF1~0J1+i%aCUpRe zt3L_uNyQ*cE(38Uy03H%I*)*Bh=Lb^Xj3?I^Hnbeq72(EOK^Y93CNp*uAA{5Lc=ky zx=~RKa4{iTm{_>_vSCm?$Ej=i6@=m%@VvAITnigVg{&@!7CDgs908761meDK5azA} z4?=NOH|PdvabgJ&fW2{Mo$Q0CcD8Qc84%{JPYt5EiG{MdLIAeX%T=D7NIP4%Hw}p9 zg)==!2Lbp#j{u_}hMiao9=!VSyx0gHbeCS`;q&vzeq|fs`y&^X-lso(Ls@-706qmA z7u*T5PMo_w3{se1t2`zWeO^hOvTsohG_;>J0wVqVe+n)AbQCx)yh9;w+J6?NF5Lmo zecS@ieAKL8%bVd@+-KT{yI|S}O>pYckUFs;ry9Ow$CD@ztz5K-*D$^{i(_1llhSh^ zEkL$}tsQt5>QA^;QgjgIfBDmcOgi5YDyu?t6vSnbp=1+@6D& z5MJ}B8q;bRlVoxasyhcUF1+)o`&3r0colr}QJ3hcSdLu;9;td>kf@Tcn<@9sIx&=m z;AD;SCh95=&p;$r{Xz3iWCO^MX83AGJ(yH&eTXgv|0=34#-&WAmw{)U7OU9!Wz^!7 zZ%jZFi@JR;>Mhi7S>V7wQ176|FdW2m?&`qa(ScO^CFPR80HucLHOTy%5s*HR0^8)i h0WYBP*#0Ks^FNSabJA*5${_#%002ovPDHLkV1oKhTl@e3 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index a6d6b8609df07bf62e5100a53a01510388bd2b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2665 zcmV-v3YPVWP)oFh3q0MFesq&64WThn3$;G69TfjsAv=f2G9}p zgSx99+!YV6qME!>9MD13x)k(+XE7W?_O4LoLb5ND8 zaV{9+P@>42xDfRiYBMSgD$0!vssptcb;&?u9u(LLBKmkZ>RMD=kvD3h`sk6!QYtBa ztlZI#nu$8lJ^q2Z79UTgZe>BU73(Aospiq+?SdMt8lDZ;*?@tyWVZVS_Q7S&*tJaiRlJ z+aSMOmbg3@h5}v;A*c8SbqM3icg-`Cnwl;7Ts%A1RkNIp+Txl-Ckkvg4oxrqGA5ewEgYqwtECD<_3Egu)xGllKt&J8g&+=ac@Jq4-?w6M3b*>w5 z69N3O%=I^6&UL5gZ!}trC7bUj*12xLdkNs~Bz4QdJJ*UDZox2UGR}SNg@lmOvhCc~ z*f_UeXv(=#I#*7>VZx2ObEN~UoGUTl=-@)E;YtCRZ>SVp$p9yG5hEFZ!`wI!spd)n zSk+vK0Vin7FL{7f&6OB%f;SH22dtbcF<|9fi2Fp%q4kxL!b1#l^)8dUwJ zwEf{(wJj@8iYDVnKB`eSU+;ml-t2`@%_)0jDM`+a46xhDbBj2+&Ih>1A>6aky#(-SYyE{R3f#y57wfLs z6w1p~$bp;6!9DX$M+J~S@D6vJAaElETnsX4h9a5tvPhC3L@qB~bOzkL@^z0k_hS{T4PF*TDrgdXp+dzsE? z>V|VR035Pl9n5&-RePFdS{7KAr2vPOqR9=M$vXA1Yy5>w;EsF`;OK{2pkn-kpp9Pw z)r;5JfJKKaT$4qCb{TaXHjb$QA{y0EYy*+b1XI;6Ah- zw13P)xT`>~eFoJC!>{2XL(a_#upp3gaR1#5+L(Jmzp4TBnx{~WHedpJ1ch8JFk~Sw z>F+gN+i+VD?gMXwcIhn8rz`>e>J^TI3E-MW>f}6R-pL}>WMOa0k#jN+`RyUVUC;#D zg|~oS^$6%wpF{^Qr+}X>0PKcr3Fc&>Z>uv@C);pwDs@2bZWhYP!rvGx?_|q{d`t<*XEb#=aOb=N+L@CVBGqImZf&+a zCQEa3$~@#kC);pasdG=f6tuIi0PO-y&tvX%>Mv=oY3U$nD zJ#gMegnQ46pq+3r=;zmgcG+zRc9D~c>z+jo9&D+`E6$LmyFqlmCYw;-Zooma{sR@~ z)_^|YL1&&@|GXo*pivH7k!msl+$Sew3%XJnxajt0K%3M6Bd&YFNy9}tWG^aovK2eX z1aL1%7;KRDrA@eG-Wr6w+;*H_VD~qLiVI`{_;>o)k`{8xa3EJT1O_>#iy_?va0eR? zDV=N%;Zjb%Z2s$@O>w@iqt!I}tLjGk!=p`D23I}N4Be@$(|iSA zf3Ih7b<{zqpDB4WF_5X1(peKe+rASze%u8eKLn#KKXt;UZ+Adf$_TO+vTqshLLJ5c z52HucO=lrNVae5XWOLm!V@n-ObU11!b+DN<$RuU+YsrBq*lYT;?AwJpmNKniF0Q1< zJCo>Q$=v$@&y=sj6{r!Y&y&`0$-I}S!H_~pI&2H8Z1C|BX4VgZ^-! zje3-;x0PBD!M`v*J_)rL^+$<1VJhH*2Fi~aA7s&@_rUHYJ9zD=M%4AFQ`}k8OC$9s XsPq=LnkwKG00000NkvXXu0mjfhAk5^ diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 75b2d164a5a98e212cca15ea7bf2ab5de5108680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3831 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 diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index c4df70d39da7941ef3f6dcb7f06a192d8dcb308d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1888 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 iW8Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eacad3b03bb08bbddbbf4ac48dd78b3d838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/LaunchScreen.storyboard b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/Main.storyboard b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c2851..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Info.plist b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Info.plist deleted file mode 100644 index 917c02b..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Info.plist +++ /dev/null @@ -1,55 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Flutter Starter - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - app_test - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - CFBundleLocalizations - - fr - en - es - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - CADisableMinimumFrameDurationOnPhone - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Runner-Bridging-Header.h b/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a5..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/bricks/flutter_starter/__brick__/{{name}}/l10n.yaml b/bricks/flutter_starter/__brick__/{{name}}/l10n.yaml deleted file mode 100644 index 90886d0..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/l10n.yaml +++ /dev/null @@ -1,6 +0,0 @@ -# This file is used to generate AppLocalisations from the -# .arb files inside lib/utils/assets/l10n folder - -arb-dir: lib/l10n -template-arb-file: app_en.arb -output-localisation-file: app_localizations.dart diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/README.md b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/README.md deleted file mode 100644 index ba1b80d..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# Dio - -A powerful Http client for Dart, which supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, Timeout etc. - -## Folders - -- dio_helpers (Contains all the information about base urls, api calls and exception handling) -- models. (Contains the user model and an auto generated Json serializable file) - -### dio_helpers - -- [dio_apis.dart](api_sdk/dio/dio_helpers/dio_apis.dart) - Contains all the api tags. -- [dio_client.dart](api_sdk/dio/dio_helpers/dio_client.dart) - DioClient class is responsible for handling all the network call methods. -- [dio_interceptor.dart](api_sdk/dio/dio_helpers/dio_interceptor.dart) - DioInterceptor can intercept requests/responses/errors before they are handled by then or catchError. -- [dio_exceptions.dart](api_sdk/dio/dio_helpers/dio_exceptions.dart) - DioExceptions handles all the exceptions for different error codes. - -### models - -- [user_model.dart](api_sdk/dio/models/user_model.dart) - A data class that contains the serialized form of a user model. - -### dio_api_sdk - -Contains two classes DioApi and DioService that will eventually call the network methods. **DioApi** class will create a dio instance which will have interceptors added to it. **DioService** will eventually call the network methods present in [dio_service.dart](api_sdk/dio/dio_service.dart) diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_apis.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_apis.dart deleted file mode 100644 index 46e07dd..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_apis.dart +++ /dev/null @@ -1,5 +0,0 @@ -class DioApis { - static const String users = '/users/{id}'; - static const String register = '/register'; - static const String login = '/login'; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart deleted file mode 100644 index 7826e14..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.dart +++ /dev/null @@ -1,21 +0,0 @@ -import 'package:dio/dio.dart'; -import 'package:retrofit/retrofit.dart'; - -import '../../../config/config.dart'; -import 'dio_apis.dart'; - -part 'dio_client.g.dart'; - -@RestApi(baseUrl: baseUrl) -abstract class DioClient { - factory DioClient(Dio dio, {String baseUrl}) = _DioClient; - - @GET(DioApis.users) - Future getUsers(@Path("id") int id); - - @POST(DioApis.login) - Future loginUser(@Body() dynamic body); - - @POST(DioApis.register) - Future registerUser(@Body() dynamic body); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart deleted file mode 100644 index f963aea..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_client.g.dart +++ /dev/null @@ -1,77 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'dio_client.dart'; - -// ************************************************************************** -// RetrofitGenerator -// ************************************************************************** - -// ignore_for_file: unnecessary_brace_in_string_interps,no_leading_underscores_for_local_identifiers - -class _DioClient implements DioClient { - _DioClient(this._dio, {this.baseUrl}) { - baseUrl ??= 'https://reqres.in/api'; - } - - final Dio _dio; - - String? baseUrl; - - @override - Future getUsers(id) async { - const _extra = {}; - final queryParameters = {}; - final _headers = {}; - final _data = {}; - final _result = await _dio.fetch(_setStreamType( - Options(method: 'GET', headers: _headers, extra: _extra) - .compose(_dio.options, '/users/${id}', - queryParameters: queryParameters, data: _data) - .copyWith(baseUrl: baseUrl ?? _dio.options.baseUrl))); - final value = _result.data; - return value; - } - - @override - Future loginUser(body) async { - const _extra = {}; - final queryParameters = {}; - final _headers = {}; - final _data = body; - final _result = await _dio.fetch(_setStreamType( - Options(method: 'POST', headers: _headers, extra: _extra) - .compose(_dio.options, '/login', - queryParameters: queryParameters, data: _data) - .copyWith(baseUrl: baseUrl ?? _dio.options.baseUrl))); - final value = _result.data; - return value; - } - - @override - Future registerUser(body) async { - const _extra = {}; - final queryParameters = {}; - final _headers = {}; - final _data = body; - final _result = await _dio.fetch(_setStreamType( - Options(method: 'POST', headers: _headers, extra: _extra) - .compose(_dio.options, '/register', - queryParameters: queryParameters, data: _data) - .copyWith(baseUrl: baseUrl ?? _dio.options.baseUrl))); - final value = _result.data; - return value; - } - - RequestOptions _setStreamType(RequestOptions requestOptions) { - if (T != dynamic && - !(requestOptions.responseType == ResponseType.bytes || - requestOptions.responseType == ResponseType.stream)) { - if (T == String) { - requestOptions.responseType = ResponseType.plain; - } else { - requestOptions.responseType = ResponseType.json; - } - } - return requestOptions; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_exceptions.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_exceptions.dart deleted file mode 100644 index f5777f5..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_exceptions.dart +++ /dev/null @@ -1,43 +0,0 @@ -import 'package:dio/dio.dart'; - -class DioExceptions implements Exception { - final String message; - final RequestOptions requestOptions; - - DioExceptions({required this.message, required this.requestOptions}); -} - -class TimeOutException extends DioExceptions { - TimeOutException(String message, RequestOptions requestOptions) - : super(message: message, requestOptions: requestOptions); -} - -class BadRequestException extends DioExceptions { - BadRequestException(String message, RequestOptions requestOptions) - : super(message: message, requestOptions: requestOptions); -} - -class UnauthorisedException extends DioExceptions { - UnauthorisedException(String message, RequestOptions requestOptions) - : super(message: message, requestOptions: requestOptions); -} - -class FileNotFoundException extends DioExceptions { - FileNotFoundException(String message, RequestOptions requestOptions) - : super(message: message, requestOptions: requestOptions); -} - -class InternalServerException extends DioExceptions { - InternalServerException(String message, RequestOptions requestOptions) - : super(message: message, requestOptions: requestOptions); -} - -class BadGateWayException extends DioExceptions { - BadGateWayException(String message, RequestOptions requestOptions) - : super(message: message, requestOptions: requestOptions); -} - -class ConnectionException extends DioExceptions { - ConnectionException(String message, RequestOptions requestOptions) - : super(message: message, requestOptions: requestOptions); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart deleted file mode 100644 index d4a70d5..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_helpers/dio_interceptor.dart +++ /dev/null @@ -1,79 +0,0 @@ -import 'package:dio/dio.dart'; - -import 'dio_exceptions.dart'; - -class DioInterceptor extends Interceptor { - @override - void onRequest(RequestOptions options, RequestInterceptorHandler handler) { - // Do something before request is sent. - super.onRequest(options, handler); - } - - @override - void onResponse(Response response, ResponseInterceptorHandler handler) { - // Do something with the response data. - super.onResponse(response, handler); - } - - @override - void onError(DioError err, ErrorInterceptorHandler handler) { - // Do something with the response error. - _handleError(err); - super.onError(err, handler); - } - - _handleError(DioError err) { - switch (err.type) { - case DioErrorType.connectTimeout: - case DioErrorType.receiveTimeout: - case DioErrorType.sendTimeout: - throw TimeOutException(err.message, err.requestOptions); - case DioErrorType.response: - switch (err.response?.statusCode) { - case 400: - throw BadRequestException( - err.error.toString(), - err.requestOptions, - ); - case 401: - throw UnauthorisedException( - err.error.toString(), - err.requestOptions, - ); - case 403: - throw UnauthorisedException( - err.error.toString(), - err.requestOptions, - ); - case 404: - throw FileNotFoundException( - err.error.toString(), - err.requestOptions, - ); - case 500: - throw InternalServerException( - err.error.toString(), - err.requestOptions, - ); - case 502: - throw BadGateWayException( - err.error.toString(), - err.requestOptions, - ); - case 503: - throw BadGateWayException( - err.error.toString(), - err.requestOptions, - ); - } - break; - case DioErrorType.other: - throw ConnectionException( - 'Please check your network connection', - err.requestOptions, - ); - default: - throw err; - } - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart deleted file mode 100644 index 84c80a2..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/dio_service.dart +++ /dev/null @@ -1,45 +0,0 @@ -import 'package:dio/dio.dart'; - -import 'dio_helpers/dio_client.dart'; -import 'dio_helpers/dio_interceptor.dart'; - -class DioApi { - DioApi._internal(); - - static final _singleton = DioApi._internal(); - - factory DioApi() => _singleton; - - static Dio createDio() { - var dio = Dio(BaseOptions( - receiveTimeout: 15000, - connectTimeout: 15000, - sendTimeout: 15000, - )); - - dio.interceptors.addAll({ - DioInterceptor(), - }); - return dio; - } -} - -class DioService { - static getUserData(int id) async { - final client = DioClient(DioApi.createDio()); - final response = await client.getUsers(id); - return response; - } - - static loginUser(dynamic body) async { - final client = DioClient(DioApi.createDio()); - final response = await client.loginUser(body); - return response; - } - - static registerUser(dynamic body) async { - final client = DioClient(DioApi.createDio()); - final response = await client.loginUser(body); - return response; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart deleted file mode 100644 index b4b4803..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.dart +++ /dev/null @@ -1,41 +0,0 @@ -import 'package:json_annotation/json_annotation.dart'; - -part 'user_model.g.dart'; - -@JsonSerializable() -class DioResponseData { - Data? data; - Support? support; - - DioResponseData({this.data, this.support}); - - factory DioResponseData.fromJson(Map json) => - _$DioResponseDataFromJson(json); - Map toJson() => _$DioResponseDataToJson(this); -} - -@JsonSerializable() -class Data { - int? id; - String? email; - String? firstName; - String? lastName; - String? avatar; - - Data({this.id, this.email, this.firstName, this.lastName, this.avatar}); - - factory Data.fromJson(Map json) => _$DataFromJson(json); - Map toJson() => _$DataToJson(this); -} - -@JsonSerializable() -class Support { - String? url; - String? text; - - Support({this.url, this.text}); - - factory Support.fromJson(Map json) => - _$SupportFromJson(json); - Map toJson() => _$SupportToJson(this); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.g.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.g.dart deleted file mode 100644 index 5ed5c03..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio/models/user_model.g.dart +++ /dev/null @@ -1,49 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'user_model.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -DioResponseData _$DioResponseDataFromJson(Map json) => - DioResponseData( - data: json['data'] == null - ? null - : Data.fromJson(json['data'] as Map), - support: json['support'] == null - ? null - : Support.fromJson(json['support'] as Map), - ); - -Map _$DioResponseDataToJson(DioResponseData instance) => - { - 'data': instance.data, - 'support': instance.support, - }; - -Data _$DataFromJson(Map json) => Data( - id: json['id'] as int?, - email: json['email'] as String?, - firstName: json['firstName'] as String?, - lastName: json['lastName'] as String?, - avatar: json['avatar'] as String?, - ); - -Map _$DataToJson(Data instance) => { - 'id': instance.id, - 'email': instance.email, - 'firstName': instance.firstName, - 'lastName': instance.lastName, - 'avatar': instance.avatar, - }; - -Support _$SupportFromJson(Map json) => Support( - url: json['url'] as String?, - text: json['text'] as String?, - ); - -Map _$SupportToJson(Support instance) => { - 'url': instance.url, - 'text': instance.text, - }; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio_api_sdk.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio_api_sdk.dart deleted file mode 100644 index 0c11611..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/dio_api_sdk.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'dio/dio_service.dart'; - -class ApiSdk { - static loginWithEmailAndPassword(dynamic body) async { - final response = await DioService.loginUser(body); - return response; - } - - static signUpWithEmailAndPassword(dynamic body) async { - final response = await DioService.registerUser(body); - return response; - } - - static getUserData(int id) async { - final response = await DioService.getUserData(id); - return response; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/README.md b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/README.md deleted file mode 100644 index 18ceee2..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# Http - -A composable, Future-based library for making HTTP requests that contains a set of high-level functions and classes that make it easy to consume HTTP resources. - -## Folders - -- http_helpers (Contains all the information about base urls, api calls and exception handling) - -### http_helpers - -- [http_client.dart](api_sdk/http/http_helpers/http_client.dart) - HttpClient class is responsible for handling all the network call methods. -- [http_exception.dart](api_sdk/http/http_helpers/http_exception.dart) - HttpExceptions handles all the exceptions for different error codes. -- [http_interceptor.dart](api_sdk/http/http_helpers/http_interceptor.dart) - HttpInterceptor lets you intercept the different requests and responses. - -### http_api_sdk - -Contains two classes HttpApi and HttpService that will eventually call the network methods. **HttpApi** class will create a client instance which will have interceptors added to it. **HttpService** will eventually call the network methods present in [http_service.dart](api_sdk/http/http_service.dart) diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_apis.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_apis.dart deleted file mode 100644 index 6342cce..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_apis.dart +++ /dev/null @@ -1,5 +0,0 @@ -class HttpApis { - static String users(int id) => '/users/$id'; - static const String register = '/register'; - static const String login = '/login'; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart deleted file mode 100644 index ef5292b..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_client.dart +++ /dev/null @@ -1,99 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; - -import 'package:http/http.dart' as http; - -import '../../../config/config.dart'; -import 'http_exception.dart'; - -class HttpClient { - final http.Client client; - HttpClient({required this.client}); - Future get( - String url, { - Map? headers, - bool isTokenRequired = false, - }) async { - http.Response? response; - dynamic responseJson; - - try { - response = - await http.get(Uri.parse(baseUrl + url), headers: headers ?? {}); - - responseJson = _returnResponse(response); - } on SocketException { - throw FetchDataException('No Internet connection'); - } - return responseJson; - } - - Future post(String url, - {Map? headers, Object? body}) async { - http.Response? response; - dynamic responseJson; - try { - response = await http.post(Uri.parse(baseUrl + url), - headers: headers ?? {}, body: body); - responseJson = _returnResponse(response); - } on SocketException { - throw FetchDataException('No Internet connection'); - } - - return responseJson; - } - - Future put(String url, - {Map? headers, Object? body}) async { - http.Response? response; - dynamic responseJson; - try { - response = await http.put(Uri.parse(baseUrl + url), - headers: headers ?? {}, body: body); - responseJson = _returnResponse(response); - } on SocketException { - throw FetchDataException('No Internet connection'); - } - - return responseJson; - } - - Future delete(String url, {Map? headers}) async { - http.Response? response; - dynamic responseJson; - try { - response = - await http.delete(Uri.parse(baseUrl + url), headers: headers ?? {}); - responseJson = _returnResponse(response); - } on SocketException { - throw FetchDataException('No Internet connection'); - } - - return responseJson; - } -} - -dynamic _returnResponse(http.Response response) { - switch (response.statusCode) { - case 200: - var responseJson = json.decode(response.body.toString()); - return responseJson; - case 400: - throw BadRequestException(response.body.toString()); - case 401: - throw UnauthorisedException(response.body.toString()); - case 403: - throw UnauthorisedException(response.body.toString()); - case 404: - throw FileNotFoundException(response.body.toString()); - case 500: - throw InternalServerException(response.body.toString()); - case 502: - throw BadGateWayException(response.body.toString()); - case 503: - throw BadGateWayException(response.body.toString()); - default: - return FetchDataException( - 'Error occured while Communication with Server with StatusCode : ${response.statusCode}'); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_exception.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_exception.dart deleted file mode 100644 index 59c8695..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_exception.dart +++ /dev/null @@ -1,42 +0,0 @@ -class HttpException implements Exception { - final dynamic _message; - final dynamic _prefix; - - HttpException([this._message, this._prefix]); - - @override - String toString() { - return "$_prefix$_message"; - } -} - -class FetchDataException extends HttpException { - FetchDataException([String? message]) - : super(message, "Error During Communication: "); -} - -class BadRequestException extends HttpException { - BadRequestException([message]) : super(message, "Invalid Request: "); -} - -class UnauthorisedException extends HttpException { - UnauthorisedException([message]) : super(message, "Unauthorised: "); -} - -class InvalidInputException extends HttpException { - InvalidInputException([String? message]) : super(message, "Invalid Input: "); -} - -class FileNotFoundException extends HttpException { - FileNotFoundException([String? message]) : super(message, "File not found: "); -} - -class InternalServerException extends HttpException { - InternalServerException([String? message]) - : super(message, "Internal Server Exception: "); -} - -class BadGateWayException extends HttpException { - BadGateWayException([String? message]) - : super(message, "Bad Gateway Exception: "); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_interceptor.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_interceptor.dart deleted file mode 100644 index 0850005..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_helpers/http_interceptor.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:http_interceptor/http_interceptor.dart'; - -class HttpInterceptor extends InterceptorContract { - @override - Future interceptRequest({required RequestData data}) { - // triggers before the http request is called - throw UnimplementedError(); - } - - @override - Future interceptResponse({required ResponseData data}) { - // triggers after the request is called - throw UnimplementedError(); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart deleted file mode 100644 index b509392..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http/http_service.dart +++ /dev/null @@ -1,41 +0,0 @@ -import 'package:http/http.dart'; -import 'package:http_interceptor/http/intercepted_client.dart'; - -import 'http_helpers/http_client.dart'; -import 'http_helpers/http_interceptor.dart'; - -class HttpApi { - HttpApi._internal(); - - static final _singleton = HttpApi._internal(); - - factory HttpApi() => _singleton; - - static Client createHttp() { - Client httpClient = InterceptedClient.build(interceptors: [ - HttpInterceptor(), - ]); - return httpClient; - } -} - -class HttpService { - static getData(String url) async { - final client = HttpClient(client: HttpApi.createHttp()); - final response = await client.get(url); - return response; - } - - static postData(String url, dynamic body) async { - final client = HttpClient(client: HttpApi.createHttp()); - final response = await client.post(url, body: body); - - return response; - } - - static putData(String url, dynamic body) async { - final client = HttpClient(client: HttpApi.createHttp()); - final response = await client.put(url, body: body); - return response; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http_api_sdk.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http_api_sdk.dart deleted file mode 100644 index 2de3065..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/api_sdk/http_api_sdk.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'http/http_helpers/http_apis.dart'; -import 'http/http_service.dart'; - -class ApiSdk { - static loginWithEmailAndPassword(dynamic body) async { - final response = await HttpService.postData(HttpApis.login, body); - return response; - } - - static signUpWithEmailAndPassword(dynamic body) async { - final response = await HttpService.postData(HttpApis.register, body); - return response; - } - - static getUserData(int id) async { - final response = await HttpService.getData(HttpApis.users(id)); - return response; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart deleted file mode 100644 index 5d13045..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/app.dart +++ /dev/null @@ -1,45 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; - -import 'common_export.dart'; - -class App extends StatelessWidget { - const App({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return BlocBuilder( - builder: (context, state) { - /// Without go_router we should return MaterialApp() with - /// {onGenerateRoute: routes} - /// routes from routes.dart - return MaterialApp.router( - debugShowCheckedModeBanner: false, - title: 'Hello World!', - theme: ThemeConfig.lightTheme, - darkTheme: ThemeConfig.darkTheme, - themeMode: state is SetTheme - ? state.appTheme == AppTheme.light - ? ThemeMode.light - : ThemeMode.dark - : ThemeMode.light, - // onGenerateRoute: routes, - routeInformationParser: router.routeInformationParser, - routerDelegate: router.routerDelegate, - routeInformationProvider: router.routeInformationProvider, - - localizationsDelegates: const [ - AppLocalizations.delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ], - supportedLocales: AppLocalizations.supportedLocales, - // locale: const Locale('fr'), - ); - }, - ); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/common_export.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/common_export.dart deleted file mode 100644 index 0f5e03b..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/common_export.dart +++ /dev/null @@ -1,27 +0,0 @@ -export 'api_sdk/{{api}}_api_sdk.dart'; -export 'app.dart'; -export 'routes/routes.dart'; -export 'screens/home/home.dart'; -export 'screens/login/login_screen.dart'; -export 'screens/login/widgets/login_form.dart'; -export 'screens/signup/signup_screen.dart'; -export 'screens/signup/widgets/signup_form.dart'; -export 'screens/splash/splash_screen.dart'; -export 'shared/bloc/authentication/authentication_bloc.dart'; -export 'shared/bloc/bloc_controller.dart'; -export 'shared/bloc/update_theme/update_theme_bloc.dart'; -export 'shared/models/current_user_data.dart'; -export 'shared/models/current_user_data.dart'; -export 'shared/models/firebase_user.dart'; -export 'shared/models/firebase_user.dart'; -export 'shared/models/token.dart'; -export 'shared/models/user.dart'; -export 'shared/models/user_data.dart'; -export 'shared/repository/authentication_repository.dart'; -export 'shared/shared.dart'; -export 'themes/color_constants.dart'; -export 'themes/theme_data.dart'; -export 'utils/image_constants.dart'; -export 'utils/responsive.dart'; -export 'utils/size_utils.dart'; -export 'widgets/cache_image_widget.dart'; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/config/config.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/config/config.dart deleted file mode 100644 index 19ce7b6..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/config/config.dart +++ /dev/null @@ -1 +0,0 @@ -const String baseUrl = "https://reqres.in/api"; // User authetication diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_en.arb b/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_en.arb deleted file mode 100644 index d99a38f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_en.arb +++ /dev/null @@ -1,4 +0,0 @@ -{ - "homeText" : "Home", - "flutterStarterText" : "Flutter Starter" -} \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_es.arb b/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_es.arb deleted file mode 100644 index fe37fac..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_es.arb +++ /dev/null @@ -1,4 +0,0 @@ -{ - "homeText" : "SHome", - "flutterStarterText" : "SFlutter Starter" -} \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_fr.arb b/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_fr.arb deleted file mode 100644 index 5c8d8d6..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/l10n/app_fr.arb +++ /dev/null @@ -1,4 +0,0 @@ -{ - "homeText" : "FHome", - "flutterStarterText" : "FFlutter Starter" -} \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart deleted file mode 100644 index 1c226f5..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/main.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; - -import 'common_export.dart'; - -Future main() async { - WidgetsFlutterBinding.ensureInitialized(); - await SharedPrefs.instance.init(); - final authenticationService = AuthenticationRepository(); - - runApp( - MultiBlocProvider( - providers: [ - BlocProvider( - create: (BuildContext context) => AuthenticationBloc( - authenticationService: authenticationService, - ), - ), - BlocProvider( - create: (BuildContext context) => UpdateThemeBloc(), - ), - ], - child: const App(), - ), - ); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart deleted file mode 100644 index c88e1d1..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/routes/routes.dart +++ /dev/null @@ -1,52 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:go_router/go_router.dart'; - -import '../common_export.dart'; - -final GoRouter router = GoRouter( - initialLocation: '/', - routes: [ - GoRoute( - path: '/', - builder: (BuildContext context, GoRouterState state) { - return const SplashScreen(); - }, - ), - GoRoute( - path: '/home', - builder: (BuildContext context, GoRouterState state) { - return const HomeScreen(); - }, - ), - GoRoute( - path: '/login', - builder: (BuildContext context, GoRouterState state) { - return const LoginScreen(); - }, - ), - GoRoute( - path: '/signup', - builder: (BuildContext context, GoRouterState state) { - return const SignUpScreen(); - }, - ), - ], -); - -/// routes for the app Without go_router -// import 'package:flutter_starter/flutter_starter.dart'; - -// import 'package:flutter/material.dart'; - -// Route routes(RouteSettings settings) { -// switch (settings.name) { -// case '/': -// return MaterialPageRoute(builder: (_) => const SplashScreen()); -// case '/home': -// return MaterialPageRoute(builder: (_) => const HomeScreen()); -// case '/auth': -// return MaterialPageRoute(builder: (_) => const AuthenticationScreen()); -// default: -// return MaterialPageRoute(builder: (_) => const SplashScreen()); -// } -// } diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart deleted file mode 100644 index 973a77e..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/home/home.dart +++ /dev/null @@ -1,180 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:cached_network_image/cached_network_image.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:go_router/go_router.dart'; - -import '../../common_export.dart'; - -class HomeScreen extends StatefulWidget { - const HomeScreen({Key? key}) : super(key: key); - - @override - State createState() => _HomeScreenState(); -} - -class _HomeScreenState extends State { - late final AuthenticationBloc authenticationBloc; - bool switchValue = false; - - @override - void initState() { - super.initState(); - authenticationBloc = BlocProvider.of(context); - authenticationBloc.add(const GetUserData()); - switchValue = BlocProvider.of(context).state.props.first == - AppTheme.light - ? false - : true; - } - - @override - Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () async => false, - child: BlocListener( - bloc: authenticationBloc, - listener: (context, state) { - if (state is UserLogoutState) { - context.go('/login'); - } - }, - child: BlocBuilder( - bloc: authenticationBloc, - builder: (BuildContext context, AuthenticationState state) { - if (state is SetUserData) { - return Scaffold( - appBar: AppBar( - backgroundColor: Theme.of(context).primaryColor, - centerTitle: true, - title: Text( - AppLocalizations.of(context)?.flutterStarterText ?? - 'Flutter Starter', - style: Theme.of(context) - .textTheme - .headline3! - .copyWith(color: Theme.of(context).backgroundColor), - ), - actions: [ - IconButton( - key: const Key('logoutButton'), - icon: const Icon(Icons.logout), - onPressed: () { - authenticationBloc.add(const UserLogOut()); - }), - ], - ), - backgroundColor: Theme.of(context).backgroundColor, - body: Center( - child: Text( - AppLocalizations.of(context)?.homeText ?? 'Home', - style: Theme.of(context).textTheme.headline6), - ), - drawer: Drawer( - backgroundColor: Theme.of(context).backgroundColor, - child: ListView( - padding: EdgeInsets.zero, - children: [ - DrawerHeader( - decoration: BoxDecoration( - color: Theme.of(context).primaryColor, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - CachedNetworkImage( - imageUrl: - state.currentUserData.data!.avatar, - imageBuilder: (context, imageProvider) => - Container( - width: 65.toResponsiveWidth, - height: 65.toResponsiveHeight, - decoration: BoxDecoration( - shape: BoxShape.circle, - image: DecorationImage( - image: imageProvider, - fit: BoxFit.cover), - ), - ), - placeholder: (context, url) => - const CircularProgressIndicator(), - errorWidget: (context, url, error) => - Image.network( - AllImages().kDefaultImage, - ), - ), - Switch( - key: const Key('themeSwitch'), - activeColor: - Theme.of(context).backgroundColor, - value: switchValue, - onChanged: (value) { - setState(() { - switchValue = value; - }); - - BlocProvider.of(context) - .add(UpdateTheme( - appTheme: value - ? AppTheme.dark - : AppTheme.light)); - }, - ) - ], - ) - ], - ), - ), - ListTile( - dense: true, - leading: Text("Name", - style: Theme.of(context).textTheme.headline6), - title: Text( - '${state.currentUserData.data!.firstName} ${state.currentUserData.data!.lastName}', - style: Theme.of(context) - .textTheme - .bodyText2! - .copyWith(fontSize: 12.toResponsiveFont)), - ), - ListTile( - dense: true, - leading: Text("Email", - style: Theme.of(context).textTheme.headline6), - title: Text(state.currentUserData.data!.email, - style: Theme.of(context) - .textTheme - .bodyText2! - .copyWith(fontSize: 12.toResponsiveFont)), - ), - ListTile( - leading: Text("Text", - style: Theme.of(context).textTheme.headline6), - title: Text(state.currentUserData.support!.text, - style: Theme.of(context) - .textTheme - .bodyText2! - .copyWith(fontSize: 12.toResponsiveFont)), - ), - ], - ), - ), - ); - } - return Scaffold( - body: Center( - child: CircularProgressIndicator( - color: Theme.of(context).primaryColor, - ), - ), - ); - }), - ), - ); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart deleted file mode 100644 index a3c8d6e..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/login_screen.dart +++ /dev/null @@ -1,125 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:go_router/go_router.dart'; - -import '../../common_export.dart'; - -class LoginScreen extends StatefulWidget { - const LoginScreen({Key? key}) : super(key: key); - - @override - State createState() => _LoginScreenState(); -} - -class _LoginScreenState extends State { - late final AuthenticationBloc authenticationBloc; - - @override - void initState() { - super.initState(); - authenticationBloc = BlocProvider.of(context); - } - - void _showError(String error) async { - await Fluttertoast.showToast( - msg: error, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM, - timeInSecForIosWeb: 3, - backgroundColor: Theme.of(context).errorColor, - textColor: Colors.white, - fontSize: 16.0); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: WillPopScope( - onWillPop: () async => false, - child: BlocListener( - bloc: authenticationBloc, - listener: (context, state) { - if (state is AuthenticationFailure) { - _showError(state.message); - } - if (state is AppAutheticated) { - context.go('/home'); - } - }, - child: BlocBuilder( - bloc: authenticationBloc, - builder: (BuildContext context, AuthenticationState state) { - return SafeArea( - child: Responsive.isDesktop(context) - ? Center( - child: Card( - elevation: 15, - child: SizedBox( - width: 500.toResponsiveWidth, - height: 650.toResponsiveHeight, - child: _authenticationForm(context, state)), - ), - ) - : SingleChildScrollView( - child: _authenticationForm(context, state), - ), - ); - }), - ), - ), - ); - } - - Widget _authenticationForm(BuildContext context, AuthenticationState state) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Center( - child: Image.asset( - AllImages().login, - width: 350.toResponsiveWidth, - height: 300.toResponsiveHeight, - )), - SizedBox(height: 12.toResponsiveHeight), - Container( - margin: EdgeInsets.symmetric(horizontal: 32.toResponsiveWidth), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text('Login', style: Theme.of(context).textTheme.headline1), - SizedBox(height: 15.toResponsiveHeight), - LoginForm( - authenticationBloc: authenticationBloc, - state: state, - ), - ], - ), - ), - SizedBox(height: 32.toResponsiveHeight), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - 'New here?', - style: Theme.of(context) - .textTheme - .bodyText2! - .copyWith(fontSize: 12.toResponsiveFont), - ), - InkWell( - child: Text( - ' Sign Up', - style: Theme.of(context).textTheme.bodyText2!.copyWith( - fontSize: 13.toResponsiveFont, - color: Theme.of(context).primaryColor), - ), - onTap: () { - context.push('/signup'); - }), - ], - ) - ], - ); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart deleted file mode 100644 index bc0d978..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/login/widgets/login_form.dart +++ /dev/null @@ -1,107 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../common_export.dart'; - -class LoginForm extends StatefulWidget { - final AuthenticationBloc authenticationBloc; - final AuthenticationState state; - const LoginForm( - {Key? key, required this.authenticationBloc, required this.state}) - : super(key: key); - @override - State createState() => _LoginFormState(); -} - -class _LoginFormState extends State { - final GlobalKey _key = GlobalKey(); - final _passwordController = TextEditingController(); - final _emailController = TextEditingController(); - // @override - // void initState() { - // // TODO: implement initState - // super.initState(); - - // _emailController.text = "eve.holt@reqres.in"; - // _passwordController.text = "pistol"; - // } - - @override - Widget build(BuildContext context) { - return Form( - key: _key, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - TextFormField( - // initialValue: "eve.holt@reqres.in", - key: const Key('emailField'), - cursorColor: Theme.of(context).textTheme.headline1!.color, - decoration: InputDecoration( - labelText: 'Email address', - isDense: true, - prefixIcon: Icon( - Icons.email, - size: 28.toResponsiveFont, - ), - ), - controller: _emailController, - keyboardType: TextInputType.emailAddress, - autocorrect: false, - validator: (value) { - if (value!.isEmpty) { - return 'Email is required.'; - } - return null; - }, - ), - SizedBox(height: 15.toResponsiveHeight), - TextFormField( - // initialValue: R"pistol", - key: const Key('passwordField'), - cursorColor: Theme.of(context).textTheme.headline1!.color, - decoration: InputDecoration( - labelText: 'Password', - isDense: true, - prefixIcon: Icon( - Icons.lock, - size: 28.toResponsiveFont, - )), - obscureText: true, - controller: _passwordController, - validator: (value) { - if (value!.isEmpty) { - return 'Password is required.'; - } - return null; - }, - ), - SizedBox(height: 18.toResponsiveHeight), - ElevatedButton( - key: const Key('loginButton'), - style: ElevatedButton.styleFrom( - primary: Theme.of(context).primaryColor, - ), - onPressed: () { - if (_key.currentState!.validate()) { - widget.authenticationBloc.add(UserLogin( - email: _emailController.text, - password: _passwordController.text)); - } else {} - }, - child: widget.state is AuthenticationLoading - ? CircularProgressIndicator( - backgroundColor: Theme.of(context).backgroundColor, - ) - : Text( - 'Login', - style: Theme.of(context) - .textTheme - .bodyText1! - .copyWith(fontSize: 15.toResponsiveFont), - ), - ) - ], - ), - ); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart deleted file mode 100644 index 0f60767..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/signup_screen.dart +++ /dev/null @@ -1,144 +0,0 @@ -import 'package:flutter/material.dart'; - -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:fluttertoast/fluttertoast.dart'; -import 'package:go_router/go_router.dart'; - -import '../../common_export.dart'; - -class SignUpScreen extends StatefulWidget { - const SignUpScreen({Key? key}) : super(key: key); - - @override - State createState() => _SignUpScreenState(); -} - -class _SignUpScreenState extends State { - late final AuthenticationBloc authenticationBloc; - - @override - void initState() { - super.initState(); - authenticationBloc = BlocProvider.of(context); - } - - void _showError(String error) async { - await Fluttertoast.showToast( - msg: error, - toastLength: Toast.LENGTH_SHORT, - gravity: ToastGravity.BOTTOM, - timeInSecForIosWeb: 3, - backgroundColor: Theme.of(context).errorColor, - textColor: Colors.white, - fontSize: 16.0); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: WillPopScope( - onWillPop: () async => false, - child: BlocListener( - bloc: authenticationBloc, - listener: (context, state) { - if (state is AuthenticationFailure) { - _showError(state.message); - } - if (state is AppAutheticated) { - context.go('/home'); - } - }, - child: BlocBuilder( - bloc: authenticationBloc, - builder: (BuildContext context, AuthenticationState state) { - return SafeArea( - child: Stack( - children: [ - Responsive.isDesktop(context) - ? Center( - child: Card( - elevation: 15, - child: SizedBox( - width: 500.toResponsiveWidth, - height: 650.toResponsiveHeight, - child: _authenticationForm(context, state)), - ), - ) - : SingleChildScrollView( - child: _authenticationForm(context, state), - ), - Positioned( - left: 6, - child: IconButton( - icon: Icon( - Icons.arrow_back_ios, - size: 28, - color: Theme.of(context).textTheme.headline1!.color, - ), - onPressed: () { - context.pop(); - }, - ), - ), - ], - )); - }, - ), - ), - ), - ); - } - - Widget _authenticationForm(BuildContext context, AuthenticationState state) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Center( - child: Image.asset( - AllImages().signup, - width: 260.toResponsiveWidth, - height: 250.toResponsiveHeight, - ), - ), - SizedBox(height: 12.toResponsiveHeight), - Container( - margin: EdgeInsets.symmetric(horizontal: 32.toResponsiveWidth), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text('Sign Up', style: Theme.of(context).textTheme.headline1), - SizedBox(height: 15.toResponsiveHeight), - SignUpForm( - authenticationBloc: authenticationBloc, - state: state, - ), - ], - ), - ), - SizedBox(height: 32.toResponsiveHeight), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - 'Already have an account?', - style: Theme.of(context) - .textTheme - .bodyText2! - .copyWith(fontSize: 12.toResponsiveFont), - ), - InkWell( - child: Text( - ' Login', - style: Theme.of(context).textTheme.bodyText2!.copyWith( - fontSize: 13.toResponsiveFont, - color: Theme.of(context).primaryColor), - ), - onTap: () { - context.pop(); - }), - ], - ), - ], - ); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart deleted file mode 100644 index 288fabb..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/signup/widgets/signup_form.dart +++ /dev/null @@ -1,120 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../../../common_export.dart'; - -class SignUpForm extends StatefulWidget { - final AuthenticationBloc authenticationBloc; - final AuthenticationState state; - const SignUpForm( - {Key? key, required this.authenticationBloc, required this.state}) - : super(key: key); - @override - State createState() => _SignUpFormState(); -} - -class _SignUpFormState extends State { - final GlobalKey _key = GlobalKey(); - final _passwordController = TextEditingController(); - final _emailController = TextEditingController(); - final _nameController = TextEditingController(); - - @override - Widget build(BuildContext context) { - return Form( - key: _key, - child: Column( - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - TextFormField( - key: const Key('nameField'), - cursorColor: Theme.of(context).textTheme.headline1!.color, - decoration: InputDecoration( - labelText: 'Name', - isDense: true, - prefixIcon: Icon( - Icons.person, - size: 28.toResponsiveFont, - ), - ), - controller: _nameController, - keyboardType: TextInputType.name, - autocorrect: false, - validator: (value) { - if (value!.isEmpty) { - return 'Name is required.'; - } - return null; - }, - ), - SizedBox(height: 15.toResponsiveHeight), - TextFormField( - key: const Key('emailField'), - cursorColor: Theme.of(context).textTheme.headline1!.color, - decoration: InputDecoration( - labelText: 'Email address', - isDense: true, - prefixIcon: Icon( - Icons.email, - size: 28.toResponsiveFont, - ), - ), - controller: _emailController, - keyboardType: TextInputType.emailAddress, - autocorrect: false, - validator: (value) { - if (value!.isEmpty) { - return 'Email is required.'; - } - return null; - }, - ), - SizedBox(height: 15.toResponsiveHeight), - TextFormField( - key: const Key('passwordField'), - cursorColor: Theme.of(context).textTheme.headline1!.color, - decoration: InputDecoration( - labelText: 'Password', - isDense: true, - prefixIcon: Icon( - Icons.lock, - size: 28.toResponsiveFont, - )), - obscureText: true, - controller: _passwordController, - validator: (value) { - if (value!.isEmpty) { - return 'Password is required.'; - } - return null; - }, - ), - SizedBox(height: 18.toResponsiveHeight), - ElevatedButton( - key: const Key('signupButton'), - style: ElevatedButton.styleFrom( - primary: Theme.of(context).primaryColor, - ), - onPressed: () { - if (_key.currentState!.validate()) { - widget.authenticationBloc.add(UserSignUp( - email: _emailController.text, - password: _passwordController.text)); - } else {} - }, - child: widget.state is AuthenticationLoading - ? CircularProgressIndicator( - backgroundColor: Theme.of(context).backgroundColor, - ) - : Text( - 'Sign Up', - style: Theme.of(context) - .textTheme - .bodyText1! - .copyWith(fontSize: 15.toResponsiveFont), - ), - ) - ], - ), - ); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart deleted file mode 100644 index 4449289..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/screens/splash/splash_screen.dart +++ /dev/null @@ -1,49 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:go_router/go_router.dart'; - -import '../../common_export.dart'; - -class SplashScreen extends StatefulWidget { - const SplashScreen({Key? key}) : super(key: key); - - @override - State createState() => _SplashScreenState(); -} - -class _SplashScreenState extends State { - late AuthenticationBloc authenticationBloc; - @override - Widget build(BuildContext context) { - UiSizeConfig().init(context); - return Scaffold( - backgroundColor: Theme.of(context).backgroundColor, - body: BlocListener( - bloc: authenticationBloc, - listener: (BuildContext context, AuthenticationState state) { - if (state is AppAutheticated) { - context.go('/home'); - } - if (state is AuthenticationStart) { - context.go('/login'); - } - if (state is UserLogoutState) { - context.go('/login'); - } - }, - child: BlocBuilder( - bloc: authenticationBloc, - builder: (BuildContext context, AuthenticationState state) { - return Center(child: Image.asset(AllImages().logo)); - }), - ), - ); - } - - @override - void initState() { - authenticationBloc = BlocProvider.of(context); - authenticationBloc.add(const AppLoadedup()); - super.initState(); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart deleted file mode 100644 index de0e063..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_bloc.dart +++ /dev/null @@ -1,106 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; - -import '../../../common_export.dart'; - -part 'authentication_event.dart'; -part 'authentication_state.dart'; - -class AuthenticationBloc - extends Bloc { - final SharedPrefs prefs = SharedPrefs.instance; - final AuthenticationRepository _authenticationService; - - AuthenticationBloc({ - required AuthenticationRepository authenticationService, - }) : _authenticationService = authenticationService, - super(const AuthenticationInitial()) { - on(_mapAppSignUpLoadedState); - on(_mapUserSignupToState); - on(_mapUserLoginState); - on(_mapUserLogoutState); - on(_mapUserDataState); - } - - void _mapAppSignUpLoadedState( - AppLoadedup event, Emitter emit) async { - emit(const AuthenticationLoading()); - try { - await Future.delayed( - const Duration(milliseconds: 500)); // a simulated delay - if (prefs.getToken() != null) { - emit(const AppAutheticated()); - } else { - emit(const AuthenticationStart()); - } - } catch (e) { - emit(const AuthenticationFailure(message: 'An unknown error occurred')); - } - } - - void _mapUserLoginState( - UserLogin event, Emitter emit) async { - emit(const AuthenticationLoading()); - try { - await Future.delayed( - const Duration(milliseconds: 500)); // a simulated delay - final data = await _authenticationService.loginWithEmailAndPassword( - event.email, event.password!); - if (data["error"] == null) { - final currentUser = Token.fromJson(data); - if (currentUser != null) { - prefs.setToken(currentUser.token); - emit(const AppAutheticated()); - } else { - emit(AuthenticationNotAuthenticated()); - } - } else { - emit(AuthenticationFailure(message: data["error"])); - } - } catch (e) { - emit(AuthenticationFailure(message: e.toString())); - } - } - - void _mapUserSignupToState( - UserSignUp event, Emitter emit) async { - emit(const AuthenticationLoading()); - try { - await Future.delayed( - const Duration(milliseconds: 500)); // a simulated delay - final data = await _authenticationService.signUpWithEmailAndPassword( - event.email, event.password!); - - if (data["error"] == null) { - final currentUser = UserData.fromJson(data); - if (currentUser != null) { - prefs.setToken(currentUser.token); - prefs.setUserId(currentUser.id); - emit(const AppAutheticated()); - } else { - emit(AuthenticationNotAuthenticated()); - } - } else { - emit(AuthenticationFailure(message: data["error"])); - } - } catch (e) { - emit(AuthenticationFailure(message: e.toString())); - } - } - - void _mapUserLogoutState( - UserLogOut event, Emitter emit) async { - emit(const AuthenticationLoading()); - prefs.clear(); - emit(const UserLogoutState()); - } - - void _mapUserDataState( - GetUserData event, Emitter emit) async { - emit(const AuthenticationLoading()); - final currentUserId = prefs.getUserId(); - final data = await _authenticationService.getUserData(currentUserId ?? 4); - final currentUserData = CurrentUserData.fromJson(data); - emit(SetUserData(currentUserData: currentUserData)); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_event.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_event.dart deleted file mode 100644 index abadfed..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_event.dart +++ /dev/null @@ -1,39 +0,0 @@ -part of 'authentication_bloc.dart'; - -abstract class AuthenticationEvent extends Equatable { - const AuthenticationEvent(); - - @override - List get props => []; -} - -// Fired just after the app is launched -class AppLoadedup extends AuthenticationEvent { - const AppLoadedup(); -} - -class UserLogOut extends AuthenticationEvent { - const UserLogOut(); -} - -class GetUserData extends AuthenticationEvent { - const GetUserData(); -} - -class UserSignUp extends AuthenticationEvent { - final String email; - final String? password; - const UserSignUp({required this.email, this.password}); - - @override - List get props => [email, password!]; -} - -class UserLogin extends AuthenticationEvent { - final String email; - final String? password; - const UserLogin({required this.email, this.password}); - - @override - List get props => [email, password!]; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_state.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_state.dart deleted file mode 100644 index 1c67378..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/authentication/authentication_state.dart +++ /dev/null @@ -1,46 +0,0 @@ -part of 'authentication_bloc.dart'; - -abstract class AuthenticationState extends Equatable { - const AuthenticationState(); - - @override - List get props => []; -} - -class AuthenticationInitial extends AuthenticationState { - const AuthenticationInitial(); -} - -class AppAutheticated extends AuthenticationState { - const AppAutheticated(); -} - -class AuthenticationLoading extends AuthenticationState { - const AuthenticationLoading(); -} - -class AuthenticationStart extends AuthenticationState { - const AuthenticationStart(); -} - -class UserLogoutState extends AuthenticationState { - const UserLogoutState(); -} - -class SetUserData extends AuthenticationState { - final CurrentUserData currentUserData; - const SetUserData({required this.currentUserData}); - @override - List get props => [currentUserData]; -} - -class AuthenticationNotAuthenticated extends AuthenticationState {} - -class AuthenticationFailure extends AuthenticationState { - final String message; - - const AuthenticationFailure({required this.message}); - - @override - List get props => [message]; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/bloc_controller.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/bloc_controller.dart deleted file mode 100644 index f1a15fa..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/bloc_controller.dart +++ /dev/null @@ -1,6 +0,0 @@ -class AuthenticationBlocController { - AuthenticationBlocController._(); - static final AuthenticationBlocController _instance = - AuthenticationBlocController._(); - factory AuthenticationBlocController() => _instance; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart deleted file mode 100644 index cebc977..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_bloc.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; - -part 'update_theme_event.dart'; -part 'update_theme_state.dart'; - -class UpdateThemeBloc extends Bloc { - UpdateThemeBloc() : super(const SetTheme(appTheme: AppTheme.light)) { - on((event, emit) { - if (event is UpdateTheme) { - emit(SetTheme(appTheme: event.appTheme)); - } - }); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart deleted file mode 100644 index 85776e9..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_event.dart +++ /dev/null @@ -1,18 +0,0 @@ -part of 'update_theme_bloc.dart'; - -enum AppTheme { light, dark } - -abstract class UpdateThemeEvent extends Equatable { - const UpdateThemeEvent(); - - @override - List get props => []; -} - -class UpdateTheme extends UpdateThemeEvent { - final AppTheme appTheme; - const UpdateTheme({required this.appTheme}); - - @override - List get props => [appTheme]; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart deleted file mode 100644 index a9af389..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/bloc/update_theme/update_theme_state.dart +++ /dev/null @@ -1,14 +0,0 @@ -part of 'update_theme_bloc.dart'; - -abstract class UpdateThemeState extends Equatable { - const UpdateThemeState(); - @override - List get props => []; -} - -class SetTheme extends UpdateThemeState { - final AppTheme appTheme; - const SetTheme({required this.appTheme}); - @override - List get props => [appTheme]; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/current_user_data.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/current_user_data.dart deleted file mode 100644 index 6c1fe01..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/current_user_data.dart +++ /dev/null @@ -1,76 +0,0 @@ -class CurrentUserData { - Data? data; - Support? support; - - CurrentUserData({this.data, this.support}); - - CurrentUserData.fromJson(Map json) { - data = json['data'] != null ? Data.fromJson(json['data']) : Data(); - support = - json['support'] != null ? Support.fromJson(json['support']) : Support(); - } - - Map toJson() { - final Map data = {}; - if (this.data != null) { - data['data'] = this.data!.toJson(); - } - if (support != null) { - data['support'] = support!.toJson(); - } - return data; - } -} - -class Data { - late int? id; - late String email; - late String firstName; - late String lastName; - late String avatar; - - Data( - {this.id, - this.email = '', - this.firstName = '', - this.lastName = '', - this.avatar = ''}); - - Data.fromJson(Map json) { - id = json['id']; - email = json['email']; - firstName = json['first_name']; - lastName = json['last_name']; - avatar = json['avatar']; - } - - Map toJson() { - final Map data = {}; - data['id'] = id; - data['email'] = email; - data['first_name'] = firstName; - data['last_name'] = lastName; - data['avatar'] = avatar; - return data; - } -} - -class Support { - late String url; - late String text; - - Support({this.url = '', this.text = ''}); - - Support.fromJson(Map json) { - url = json['url']; - text = json['text']; - } - - Map toJson() { - final Map data = {}; - - data['url'] = url; - data['text'] = text; - return data; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/firebase_user.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/firebase_user.dart deleted file mode 100644 index 9362ee4..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/firebase_user.dart +++ /dev/null @@ -1,14 +0,0 @@ -class UserFromFirebaseUser { - final String uid; - final String email; - final String token; - final String avatar; - - UserFromFirebaseUser({ - required this.uid, - required this.email, - required this.token, - this.avatar = - "https://i.pinimg.com/736x/89/90/48/899048ab0cc455154006fdb9676964b3.jpg", - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/token.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/token.dart deleted file mode 100644 index cdd4579..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/token.dart +++ /dev/null @@ -1,15 +0,0 @@ -class Token { - late String token; - - Token({required this.token}); - - Token.fromJson(Map json) { - token = json['token']; - } - - Map toJson() { - final Map data = {}; - data['token'] = token; - return data; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user.dart deleted file mode 100644 index 8c73672..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user.dart +++ /dev/null @@ -1,9 +0,0 @@ -class MyUser { - final String name; - final String email; - - MyUser({required this.name, required this.email}); - - @override - String toString() => 'User { name: $name, email: $email}'; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user_data.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user_data.dart deleted file mode 100644 index 2eb8786..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/models/user_data.dart +++ /dev/null @@ -1,18 +0,0 @@ -class UserData { - late int id; - late String token; - - UserData({required this.id, required this.token}); - - UserData.fromJson(Map json) { - id = json['id']; - token = json['token']; - } - - Map toJson() { - final Map data = {}; - data['id'] = id; - data['token'] = token; - return data; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/authentication_repository.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/authentication_repository.dart deleted file mode 100644 index 839f329..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/repository/authentication_repository.dart +++ /dev/null @@ -1,27 +0,0 @@ -import '../../common_export.dart'; - -class AuthenticationRepository { - Future signUpWithEmailAndPassword( - String email, String password) async { - await Future.delayed(const Duration(seconds: 1)); - final response = await ApiSdk.signUpWithEmailAndPassword( - {'email': email, 'password': password}); - - return response; - } - - Future loginWithEmailAndPassword( - String email, String password) async { - await Future.delayed(const Duration(seconds: 1)); - final response = await ApiSdk.loginWithEmailAndPassword( - {'email': email, 'password': password}); - - return response; - } - - Future getUserData(int id) async { - final response = await ApiSdk.getUserData(id); - - return response; - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/shared.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/shared/shared.dart deleted file mode 100644 index dae32b7..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/shared/shared.dart +++ /dev/null @@ -1,26 +0,0 @@ -import 'package:shared_preferences/shared_preferences.dart'; - -class SharedPrefs { - SharedPrefs._(); - - static final SharedPrefs _instance = SharedPrefs._(); - static SharedPrefs get instance => _instance; - - late SharedPreferences _prefs; - - Future init() async => _prefs = await SharedPreferences.getInstance(); - - Future remove(String key) async => await _prefs.remove(key); - - Future clear() async => await _prefs.clear(); - - /// Setters - Future setToken(String value) async => - await _prefs.setString('authtoken', value); - Future setUserId(int value) async => - await _prefs.setInt('userId', value); - - /// Getters - String? getToken() => _prefs.getString('authtoken'); - int? getUserId() => _prefs.getInt('userId'); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/themes/color_constants.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/themes/color_constants.dart deleted file mode 100644 index 0cb1a8b..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/themes/color_constants.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:flutter/material.dart'; - -class ColorConstants { - ColorConstants._(); - static final ColorConstants _instance = ColorConstants._(); - factory ColorConstants() => _instance; - Color primaryColor = const Color(0xFF0164ff); - Color primaryDarkColor = const Color(0xffA39BDB); - Color lightBackgroundColor = Colors.white; - Color darkBackgroundColor = const Color(0xff313131); - Color primaryTextLight = Colors.black; - Color primaryTextDark = Colors.white; - Color accentColor = const Color(0xffA39BDB); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/themes/theme_data.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/themes/theme_data.dart deleted file mode 100644 index dbc0dc6..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/themes/theme_data.dart +++ /dev/null @@ -1,218 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; - -import 'color_constants.dart'; - -class ThemeConfig { - static ThemeData get darkTheme => createTheme( - brightness: Brightness.dark, - background: ColorConstants().darkBackgroundColor, - primaryColor: ColorConstants().primaryColor, - cardBackground: ColorConstants().darkBackgroundColor, - primaryText: ColorConstants().primaryTextDark, - secondaryText: ColorConstants().primaryTextLight, - accentColor: ColorConstants().accentColor, - divider: Colors.black45, - buttonBackground: Colors.white, - buttonText: ColorConstants().darkBackgroundColor, - disabled: ColorConstants().darkBackgroundColor, - error: Colors.red, - ); - - static ThemeData get lightTheme => createTheme( - brightness: Brightness.light, - background: ColorConstants().lightBackgroundColor, - primaryColor: ColorConstants().primaryColor, - cardBackground: ColorConstants().lightBackgroundColor, - primaryText: ColorConstants().primaryTextLight, - secondaryText: ColorConstants().primaryTextDark, - accentColor: ColorConstants().accentColor, - divider: ColorConstants().lightBackgroundColor, - buttonBackground: Colors.black38, - buttonText: ColorConstants().lightBackgroundColor, - disabled: ColorConstants().lightBackgroundColor, - error: Colors.red, - ); - - static ThemeData createTheme({ - required Brightness brightness, - required Color background, - required Color primaryText, - required Color secondaryText, - required Color accentColor, - required Color divider, - required Color buttonBackground, - required Color buttonText, - required Color cardBackground, - required Color disabled, - required Color error, - required Color primaryColor, - }) { - final baseTextTheme = brightness == Brightness.dark - ? Typography.blackMountainView - : Typography.whiteMountainView; - - return ThemeData( - brightness: brightness, - canvasColor: background, - cardColor: background, - dividerColor: divider, - dividerTheme: DividerThemeData( - color: divider, - space: 1, - thickness: 1, - ), - cardTheme: CardTheme( - color: cardBackground, - margin: EdgeInsets.zero, - clipBehavior: Clip.antiAliasWithSaveLayer, - ), - elevatedButtonTheme: ElevatedButtonThemeData( - style: ButtonStyle( - shape: MaterialStateProperty.all( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(9.0), - )), - padding: MaterialStateProperty.all( - const EdgeInsets.all(18.5)))), - backgroundColor: background, - primaryColor: primaryColor, - toggleableActiveColor: accentColor, - appBarTheme: AppBarTheme( - systemOverlayStyle: - SystemUiOverlayStyle(statusBarBrightness: brightness), - color: cardBackground, - iconTheme: IconThemeData( - color: secondaryText, - ), - toolbarTextStyle: TextTheme( - bodyText1: baseTextTheme.bodyText1?.copyWith( - color: secondaryText, - fontSize: 18, - ), - ).bodyText2, - titleTextStyle: TextTheme( - bodyText1: baseTextTheme.bodyText1?.copyWith( - color: secondaryText, - fontSize: 18, - ), - ).headline6, - ), - iconTheme: IconThemeData( - color: secondaryText, - size: 16.0, - ), - errorColor: error, - buttonTheme: ButtonThemeData( - textTheme: ButtonTextTheme.primary, - colorScheme: ColorScheme( - brightness: brightness, - primary: accentColor, - secondary: accentColor, - surface: background, - background: background, - error: error, - onPrimary: buttonText, - onSecondary: buttonText, - onSurface: buttonText, - onBackground: buttonText, - onError: buttonText, - ), - padding: const EdgeInsets.all(16.0), - ), - cupertinoOverrideTheme: CupertinoThemeData( - brightness: brightness, - primaryColor: accentColor, - ), - inputDecorationTheme: InputDecorationTheme( - errorStyle: TextStyle(color: error), - labelStyle: TextStyle( - fontFamily: '', - fontWeight: FontWeight.w600, - fontSize: 16.0, - color: primaryText.withOpacity(0.5), - ), - hintStyle: TextStyle( - color: secondaryText, - fontSize: 13.0, - fontWeight: FontWeight.w300, - ), - ), - fontFamily: '', - textTheme: TextTheme( - headline1: baseTextTheme.headline1?.copyWith( - color: primaryText, - fontSize: 34.0, - fontWeight: FontWeight.bold, - ), - headline2: baseTextTheme.headline2?.copyWith( - color: primaryText, - fontSize: 22, - fontWeight: FontWeight.bold, - ), - headline3: baseTextTheme.headline3?.copyWith( - color: secondaryText, - fontSize: 20, - fontWeight: FontWeight.w600, - ), - headline4: baseTextTheme.headline4?.copyWith( - color: primaryText, - fontSize: 18, - fontWeight: FontWeight.w600, - ), - headline5: baseTextTheme.headline5?.copyWith( - color: primaryText, - fontSize: 16, - fontWeight: FontWeight.w700, - ), - headline6: baseTextTheme.headline6?.copyWith( - color: primaryText, - fontSize: 14, - fontWeight: FontWeight.w700, - ), - bodyText1: baseTextTheme.bodyText1?.copyWith( - color: secondaryText, - fontSize: 14, - ), - bodyText2: baseTextTheme.bodyText2?.copyWith( - color: primaryText, - fontSize: 12, - fontWeight: FontWeight.w400, - ), - button: baseTextTheme.button?.copyWith( - color: primaryText, - fontSize: 12.0, - fontWeight: FontWeight.w700, - ), - caption: baseTextTheme.caption?.copyWith( - color: primaryText, - fontSize: 11.0, - fontWeight: FontWeight.w300, - ), - overline: baseTextTheme.overline?.copyWith( - color: secondaryText, - fontSize: 11.0, - fontWeight: FontWeight.w500, - ), - subtitle1: baseTextTheme.subtitle1?.copyWith( - color: primaryText, - fontSize: 16.0, - fontWeight: FontWeight.w700, - ), - subtitle2: baseTextTheme.subtitle2?.copyWith( - color: secondaryText, - fontSize: 11.0, - fontWeight: FontWeight.w500, - ), - ), - colorScheme: ColorScheme.fromSwatch() - .copyWith(secondary: accentColor, brightness: brightness), - textSelectionTheme: TextSelectionThemeData( - cursorColor: accentColor, - selectionColor: accentColor, - selectionHandleColor: accentColor, - ), - ); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/image_constants.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/image_constants.dart deleted file mode 100644 index e1c5cc5..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/image_constants.dart +++ /dev/null @@ -1,12 +0,0 @@ -class AllImages { - AllImages._(); - static final AllImages _instance = AllImages._(); - factory AllImages() => _instance; - - String image = 'assets/image'; - String logo = 'assets/images/logo.png'; - String login = 'assets/images/login.png'; - String signup = 'assets/images/signup.png'; - String kDefaultImage = - 'https://cdn.pixabay.com/photo/2016/08/08/09/17/avatar-1577909_1280.png'; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/responsive.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/responsive.dart deleted file mode 100644 index 1889641..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/responsive.dart +++ /dev/null @@ -1,47 +0,0 @@ -import 'package:flutter/material.dart'; - -class Responsive extends StatelessWidget { - final Widget mobile; - final Widget tablet; - final Widget desktop; - - const Responsive({ - Key? key, - required this.mobile, - required this.tablet, - required this.desktop, - }) : super(key: key); - - /// We will modify based on our design dimension for each type. - - // This isMobile, isTablet, isDesktop - static bool isMobile(BuildContext context) => - MediaQuery.of(context).size.width <= 620; - - static bool isTablet(BuildContext context) => - MediaQuery.of(context).size.width <= 1030 && - MediaQuery.of(context).size.width > 620; - - static bool isDesktop(BuildContext context) => - MediaQuery.of(context).size.width > 1030; - - @override - Widget build(BuildContext context) { - return LayoutBuilder( - // If our width is more than 1030 then we consider it a desktop - builder: (context, constraints) { - if (MediaQuery.of(context).size.width >= 1030) { - return desktop; - } - // If width it less then 1030 and more then 620 we consider it as tablet - else if (MediaQuery.of(context).size.width > 620) { - return tablet; - } - // Or less then that we called it mobile - else { - return mobile; - } - }, - ); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart deleted file mode 100644 index 4740ed1..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/size_utils.dart +++ /dev/null @@ -1,182 +0,0 @@ -import 'package:flutter/material.dart'; - -import '../common_export.dart'; - -/// [SizeConfig] to make project scalable -class UiSizeConfig { - static MediaQueryData? _mediaQueryData; - static bool isMobile = false, isTablet = false, isDesktop = true; - static double? screenWidth, - screenHeight, - blockSizeHorizontal, - blockSizeVertical, - _safeAreaHorizontal, - _safeAreaVertical, - safeBlockHorizontal, - safeBlockVertical, - profileDrawerWidth, - refHeight, - refWidth, - refMobileHeight, - refMobileWidth, - refTabletHeight, - refTabletWidth; - - void init(BuildContext context) { - _mediaQueryData = MediaQuery.of(context); - screenWidth = _mediaQueryData!.size.width; - screenHeight = _mediaQueryData!.size.height; - refHeight = 897; - refWidth = 1366; - refTabletHeight = 1024; - refTabletWidth = 768; - refMobileHeight = 760; - refMobileWidth = 360; - isDesktop = Responsive.isDesktop(context); - isMobile = Responsive.isMobile(context); - isTablet = Responsive.isTablet(context); - - if (screenHeight! < 1200) { - blockSizeHorizontal = screenWidth! / 100; - blockSizeVertical = screenHeight! / 100; - - _safeAreaHorizontal = - _mediaQueryData!.padding.left + _mediaQueryData!.padding.right; - _safeAreaVertical = - _mediaQueryData!.padding.top + _mediaQueryData!.padding.bottom; - safeBlockHorizontal = (screenWidth! - _safeAreaHorizontal!) / 100; - safeBlockVertical = (screenHeight! - _safeAreaVertical!) / 100; - } else { - blockSizeHorizontal = screenWidth! / 120; - blockSizeVertical = screenHeight! / 120; - - _safeAreaHorizontal = - _mediaQueryData!.padding.left + _mediaQueryData!.padding.right; - _safeAreaVertical = - _mediaQueryData!.padding.top + _mediaQueryData!.padding.bottom; - safeBlockHorizontal = (screenWidth! - _safeAreaHorizontal!) / 120; - safeBlockVertical = (screenHeight! - _safeAreaVertical!) / 120; - } - } - - static double getWidthRatio(double val) { - double res = (val / refWidth!) * 100; - return res * blockSizeHorizontal! > 2800 - ? 2400 - : res * blockSizeHorizontal!; - } - - static double getHeightRatio(double val) { - double res = (val / refHeight!) * 100; - return res * blockSizeVertical!; - } - - static double getFontRatio(double val) { - // double res = (val / refWidth!) * 100; - // if (screenWidth! > screenHeight!) { - // return res * safeBlockHorizontal!; - // } else { - // return res * safeBlockVertical!; - // } - return val; - } - - static double getTabletWidthRatio(double val) { - double res = (val / refTabletWidth!) * 100; - return res * blockSizeHorizontal!; - } - - static double getTabletHeightRatio(double val) { - double res = (val / refTabletHeight!) * 100; - return res * blockSizeVertical!; - } - - static double getTabletFontRatio(double val) { - double res = (val / refTabletWidth!) * 100; - if (screenWidth! < screenHeight!) { - return res * safeBlockHorizontal!; - } else { - return res * safeBlockVertical!; - } - } - - static double getMobileWidthRatio(double val) { - double res = (val / refMobileWidth!) * 100; - return res * blockSizeHorizontal!; - } - - static double getMobileHeightRatio(double val) { - double res = (val / refMobileHeight!) * 100; - return res * blockSizeVertical!; - } - - static double getMobileFontRatio(double val) { - double res = (val / refMobileWidth!) * 100; - if (screenWidth! < screenHeight!) { - return res * safeBlockHorizontal!; - } else { - return res * safeBlockVertical!; - } - } - - static double getResponsiveFont(double val) { - if (isMobile) { - return val.toMobileFont; - } else if (isTablet) { - return val.toTabletFont; - } else { - return val.toFont; - } - } - - static double getResponsiveHeight(double val) { - if (isMobile) { - return val.toMobileHeight; - } else if (isTablet) { - return val.toTabletHeight; - } else { - return val.toHeight; - } - } - - static double getResponsiveWidth(double val) { - if (isMobile) { - return val.toMobileWidth; - } else if (isTablet) { - return val.toTabletWidth; - } else { - return val.toWidth; - } - } -} - -extension SizeUtils on num { - double get toWidth => UiSizeConfig.getWidthRatio(this.toDouble()); - - double get toHeight => UiSizeConfig.getHeightRatio(this.toDouble()); - - double get toFont => UiSizeConfig.getFontRatio(this.toDouble()); - - double get toTabletWidth => UiSizeConfig.getTabletWidthRatio(this.toDouble()); - - double get toTabletHeight => - UiSizeConfig.getTabletHeightRatio(this.toDouble()); - - double get toTabletFont => UiSizeConfig.getTabletFontRatio(this.toDouble()); - - double get toMobileWidth => UiSizeConfig.getMobileWidthRatio(this.toDouble()); - - double get toMobileHeight => - UiSizeConfig.getMobileHeightRatio(this.toDouble()); - - double get toMobileFont => UiSizeConfig.getMobileFontRatio(this.toDouble()); - - double get toResponsiveFont => - UiSizeConfig.getResponsiveFont(this.toDouble()); - - double get toResponsiveHeight => - UiSizeConfig.getResponsiveHeight(this.toDouble()); - - double get toResponsiveWidth => - UiSizeConfig.getResponsiveWidth(this.toDouble()); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/string_constants.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/utils/string_constants.dart deleted file mode 100644 index 419ab23..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/utils/string_constants.dart +++ /dev/null @@ -1 +0,0 @@ -library constants; diff --git a/bricks/flutter_starter/__brick__/{{name}}/lib/widgets/cache_image_widget.dart b/bricks/flutter_starter/__brick__/{{name}}/lib/widgets/cache_image_widget.dart deleted file mode 100644 index 51b1929..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/lib/widgets/cache_image_widget.dart +++ /dev/null @@ -1,36 +0,0 @@ -import 'package:cached_network_image/cached_network_image.dart'; -import 'package:flutter/material.dart'; - -class CachedImage extends StatelessWidget { - const CachedImage({ - Key? key, - required this.imageUrl, - this.fit = BoxFit.cover, - this.height, - this.width, - this.placeholder, - this.errorWidget, - }) : assert(imageUrl != null), - super(key: key); - - final String imageUrl; - final BoxFit fit; - final double? height; - final double? width; - final Widget? placeholder; - final Widget? errorWidget; - - @override - Widget build(BuildContext context) { - return CachedNetworkImage( - imageUrl: imageUrl, - fit: fit, - height: height, - width: width, - placeholder: (context, url) => - placeholder ?? const CircularProgressIndicator(), - errorWidget: (context, url, err) => - errorWidget ?? const Icon(Icons.error_outline), - ); - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/linux/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/linux/CMakeLists.txt deleted file mode 100644 index c599f69..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/linux/CMakeLists.txt +++ /dev/null @@ -1,138 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.10) -project(runner LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "{{name}}") -# The unique GTK application identifier for this application. See: -# https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "{{org}}.{{name}}") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Load bundled libraries from the lib/ directory relative to the binary. -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Root filesystem for cross-building. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# Define build configuration options. -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -endif() - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_14) - target_compile_options(${TARGET} PRIVATE -Wall -Werror) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# Define the application target. To change its name, change BINARY_NAME above, -# not the value here, or `flutter run` will no longer work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add dependency libraries. Add any application-specific dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) - -# Only the install-generated bundle's copy of the executable will launch -# correctly, since the resources must in the right relative locations. To avoid -# people trying to run the unbundled copy, put it in a subdirectory instead of -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) - install(FILES "${bundled_library}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endforeach(bundled_library) - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") - install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/CMakeLists.txt deleted file mode 100644 index d5bd016..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.10) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. - -# Serves the same purpose as list(TRANSFORM ... PREPEND ...), -# which isn't available in 3.10. -function(list_prepend LIST_NAME PREFIX) - set(NEW_LIST "") - foreach(element ${${LIST_NAME}}) - list(APPEND NEW_LIST "${PREFIX}${element}") - endforeach(element) - set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) -endfunction() - -# === Flutter Library === -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) -pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) - -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "fl_basic_message_channel.h" - "fl_binary_codec.h" - "fl_binary_messenger.h" - "fl_dart_project.h" - "fl_engine.h" - "fl_json_message_codec.h" - "fl_json_method_codec.h" - "fl_message_codec.h" - "fl_method_call.h" - "fl_method_channel.h" - "fl_method_codec.h" - "fl_method_response.h" - "fl_plugin_registrar.h" - "fl_plugin_registry.h" - "fl_standard_message_codec.h" - "fl_standard_method_codec.h" - "fl_string_codec.h" - "fl_value.h" - "fl_view.h" - "flutter_linux.h" -) -list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") -target_link_libraries(flutter INTERFACE - PkgConfig::GTK - PkgConfig::GLIB - PkgConfig::GIO -) -add_dependencies(flutter flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CMAKE_CURRENT_BINARY_DIR}/_phony_ - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" - ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} -) diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.cc b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.cc deleted file mode 100644 index e71a16d..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void fl_register_plugins(FlPluginRegistry* registry) { -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.h b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugins.cmake b/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugins.cmake deleted file mode 100644 index 2e1de87..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/main.cc b/bricks/flutter_starter/__brick__/{{name}}/linux/main.cc deleted file mode 100644 index e7c5c54..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.cc b/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.cc deleted file mode 100644 index 0876305..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#endif - -#include "flutter/generated_plugin_registrant.h" - -struct _MyApplication { - GtkApplication parent_instance; - char** dart_entrypoint_arguments; -}; - -G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) - -// Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = - GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "{{name}}"); - gtk_header_bar_set_show_close_button(header_bar, TRUE); - gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { - gtk_window_set_title(window, "{{name}}"); - } - - gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); - - g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - - FlView* view = fl_view_new(project); - gtk_widget_show(GTK_WIDGET(view)); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); - - fl_register_plugins(FL_PLUGIN_REGISTRY(view)); - - gtk_widget_grab_focus(GTK_WIDGET(view)); -} - -// Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); - // Strip out the first argument as it is the binary name. - self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); - - g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; - } - - g_application_activate(application); - *exit_status = 0; - - return TRUE; -} - -// Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); - g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); - G_OBJECT_CLASS(my_application_parent_class)->dispose(object); -} - -static void my_application_class_init(MyApplicationClass* klass) { - G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; - G_OBJECT_CLASS(klass)->dispose = my_application_dispose; -} - -static void my_application_init(MyApplication* self) {} - -MyApplication* my_application_new() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.h b/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.h deleted file mode 100644 index 72271d5..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, - GtkApplication) - -/** - * my_application_new: - * - * Creates a new Flutter-based application. - * - * Returns: a new #MyApplication. - */ -MyApplication* my_application_new(); - -#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/macos/.gitignore deleted file mode 100644 index 746adbb..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Debug.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index 4b81f9b..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Release.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index 5caa9d1..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/GeneratedPluginRegistrant.swift b/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/GeneratedPluginRegistrant.swift deleted file mode 100644 index e9cf192..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Flutter/GeneratedPluginRegistrant.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// Generated file. Do not edit. -// - -import FlutterMacOS -import Foundation - -import path_provider_macos -import shared_preferences_macos -import sqflite - -func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { - PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) - SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) - SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Podfile b/bricks/flutter_starter/__brick__/{{name}}/macos/Podfile deleted file mode 100644 index dade8df..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Podfile +++ /dev/null @@ -1,40 +0,0 @@ -platform :osx, '10.11' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.pbxproj b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index e405392..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,572 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 51; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Flutter Assemble"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC111A2044C6BA0003C045; - remoteInfo = FLX; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 33CC110E2044A8840003C045 /* Bundle Framework */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Bundle Framework"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* {{name}}.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "{{name}}.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* {{name}}.app */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* {{name}}.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 33CC10EC2044A3C60003C045 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.Sandbox = { - enabled = 1; - }; - }; - }; - 33CC111A2044C6BA0003C045 = { - CreatedOnToolsVersion = 9.2; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 33CC10E42044A3C60003C045; - productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 33CC10EC2044A3C60003C045 /* Runner */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 33CC10EB2044A3C60003C045 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; - }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, - ); - inputPaths = ( - Flutter/ephemeral/tripwire, - ); - outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 33CC10E92044A3C60003C045 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; - targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 33CC10F52044A3C60003C045 /* Base */, - ); - name = MainMenu.xib; - path = Runner; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 338D0CE9231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Profile; - }; - 338D0CEA231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Profile; - }; - 338D0CEB231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Profile; - }; - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLEABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 33CC10FA2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10F92044A3C60003C045 /* Debug */, - 33CC10FA2044A3C60003C045 /* Release */, - 338D0CE9231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10FC2044A3C60003C045 /* Debug */, - 33CC10FD2044A3C60003C045 /* Release */, - 338D0CEA231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC111C2044C6BA0003C045 /* Debug */, - 33CC111D2044C6BA0003C045 /* Release */, - 338D0CEB231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 33CC10E52044A3C60003C045 /* Project object */; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 742d4c6..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/contents.xcworkspacedata b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a1..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/AppDelegate.swift b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef64..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" - }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 3c4935a7ca84f0976aca34b7f2895d65fb94d1ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46993 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 diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index ed4cc16421680a50164ba74381b4b35ceaa0ccfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3276 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 N;OXk;vd$@?2>?>Ex^Vyi diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png deleted file mode 100644 index bcbf36df2f2aaaa0a63c7dabc94e600184229d0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5933 zcmZ{Idpwix|Np(&m_yAF>K&UIn{t*2ZOdsShYs(MibU!|=pZCJq~7E>B$QJr)hC5| zmk?V?ES039lQ~RC!kjkl-TU4?|NZ{>J$CPLUH9vHy`Hbhhnc~SD_vpzBp6Xw4`$%jfmPw(;etLCccvfU-s)1A zLl8-RiSx!#?Kwzd0E&>h;Fc z^;S84cUH7gMe#2}MHYcDXgbkI+Qh^X4BV~6y<@s`gMSNX!4@g8?ojjj5hZj5X4g9D zavr_NoeZ=4vim%!Y`GnF-?2_Gb)g$xAo>#zCOLB-jPww8a%c|r&DC=eVdE;y+HwH@ zy`JK(oq+Yw^-hLvWO4B8orWwLiKT!hX!?xw`kz%INd5f)>k1PZ`ZfM&&Ngw)HiXA| ze=+%KkiLe1hd>h!ZO2O$45alH0O|E+>G2oCiJ|3y2c$;XedBozx93BprOr$#d{W5sb*hQQ~M@+v_m!8s?9+{Q0adM?ip3qQ*P5$R~dFvP+5KOH_^A+l-qu5flE*KLJp!rtjqTVqJsmpc1 zo>T>*ja-V&ma7)K?CE9RTsKQKk7lhx$L`9d6-Gq`_zKDa6*>csToQ{&0rWf$mD7x~S3{oA z1wUZl&^{qbX>y*T71~3NWd1Wfgjg)<~BnK96Ro#om&~8mU{}D!Fu# zTrKKSM8gY^*47b2Vr|ZZe&m9Y`n+Y8lHvtlBbIjNl3pGxU{!#Crl5RPIO~!L5Y({ym~8%Ox-9g>IW8 zSz2G6D#F|L^lcotrZx4cFdfw6f){tqITj6>HSW&ijlgTJTGbc7Q#=)*Be0-s0$fCk z^YaG;7Q1dfJq#p|EJ~YYmqjs`M0jPl=E`Id{+h%Lo*|8xp6K7yfgjqiH7{61$4x~A zNnH+65?QCtL;_w(|mDNJXybin=rOy-i7A@lXEu z&jY(5jhjlP{TsjMe$*b^2kp8LeAXu~*q&5;|3v|4w4Ij_4c{4GG8={;=K#lh{#C8v z&t9d7bf{@9aUaE94V~4wtQ|LMT*Ruuu0Ndjj*vh2pWW@|KeeXi(vt!YXi~I6?r5PG z$_{M*wrccE6x42nPaJUO#tBu$l#MInrZhej_Tqki{;BT0VZeb$Ba%;>L!##cvieb2 zwn(_+o!zhMk@l~$$}hivyebloEnNQmOy6biopy`GL?=hN&2)hsA0@fj=A^uEv~TFE z<|ZJIWplBEmufYI)<>IXMv(c+I^y6qBthESbAnk?0N(PI>4{ASayV1ErZ&dsM4Z@E-)F&V0>tIF+Oubl zin^4Qx@`Un4kRiPq+LX5{4*+twI#F~PE7g{FpJ`{)K()FH+VG^>)C-VgK>S=PH!m^ zE$+Cfz!Ja`s^Vo(fd&+U{W|K$e(|{YG;^9{D|UdadmUW;j;&V!rU)W_@kqQj*Frp~ z7=kRxk)d1$$38B03-E_|v=<*~p3>)2w*eXo(vk%HCXeT5lf_Z+D}(Uju=(WdZ4xa( zg>98lC^Z_`s-=ra9ZC^lAF?rIvQZpAMz8-#EgX;`lc6*53ckpxG}(pJp~0XBd9?RP zq!J-f`h0dC*nWxKUh~8YqN{SjiJ6vLBkMRo?;|eA(I!akhGm^}JXoL_sHYkGEQWWf zTR_u*Ga~Y!hUuqb`h|`DS-T)yCiF#s<KR}hC~F%m)?xjzj6w#Za%~XsXFS@P0E3t*qs)tR43%!OUxs(|FTR4Sjz(N zppN>{Ip2l3esk9rtB#+To92s~*WGK`G+ECt6D>Bvm|0`>Img`jUr$r@##&!1Ud{r| zgC@cPkNL_na`74%fIk)NaP-0UGq`|9gB}oHRoRU7U>Uqe!U61fY7*Nj(JiFa-B7Av z;VNDv7Xx&CTwh(C2ZT{ot`!E~1i1kK;VtIh?;a1iLWifv8121n6X!{C%kw|h-Z8_U z9Y8M38M2QG^=h+dW*$CJFmuVcrvD*0hbFOD=~wU?C5VqNiIgAs#4axofE*WFYd|K;Et18?xaI|v-0hN#D#7j z5I{XH)+v0)ZYF=-qloGQ>!)q_2S(Lg3<=UsLn%O)V-mhI-nc_cJZu(QWRY)*1il%n zOR5Kdi)zL-5w~lOixilSSF9YQ29*H+Br2*T2lJ?aSLKBwv7}*ZfICEb$t>z&A+O3C z^@_rpf0S7MO<3?73G5{LWrDWfhy-c7%M}E>0!Q(Iu71MYB(|gk$2`jH?!>ND0?xZu z1V|&*VsEG9U zm)!4#oTcgOO6Hqt3^vcHx>n}%pyf|NSNyTZX*f+TODT`F%IyvCpY?BGELP#s<|D{U z9lUTj%P6>^0Y$fvIdSj5*=&VVMy&nms=!=2y<5DP8x;Z13#YXf7}G)sc$_TQQ=4BD zQ1Le^y+BwHl7T6)`Q&9H&A2fJ@IPa;On5n!VNqWUiA*XXOnvoSjEIKW<$V~1?#zts>enlSTQaG2A|Ck4WkZWQoeOu(te znV;souKbA2W=)YWldqW@fV^$6EuB`lFmXYm%WqI}X?I1I7(mQ8U-pm+Ya* z|7o6wac&1>GuQfIvzU7YHIz_|V;J*CMLJolXMx^9CI;I+{Nph?sf2pX@%OKT;N@Uz9Y zzuNq11Ccdwtr(TDLx}N!>?weLLkv~i!xfI0HGWff*!12E*?7QzzZT%TX{5b7{8^*A z3ut^C4uxSDf=~t4wZ%L%gO_WS7SR4Ok7hJ;tvZ9QBfVE%2)6hE>xu9y*2%X5y%g$8 z*8&(XxwN?dO?2b4VSa@On~5A?zZZ{^s3rXm54Cfi-%4hBFSk|zY9u(3d1ButJuZ1@ zfOHtpSt)uJnL`zg9bBvUkjbPO0xNr{^{h0~$I$XQzel_OIEkgT5L!dW1uSnKsEMVp z9t^dfkxq=BneR9`%b#nWSdj)u1G=Ehv0$L@xe_eG$Ac%f7 zy`*X(p0r3FdCTa1AX^BtmPJNR4%S1nyu-AM-8)~t-KII9GEJU)W^ng7C@3%&3lj$2 z4niLa8)fJ2g>%`;;!re+Vh{3V^}9osx@pH8>b0#d8p`Dgm{I?y@dUJ4QcSB<+FAuT)O9gMlwrERIy z6)DFLaEhJkQ7S4^Qr!JA6*SYni$THFtE)0@%!vAw%X7y~!#k0?-|&6VIpFY9>5GhK zr;nM-Z`Omh>1>7;&?VC5JQoKi<`!BU_&GLzR%92V$kMohNpMDB=&NzMB&w-^SF~_# zNsTca>J{Y555+z|IT75yW;wi5A1Z zyzv|4l|xZ-Oy8r8_c8X)h%|a8#(oWcgS5P6gtuCA_vA!t=)IFTL{nnh8iW!B$i=Kd zj1ILrL;ht_4aRKF(l1%^dUyVxgK!2QsL)-{x$`q5wWjjN6B!Cj)jB=bii;9&Ee-;< zJfVk(8EOrbM&5mUciP49{Z43|TLoE#j(nQN_MaKt16dp#T6jF7z?^5*KwoT-Y`rs$ z?}8)#5Dg-Rx!PTa2R5; zx0zhW{BOpx_wKPlTu;4ev-0dUwp;g3qqIi|UMC@A?zEb3RXY`z_}gbwju zzlNht0WR%g@R5CVvg#+fb)o!I*Zpe?{_+oGq*wOmCWQ=(Ra-Q9mx#6SsqWAp*-Jzb zKvuPthpH(Fn_k>2XPu!=+C{vZsF8<9p!T}U+ICbNtO}IAqxa57*L&T>M6I0ogt&l> z^3k#b#S1--$byAaU&sZL$6(6mrf)OqZXpUPbVW%T|4T}20q9SQ&;3?oRz6rSDP4`b z(}J^?+mzbp>MQDD{ziSS0K(2^V4_anz9JV|Y_5{kF3spgW%EO6JpJ(rnnIN%;xkKf zn~;I&OGHKII3ZQ&?sHlEy)jqCyfeusjPMo7sLVr~??NAknqCbuDmo+7tp8vrKykMb z(y`R)pVp}ZgTErmi+z`UyQU*G5stQRsx*J^XW}LHi_af?(bJ8DPho0b)^PT|(`_A$ zFCYCCF={BknK&KYTAVaHE{lqJs4g6B@O&^5oTPLkmqAB#T#m!l9?wz!C}#a6w)Z~Z z6jx{dsXhI(|D)x%Yu49%ioD-~4}+hCA8Q;w_A$79%n+X84jbf?Nh?kRNRzyAi{_oV zU)LqH-yRdPxp;>vBAWqH4E z(WL)}-rb<_R^B~fI%ddj?Qxhp^5_~)6-aB`D~Nd$S`LY_O&&Fme>Id)+iI>%9V-68 z3crl=15^%0qA~}ksw@^dpZ`p;m=ury;-OV63*;zQyRs4?1?8lbUL!bR+C~2Zz1O+E@6ZQW!wvv z|NLqSP0^*J2Twq@yws%~V0^h05B8BMNHv_ZZT+=d%T#i{faiqN+ut5Bc`uQPM zgO+b1uj;)i!N94RJ>5RjTNXN{gAZel|L8S4r!NT{7)_=|`}D~ElU#2er}8~UE$Q>g zZryBhOd|J-U72{1q;Lb!^3mf+H$x6(hJHn$ZJRqCp^In_PD+>6KWnCnCXA35(}g!X z;3YI1luR&*1IvESL~*aF8(?4deU`9!cxB{8IO?PpZ{O5&uY<0DIERh2wEoAP@bayv z#$WTjR*$bN8^~AGZu+85uHo&AulFjmh*pupai?o?+>rZ7@@Xk4muI}ZqH`n&<@_Vn zvT!GF-_Ngd$B7kLge~&3qC;TE=tEid(nQB*qzXI0m46ma*2d(Sd*M%@Zc{kCFcs;1 zky%U)Pyg3wm_g12J`lS4n+Sg=L)-Y`bU705E5wk&zVEZw`eM#~AHHW96@D>bz#7?- zV`xlac^e`Zh_O+B5-kO=$04{<cKUG?R&#bnF}-?4(Jq+?Ph!9g zx@s~F)Uwub>Ratv&v85!6}3{n$bYb+p!w(l8Na6cSyEx#{r7>^YvIj8L?c*{mcB^x zqnv*lu-B1ORFtrmhfe}$I8~h*3!Ys%FNQv!P2tA^wjbH f$KZHO*s&vt|9^w-6P?|#0pRK8NSwWJ?9znhg z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?!xdN1Q+aGJ{c&& zS>O>_%)r1c48n{Iv*t(u1=&kHeO=ifbFy+6aSK)V_AxLppYn8Z42d|rc6w}vOsL55 z`t&mC&y2@JTEyg!eDiFX^k#CC!jq%>erB=yHqUP0XcDOTw6ko}L zX;EmMrq(fKk*eygEuA616;0)>@A{TK|55PV@70 z$OfzS*(VJxQev3J?yY?O=ul(v`fp}?u9z`JK3ugibK>)DyCwImZOF4d{xK%%Ks1*} zv$oa)9anR%lXIBUqYnhLmT>VOzHfNP?ZwJNZ!5$s9M08RynIvaXw>@G^T9@r9^KH1 zVy??F&uuk)bH9Y4pQY!hP58i_H6 znl-NcuCpLV6ZWU;4C zu@9exF&OZi`Bovq_m%T+WhU2kvkz@^_LpycBvqm3bMpLw8X-Or5sL>0AKE1$(k_L=_Zc=CUq#=x1-QZf)G7nHu@fmsQ1eN_N3+nTEz`4HI4Z6uVlE zJH+X&det8JU?tO?upcM4Z=cV!JV;yF>FfL5Q$M|W_2Z!P`S=}Wzp|_1^#d%e?_H`> zV@%vA$+bFVqhw9`U;TfP|5|PD{||OiYdor8P*i??|NJcb%kzT_73*7WE?Ua5hAnR2 z=7WE=PhTlJ#ZeRznjTUb;`E(wkMZrj4e|Hilz-mK>9cZHQY**5TUPw~u}k;u73KI}xAx!0m-)GVia|x^d3p~s_9gh83jA&Ra<8rM%`>U3x69t&NzbwWY}7Ar?)FK#IZ0z|d0H0EkRO w3{9;}4Xg|ebq&m|3=9_N6z8I7$jwj5OsmAL;bP(Gi$Dzwp00i_>zopr02+f8CIA2c diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png deleted file mode 100644 index e71a726136a47ed24125c7efc79d68a4a01961b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14800 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/AppInfo.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index e94828d..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// Application-level settings for the Runner target. -// -// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the -// future. If not, the values below would default to using the project name when this becomes a -// 'flutter create' template. - -// The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = {{name}} - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = {{org}}.flutterStarterTest - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2022 {{org}}. All rights reserved. diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Debug.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd9..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Release.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f49..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Warnings.xcconfig b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf4..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings -GCC_WARN_UNDECLARED_SELECTOR = YES -CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES -CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES -CLANG_WARN_PRAGMA_PACK = YES -CLANG_WARN_STRICT_PROTOTYPES = YES -CLANG_WARN_COMMA = YES -GCC_WARN_STRICT_SELECTOR_MATCH = YES -CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES -CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES -GCC_WARN_SHADOW = YES -CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/DebugProfile.entitlements b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index dddb8a3..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Info.plist b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Info.plist deleted file mode 100644 index 4789daa..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/MainFlutterWindow.swift b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 2722837..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController.init() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Release.entitlements b/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Release.entitlements deleted file mode 100644 index 852fa1a..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml b/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml deleted file mode 100644 index 19ff8c8..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/pubspec.yaml +++ /dev/null @@ -1,59 +0,0 @@ -name: {{name}} -description: {{desc}} - -publish_to: "none" - -version: 1.0.0+1 - -environment: - sdk: ">=2.17.1 <3.0.0" - -dependencies: - flutter: - sdk: flutter - flutter_localizations: - sdk: flutter - intl: ^0.17.0 - cupertino_icons: ^1.0.5 - flutter_bloc: ^8.1.1 - equatable: ^2.0.3 - fluttertoast: ^8.0.9 - cached_network_image: ^3.2.0 - http: - http_interceptor: ^1.0.2 - shared_preferences: ^2.0.12 - retrofit: ^3.0.1+1 - dio: ^4.0.6 - built_value: ^8.4.1 - json_annotation: ^4.6.0 - bloc: ^8.1.0 - go_router: ^4.4.1 - -dev_dependencies: - flutter_test: - sdk: flutter - integration_test: - sdk: flutter - flutter_native_splash: ^2.0.2 - retrofit_generator: ^4.0.3+1 - build_runner: ^2.2.0 - json_serializable: ^6.3.1 - built_value_generator: ^8.4.1 - flutter_lints: ^2.0.0 - bloc_test: ^9.1.0 - mocktail: ^0.3.0 - -flutter_native_splash: - image: assets/images/logo.png - color: "5E92F3" - android_disable_fullscreen: true - -flutter: - generate: true - uses-material-design: true - assets: - - assets/images/logo.png - - assets/images/2.0x/logo.png - - assets/images/3.0x/logo.png - - assets/images/login.png - - assets/images/signup.png diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart deleted file mode 100644 index 86cc877..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_bloc_test.dart +++ /dev/null @@ -1,166 +0,0 @@ -import 'package:bloc_test/bloc_test.dart'; -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:shared_preferences/shared_preferences.dart'; -import 'package:mocktail/mocktail.dart'; - -class MockAuthenticationRepository extends Mock - implements AuthenticationRepository {} - -void main() { - group('AuthenticationBloc', () { - late AuthenticationBloc authenticationBloc; - late AuthenticationRepository authenticationService; - late SharedPrefs prefs; - - setUp(() async { - SharedPreferences.setMockInitialValues({}); - prefs = SharedPrefs.instance; - await prefs.init(); - authenticationService = MockAuthenticationRepository(); - authenticationBloc = AuthenticationBloc( - authenticationService: authenticationService, - ); - }); - - tearDown(() { - authenticationBloc.close(); - prefs.clear(); - }); - - blocTest( - 'test initial state of the bloc', - build: () => authenticationBloc, - verify: (bloc) => bloc.state == const AuthenticationInitial(), - ); - - blocTest( - 'when auth token is null', - build: () { - prefs.remove('authtoken'); - return authenticationBloc; - }, - act: (bloc) => bloc.add(const AppLoadedup()), - wait: const Duration(milliseconds: 500), - expect: () { - return [ - const AuthenticationLoading(), - const AuthenticationStart(), - ]; - }, - ); - - blocTest( - 'when auth token is not null', - build: () { - prefs.setToken('authtoken'); - return authenticationBloc; - }, - act: (bloc) => bloc.add(const AppLoadedup()), - wait: const Duration(milliseconds: 500), - expect: () { - return [ - const AuthenticationLoading(), - const AppAutheticated(), - ]; - }, - ); - - blocTest( - 'when user signup failed', - build: () { - when(() => authenticationService.signUpWithEmailAndPassword( - 'test@gmail.in', 'test1234')).thenAnswer( - (invocation) => Future.value({'error': 'already registered'}), - ); - return authenticationBloc; - }, - act: (bloc) => bloc.add( - const UserSignUp(email: 'test@gmail.in', password: 'test1234'), - ), - wait: const Duration(milliseconds: 500), - expect: () { - return [ - const AuthenticationLoading(), - const AuthenticationFailure(message: 'already registered'), - ]; - }, - ); - - blocTest( - 'when user signup success', - build: () { - when(() => authenticationService.signUpWithEmailAndPassword( - 'eve.holt@reqres.in', 'cityslicka')).thenAnswer( - (invocation) => Future.value({'id': 1, 'token': 'abc'}), - ); - return authenticationBloc; - }, - act: (bloc) => bloc.add( - const UserSignUp(email: 'eve.holt@reqres.in', password: 'cityslicka'), - ), - wait: const Duration(milliseconds: 500), - expect: () { - return [ - const AuthenticationLoading(), - const AppAutheticated(), - ]; - }, - ); - - blocTest( - 'when user login failed', - build: () { - when(() => authenticationService.loginWithEmailAndPassword( - 'test@gmail.in', 'test1234')).thenAnswer( - (invocation) => Future.value({'error': 'user not found'}), - ); - return authenticationBloc; - }, - act: (bloc) => bloc.add( - const UserLogin(email: 'test@gmail.in', password: 'test1234'), - ), - wait: const Duration(milliseconds: 500), - expect: () { - return [ - const AuthenticationLoading(), - const AuthenticationFailure(message: 'user not found'), - ]; - }, - ); - - blocTest( - 'when user login success', - build: () { - when(() => authenticationService.loginWithEmailAndPassword( - 'eve.holt@reqres.in', 'cityslicka')).thenAnswer( - (invocation) => Future.value({'token': 'abc'}), - ); - return authenticationBloc; - }, - act: (bloc) => bloc.add( - const UserLogin(email: 'eve.holt@reqres.in', password: 'cityslicka'), - ), - wait: const Duration(milliseconds: 500), - expect: () { - return [ - const AuthenticationLoading(), - const AppAutheticated(), - ]; - }, - ); - - blocTest( - 'when user logout', - build: () => authenticationBloc, - act: (bloc) => bloc.add(const UserLogOut()), - wait: const Duration(milliseconds: 500), - expect: () { - return [ - const AuthenticationLoading(), - const UserLogoutState(), - ]; - }, - ); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart deleted file mode 100644 index 111fe0c..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_event_test.dart +++ /dev/null @@ -1,29 +0,0 @@ -// ignore_for_file: prefer_const_constructors - -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('AuthenticationEvent', () { - test('test value comparisons of loading event', () { - expect( - AppLoadedup(), - AppLoadedup(), - ); - }); - - test('test value comparisons of user data event', () { - expect( - GetUserData(), - GetUserData(), - ); - }); - - test('test value comparisons of logout event', () { - expect( - UserLogOut(), - UserLogOut(), - ); - }); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart deleted file mode 100644 index e6814a3..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/authentication/authentication_state_test.dart +++ /dev/null @@ -1,29 +0,0 @@ -// ignore_for_file: prefer_const_constructors - -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('AuthenticationState', () { - test('test value comparisons of loading state', () { - expect( - AuthenticationLoading(), - AuthenticationLoading(), - ); - }); - - test('test value comparisons of authenticated state', () { - expect( - AppAutheticated(), - AppAutheticated(), - ); - }); - - test('test value comparisons of logout state', () { - expect( - UserLogoutState(), - UserLogoutState(), - ); - }); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart deleted file mode 100644 index ee58891..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_bloc_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:bloc_test/bloc_test.dart'; -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('UpdateThemeBloc', () { - late UpdateThemeBloc updateThemeBloc; - - setUp(() async { - updateThemeBloc = UpdateThemeBloc(); - }); - - tearDown(() { - updateThemeBloc.close(); - }); - - blocTest( - 'test initial state of the theme bloc', - build: () => updateThemeBloc, - verify: (bloc) => bloc.state == const SetTheme(appTheme: AppTheme.light), - ); - - blocTest( - 'test when theme is changed', - build: () => updateThemeBloc, - act: (bloc) => bloc.add(const UpdateTheme(appTheme: AppTheme.dark)), - expect: () => [const SetTheme(appTheme: AppTheme.dark)], - ); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart deleted file mode 100644 index 02d09ad..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_event_test.dart +++ /dev/null @@ -1,22 +0,0 @@ -// ignore_for_file: prefer_const_constructors - -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('UpdateTheme', () { - test('test value comparisons during light theme', () { - expect( - UpdateTheme(appTheme: AppTheme.light), - UpdateTheme(appTheme: AppTheme.light), - ); - }); - - test('test value comparisons during dark theme', () { - expect( - UpdateTheme(appTheme: AppTheme.dark), - UpdateTheme(appTheme: AppTheme.dark), - ); - }); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart deleted file mode 100644 index 21f2783..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/test/bloc/update_theme/update_theme_state_test.dart +++ /dev/null @@ -1,22 +0,0 @@ -// ignore_for_file: prefer_const_constructors - -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; - -void main() { - group('SetTheme', () { - test('test value comparisons during light theme', () { - expect( - SetTheme(appTheme: AppTheme.light), - SetTheme(appTheme: AppTheme.light), - ); - }); - - test('test value comparisons during dark theme', () { - expect( - SetTheme(appTheme: AppTheme.dark), - SetTheme(appTheme: AppTheme.dark), - ); - }); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart deleted file mode 100644 index c53eb65..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/test/screens/home/logout_test.dart +++ /dev/null @@ -1,67 +0,0 @@ -import 'package:bloc_test/bloc_test.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; - -class MockAuthenticationBloc - extends MockBloc - implements AuthenticationBloc {} - -class MockUpdateThemeBloc extends MockBloc - implements UpdateThemeBloc {} - -void main() { - late AuthenticationBloc authenticationBloc; - late UpdateThemeBloc updateThemeBloc; - - setUp(() async { - authenticationBloc = MockAuthenticationBloc(); - updateThemeBloc = MockUpdateThemeBloc(); - }); - - tearDown(() { - authenticationBloc.close(); - updateThemeBloc.close(); - }); - - Widget createWidget(Widget child) { - return MaterialApp( - home: Builder(builder: (context) { - UiSizeConfig().init(context); - return MultiBlocProvider( - providers: [ - BlocProvider.value(value: authenticationBloc), - BlocProvider.value(value: updateThemeBloc), - ], - child: child, - ); - }), - ); - } - - group('Authentication check', () { - testWidgets('when user logout', (WidgetTester tester) async { - when(() => authenticationBloc.state).thenReturn( - SetUserData( - currentUserData: CurrentUserData( - data: - Data(id: 0, email: '', firstName: '', lastName: '', avatar: ''), - support: Support(url: '', text: ''), - ), - ), - ); - when(() => updateThemeBloc.state).thenReturn( - const SetTheme(appTheme: AppTheme.light), - ); - - await tester.pumpWidget(createWidget(const HomeScreen())); - final Finder logout = find.byKey(const Key('logoutButton')); - await tester.tap(logout); - await tester.pump(); - - verify(() => authenticationBloc.add(const UserLogOut())).called(1); - }); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart deleted file mode 100644 index f9678fa..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/test/screens/login/login_test.dart +++ /dev/null @@ -1,84 +0,0 @@ -import 'package:bloc_test/bloc_test.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; - -class MockAuthenticationBloc - extends MockBloc - implements AuthenticationBloc {} - -void main() { - late AuthenticationBloc authenticationBloc; - - setUp(() async { - authenticationBloc = MockAuthenticationBloc(); - }); - - tearDown(() { - authenticationBloc.close(); - }); - - Widget createWidget(Widget child) { - return MaterialApp( - home: Builder(builder: (context) { - UiSizeConfig().init(context); - return BlocProvider.value( - value: authenticationBloc, - child: child, - ); - }), - ); - } - - group('Login test', () { - testWidgets('when invalid credentials are provided', - (WidgetTester tester) async { - await tester.runAsync(() async { - const emailText = ''; - const passwordText = ''; - - when(() => authenticationBloc.state) - .thenReturn(const AuthenticationInitial()); - - await tester.pumpWidget(createWidget(const LoginScreen())); - final Finder email = find.byKey(const Key('emailField')); - await tester.enterText(email, emailText); - final Finder password = find.byKey(const Key('passwordField')); - await tester.enterText(password, passwordText); - final Finder login = find.byKey(const Key('loginButton')); - await tester.tap(login); - await tester.pump(); - - verifyNever(() => authenticationBloc.add( - const UserLogin(email: emailText, password: passwordText), - )); - }); - }); - - testWidgets('when valid credentials are provided', - (WidgetTester tester) async { - await tester.runAsync(() async { - const emailText = 'eve.holt@reqres.in'; - const passwordText = 'cityslicka'; - - when(() => authenticationBloc.state) - .thenReturn(const AuthenticationInitial()); - - await tester.pumpWidget(createWidget(const LoginScreen())); - final Finder email = find.byKey(const Key('emailField')); - await tester.enterText(email, emailText); - final Finder password = find.byKey(const Key('passwordField')); - await tester.enterText(password, passwordText); - final Finder login = find.byKey(const Key('loginButton')); - await tester.tap(login); - await tester.pump(); - - verify(() => authenticationBloc.add( - const UserLogin(email: emailText, password: passwordText), - )).called(1); - }); - }); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart b/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart deleted file mode 100644 index 362e67f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/test/screens/signup/signup_test.dart +++ /dev/null @@ -1,90 +0,0 @@ -import 'package:bloc_test/bloc_test.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; -import 'package:{{name}}/common_export.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:mocktail/mocktail.dart'; - -class MockAuthenticationBloc - extends MockBloc - implements AuthenticationBloc {} - -void main() { - late AuthenticationBloc authenticationBloc; - - setUp(() async { - authenticationBloc = MockAuthenticationBloc(); - }); - - tearDown(() { - authenticationBloc.close(); - }); - - Widget createWidget(Widget child) { - return MaterialApp( - home: Builder(builder: (context) { - UiSizeConfig().init(context); - return BlocProvider.value( - value: authenticationBloc, - child: child, - ); - }), - ); - } - - group('Signup test', () { - testWidgets('when invalid credentials are provided', - (WidgetTester tester) async { - await tester.runAsync(() async { - const nameText = ''; - const emailText = ''; - const passwordText = ''; - - when(() => authenticationBloc.state) - .thenReturn(const AuthenticationInitial()); - - await tester.pumpWidget(createWidget(const SignUpScreen())); - final Finder name = find.byKey(const Key('nameField')); - await tester.enterText(name, nameText); - final Finder email = find.byKey(const Key('emailField')); - await tester.enterText(email, emailText); - final Finder password = find.byKey(const Key('passwordField')); - await tester.enterText(password, passwordText); - final Finder signup = find.byKey(const Key('signupButton')); - await tester.tap(signup); - await tester.pump(); - - verifyNever(() => authenticationBloc.add( - const UserSignUp(email: emailText, password: passwordText), - )); - }); - }); - - testWidgets('when valid credentials are provided', - (WidgetTester tester) async { - await tester.runAsync(() async { - const nameText = 'eve'; - const emailText = 'eve.holt@reqres.in'; - const passwordText = 'cityslicka'; - - when(() => authenticationBloc.state) - .thenReturn(const AuthenticationInitial()); - - await tester.pumpWidget(createWidget(const SignUpScreen())); - final Finder name = find.byKey(const Key('nameField')); - await tester.enterText(name, nameText); - final Finder email = find.byKey(const Key('emailField')); - await tester.enterText(email, emailText); - final Finder password = find.byKey(const Key('passwordField')); - await tester.enterText(password, passwordText); - final Finder signup = find.byKey(const Key('signupButton')); - await tester.tap(signup); - await tester.pump(); - - verify(() => authenticationBloc.add( - const UserSignUp(email: emailText, password: passwordText), - )).called(1); - }); - }); - }); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/favicon.png b/bricks/flutter_starter/__brick__/{{name}}/web/favicon.png deleted file mode 100644 index 8aaa46ac1ae21512746f852a42ba87e4165dfdd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-192.png b/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-192.png deleted file mode 100644 index b749bfef07473333cf1dd31e9eed89862a5d52aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5292 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 diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-512.png b/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48dff1169879ba46840804b412fe02fefd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8252 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 diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-192.png b/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d76e525556d5d89141648c724331630325d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-512.png b/bricks/flutter_starter/__brick__/{{name}}/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c56691fbdb0b7efa65097c7cc1edac12a6d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20998 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 MPgg&ebxsLQ025IeI{*Lx diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/index.html b/bricks/flutter_starter/__brick__/{{name}}/web/index.html deleted file mode 100644 index 4fb51c8..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/web/index.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - {{name}} - - - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/web/manifest.json b/bricks/flutter_starter/__brick__/{{name}}/web/manifest.json deleted file mode 100644 index becec59..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "{{name}}", - "short_name": "{{name}}", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "{{desc}}", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "icons/Icon-maskable-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "icons/Icon-maskable-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -} \ No newline at end of file diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/.gitignore b/bricks/flutter_starter/__brick__/{{name}}/windows/.gitignore deleted file mode 100644 index d492d0d..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ephemeral/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/windows/CMakeLists.txt deleted file mode 100644 index 3e04b0e..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/CMakeLists.txt +++ /dev/null @@ -1,101 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project({{name}} LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "{{name}}") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Define build configuration option. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") - endif() -endif() -# Define settings for the Profile build mode. -set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_17) - target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner") - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/CMakeLists.txt deleted file mode 100644 index 930d207..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,104 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.14) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.cc b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 8b6d468..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void RegisterPlugins(flutter::PluginRegistry* registry) { -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.h b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d8..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugins.cmake b/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugins.cmake deleted file mode 100644 index b93c4c3..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/CMakeLists.txt b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/CMakeLists.txt deleted file mode 100644 index b9e550f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,32 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(runner LANGUAGES CXX) - -# Define the application target. To change its name, change BINARY_NAME in the -# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer -# work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} WIN32 - "flutter_window.cpp" - "main.cpp" - "utils.cpp" - "win32_window.cpp" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - "Runner.rc" - "runner.exe.manifest" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Disable Windows macros that collide with C++ standard library functions. -target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") - -# Add dependency libraries and include directories. Add any application-specific -# dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) -target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/Runner.rc b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/Runner.rc deleted file mode 100644 index d38c60f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APP_ICON ICON "resources\\app_icon.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#ifdef FLUTTER_BUILD_NUMBER -#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER -#else -#define VERSION_AS_NUMBER 1,0,0 -#endif - -#ifdef FLUTTER_BUILD_NAME -#define VERSION_AS_STRING #FLUTTER_BUILD_NAME -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "{{name}}" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "{{name}}" "\0" - VALUE "LegalCopyright", "Copyright (C) 2022 {{org}}. All rights reserved." "\0" - VALUE "OriginalFilename", "{{name}}.exe" "\0" - VALUE "ProductName", "{{name}}" "\0" - VALUE "ProductVersion", VERSION_AS_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.cpp b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.cpp deleted file mode 100644 index b43b909..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - return true; -} - -void FlutterWindow::OnDestroy() { - if (flutter_controller_) { - flutter_controller_ = nullptr; - } - - Win32Window::OnDestroy(); -} - -LRESULT -FlutterWindow::MessageHandler(HWND hwnd, UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - // Give Flutter, including plugins, an opportunity to handle window messages. - if (flutter_controller_) { - std::optional result = - flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, - lparam); - if (result) { - return *result; - } - } - - switch (message) { - case WM_FONTCHANGE: - flutter_controller_->engine()->ReloadSystemFonts(); - break; - } - - return Win32Window::MessageHandler(hwnd, message, wparam, lparam); -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.h b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RUNNER_FLUTTER_WINDOW_H_ -#define RUNNER_FLUTTER_WINDOW_H_ - -#include -#include - -#include - -#include "win32_window.h" - -// A window that does nothing but host a Flutter view. -class FlutterWindow : public Win32Window { - public: - // Creates a new FlutterWindow hosting a Flutter view running |project|. - explicit FlutterWindow(const flutter::DartProject& project); - virtual ~FlutterWindow(); - - protected: - // Win32Window: - bool OnCreate() override; - void OnDestroy() override; - LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, - LPARAM const lparam) noexcept override; - - private: - // The project to run. - flutter::DartProject project_; - - // The Flutter instance hosted by this window. - std::unique_ptr flutter_controller_; -}; - -#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/main.cpp b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/main.cpp deleted file mode 100644 index 5b7e26f..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.CreateAndShow(L"{{name}}", origin, size)) { - return EXIT_FAILURE; - } - window.SetQuitOnClose(true); - - ::MSG msg; - while (::GetMessage(&msg, nullptr, 0, 0)) { - ::TranslateMessage(&msg); - ::DispatchMessage(&msg); - } - - ::CoUninitialize(); - return EXIT_SUCCESS; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resource.h b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resource.h deleted file mode 100644 index 66a65d1..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Runner.rc -// -#define IDI_APP_ICON 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resources/app_icon.ico b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/resources/app_icon.ico deleted file mode 100644 index c04e20caf6370ebb9253ad831cc31de4a9c965f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33772 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 diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/runner.exe.manifest b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/runner.exe.manifest deleted file mode 100644 index c977c4a..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.cpp b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.cpp deleted file mode 100644 index f5bf9fa..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::string(); - } - int target_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr); - std::string utf8_string; - if (target_length == 0 || target_length > utf8_string.max_size()) { - return utf8_string; - } - utf8_string.resize(target_length); - int converted_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, utf8_string.data(), - target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.h b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.h deleted file mode 100644 index 3879d54..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RUNNER_UTILS_H_ -#define RUNNER_UTILS_H_ - -#include -#include - -// Creates a console for the process, and redirects stdout and stderr to -// it for both the runner and the Flutter library. -void CreateAndAttachConsole(); - -// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string -// encoded in UTF-8. Returns an empty std::string on failure. -std::string Utf8FromUtf16(const wchar_t* utf16_string); - -// Gets the command line arguments passed in as a std::vector, -// encoded in UTF-8. Returns an empty std::vector on failure. -std::vector GetCommandLineArguments(); - -#endif // RUNNER_UTILS_H_ diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.cpp b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.cpp deleted file mode 100644 index c10f08d..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.cpp +++ /dev/null @@ -1,245 +0,0 @@ -#include "win32_window.h" - -#include - -#include "resource.h" - -namespace { - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - FreeLibrary(user32_module); - } -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registar instance. - static WindowClassRegistrar* GetInstance() { - if (!instance_) { - instance_ = new WindowClassRegistrar(); - } - return instance_; - } - - // Returns the name of the window class, registering the class if it hasn't - // previously been registered. - const wchar_t* GetWindowClass(); - - // Unregisters the window class. Should only be called if there are no - // instances of the window. - void UnregisterWindowClass(); - - private: - WindowClassRegistrar() = default; - - static WindowClassRegistrar* instance_; - - bool class_registered_ = false; -}; - -WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; - -const wchar_t* WindowClassRegistrar::GetWindowClass() { - if (!class_registered_) { - WNDCLASS window_class{}; - window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); - window_class.lpszClassName = kWindowClassName; - window_class.style = CS_HREDRAW | CS_VREDRAW; - window_class.cbClsExtra = 0; - window_class.cbWndExtra = 0; - window_class.hInstance = GetModuleHandle(nullptr); - window_class.hIcon = - LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); - window_class.hbrBackground = 0; - window_class.lpszMenuName = nullptr; - window_class.lpfnWndProc = Win32Window::WndProc; - RegisterClass(&window_class); - class_registered_ = true; - } - return kWindowClassName; -} - -void WindowClassRegistrar::UnregisterWindowClass() { - UnregisterClass(kWindowClassName, nullptr); - class_registered_ = false; -} - -Win32Window::Win32Window() { - ++g_active_window_count; -} - -Win32Window::~Win32Window() { - --g_active_window_count; - Destroy(); -} - -bool Win32Window::CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size) { - Destroy(); - - const wchar_t* window_class = - WindowClassRegistrar::GetInstance()->GetWindowClass(); - - const POINT target_point = {static_cast(origin.x), - static_cast(origin.y)}; - HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); - UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); - double scale_factor = dpi / 96.0; - - HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, - Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), - Scale(size.width, scale_factor), Scale(size.height, scale_factor), - nullptr, nullptr, GetModuleHandle(nullptr), this); - - if (!window) { - return false; - } - - return OnCreate(); -} - -// static -LRESULT CALLBACK Win32Window::WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - if (message == WM_NCCREATE) { - auto window_struct = reinterpret_cast(lparam); - SetWindowLongPtr(window, GWLP_USERDATA, - reinterpret_cast(window_struct->lpCreateParams)); - - auto that = static_cast(window_struct->lpCreateParams); - EnableFullDpiSupportIfAvailable(window); - that->window_handle_ = window; - } else if (Win32Window* that = GetThisFromHandle(window)) { - return that->MessageHandler(window, message, wparam, lparam); - } - - return DefWindowProc(window, message, wparam, lparam); -} - -LRESULT -Win32Window::MessageHandler(HWND hwnd, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - switch (message) { - case WM_DESTROY: - window_handle_ = nullptr; - Destroy(); - if (quit_on_close_) { - PostQuitMessage(0); - } - return 0; - - case WM_DPICHANGED: { - auto newRectSize = reinterpret_cast(lparam); - LONG newWidth = newRectSize->right - newRectSize->left; - LONG newHeight = newRectSize->bottom - newRectSize->top; - - SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, - newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; - } - case WM_SIZE: { - RECT rect = GetClientArea(); - if (child_content_ != nullptr) { - // Size and position the child window. - MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, - rect.bottom - rect.top, TRUE); - } - return 0; - } - - case WM_ACTIVATE: - if (child_content_ != nullptr) { - SetFocus(child_content_); - } - return 0; - } - - return DefWindowProc(window_handle_, message, wparam, lparam); -} - -void Win32Window::Destroy() { - OnDestroy(); - - if (window_handle_) { - DestroyWindow(window_handle_); - window_handle_ = nullptr; - } - if (g_active_window_count == 0) { - WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); - } -} - -Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { - return reinterpret_cast( - GetWindowLongPtr(window, GWLP_USERDATA)); -} - -void Win32Window::SetChildContent(HWND content) { - child_content_ = content; - SetParent(content, window_handle_); - RECT frame = GetClientArea(); - - MoveWindow(content, frame.left, frame.top, frame.right - frame.left, - frame.bottom - frame.top, true); - - SetFocus(child_content_); -} - -RECT Win32Window::GetClientArea() { - RECT frame; - GetClientRect(window_handle_, &frame); - return frame; -} - -HWND Win32Window::GetHandle() { - return window_handle_; -} - -void Win32Window::SetQuitOnClose(bool quit_on_close) { - quit_on_close_ = quit_on_close; -} - -bool Win32Window::OnCreate() { - // No-op; provided for subclasses. - return true; -} - -void Win32Window::OnDestroy() { - // No-op; provided for subclasses. -} diff --git a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.h b/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.h deleted file mode 100644 index 17ba431..0000000 --- a/bricks/flutter_starter/__brick__/{{name}}/windows/runner/win32_window.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates and shows a win32 window with |title| and position and size using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size to will treat the width height passed in to this function - // as logical pixels and scale to appropriate for the default monitor. Returns - // true if the window was created successfully. - bool CreateAndShow(const std::wstring& title, - const Point& origin, - const Size& size); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responsponds to changes in DPI. All other messages are handled by - // MessageHandler. - static LRESULT CALLBACK WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Retrieves a class instance pointer for |window| - static Win32Window* GetThisFromHandle(HWND const window) noexcept; - - bool quit_on_close_ = false; - - // window handle for top level window. - HWND window_handle_ = nullptr; - - // window handle for hosted content. - HWND child_content_ = nullptr; -}; - -#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/bricks/flutter_starter/brick.yaml b/bricks/flutter_starter/brick.yaml deleted file mode 100644 index 2b23cea..0000000 --- a/bricks/flutter_starter/brick.yaml +++ /dev/null @@ -1,26 +0,0 @@ -name: flutter_starter -description: Flutter Starter Brick. - -version: 0.1.0+1 - -environment: - mason: ">=0.1.0-dev.26 <0.1.0" - -vars: - name: - type: string - description: Name - default: starter - prompt: Project name? - - desc: - type: string - description: Description - default: New flutter project - prompt: Project description? - - org: - type: string - description: Organization - default: com.example - prompt: Project Organization? diff --git a/bricks/mason-lock.json b/bricks/mason-lock.json deleted file mode 100644 index a1c0368..0000000 --- a/bricks/mason-lock.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "bricks": { - "flutter_starter": { - "path": "flutter_starter" - } - } -} \ No newline at end of file diff --git a/bricks/mason.yaml b/bricks/mason.yaml deleted file mode 100644 index 4cecc1a..0000000 --- a/bricks/mason.yaml +++ /dev/null @@ -1,3 +0,0 @@ -bricks: - flutter_starter: - path: flutter_starter diff --git a/cli/.gitignore b/cli/.gitignore deleted file mode 100644 index 11bc2f5..0000000 --- a/cli/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -.dart_tool/ -.packages -build/ -pubspec.lock - -.test_coverage.dart -coverage/ -.test_runner.dart - -.idea \ No newline at end of file diff --git a/cli/analysis_options.yaml b/cli/analysis_options.yaml deleted file mode 100644 index f9b3034..0000000 --- a/cli/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:flutter_lints/flutter.yaml diff --git a/cli/lib/src/cli/actions.dart b/cli/lib/src/cli/actions.dart deleted file mode 100644 index 4ce6fdc..0000000 --- a/cli/lib/src/cli/actions.dart +++ /dev/null @@ -1,44 +0,0 @@ -import 'package:flutter_starter_cli/src/cli/cli.dart'; -import 'package:flutter_starter_cli/src/utils.dart'; - -class Actions { - static Future setupFiles(String path, String api, bool test) async { - Status.start('Running Basic Setup...'); - try { - await Cli.removeFiles(path, api, test); - Status.complete('Basic Setup Completed!!!'); - } catch (_) { - Status.fail('Setup Failed.'); - } - } - - static Future setupPackages(String path, String api, bool test) async { - Status.start('Adding Dependencies...'); - try { - await Cli.removePackages(path, api, test); - Status.complete('Dependencies Added!!!'); - } catch (_) { - Status.fail('Pub Add Failed.'); - } - } - - static Future getPackages(String path) async { - Status.start('Running Pub Get...'); - try { - await Cli.getPackages(path); - Status.complete('Pub Get Completed!!!'); - } catch (_) { - Status.fail('Pub Get Failed.'); - } - } - - static Future initializeGit(String path) async { - Status.start('Initialize Git...'); - try { - await Cli.initializeGit(path); - Status.complete('Git Initialized!!!'); - } catch (_) { - Status.fail('Git Not Installed.'); - } - } -} diff --git a/cli/lib/flutter_starter_cli.dart b/lib/flutter_starter_cli.dart similarity index 100% rename from cli/lib/flutter_starter_cli.dart rename to lib/flutter_starter_cli.dart diff --git a/lib/src/cli/actions.dart b/lib/src/cli/actions.dart new file mode 100644 index 0000000..266bc00 --- /dev/null +++ b/lib/src/cli/actions.dart @@ -0,0 +1,82 @@ +import 'dart:io'; + +import 'package:flutter_starter_cli/src/cli/cli.dart'; +import 'package:flutter_starter_cli/src/utils.dart'; + +class Actions { + static Future createProject(String path) async { + Status.start('Project Creating...'); + try { + await Cli.cloneProject(path); + Status.complete('Project Created!!!'); + } catch (_) { + Status.fail('Project Creation Failed!!!'); + } + } + + static Future generateFiles( + String path, + String name, + String desc, + String org, + String api, + bool test, + ) async { + Status.start('Running Basic Setup...'); + try { + await Cli.removeFiles(path, api, test); + Status.complete('Basic Setup Completed!!!'); + } catch (_) { + Status.fail('Setup Failed.'); + } + await Future.wait( + Directory(path) + .listSync(recursive: true) + .whereType() + .map((_) async { + var file = _; + try { + final contents = await file.readAsString(); + file = await file.writeAsString(contents + .replaceAll('flutter_starter', name) + .replaceAll('A new Flutter project.', desc) + .replaceAll('com.example', org) + .replaceAll( + 'api_sdk/dio_api_sdk.dart', 'api_sdk/${api}_api_sdk.dart')); + } catch (_) {} + }), + ); + } + + static Future setupPackages(String path, String api, bool test) async { + Status.start('Adding Dependencies...'); + try { + await Cli.removePackages(path, api, test); + Status.complete('Dependencies Added!!!'); + } catch (_) { + Status.fail('Pub Add Failed.'); + } + } + + static Future getPackages(String path) async { + Status.start('Running Pub Get...'); + try { + await Cli.getPackages(path); + Status.complete('Pub Get Completed!!!'); + } catch (_) { + Status.fail('Pub Get Failed.'); + } + } + + static Future initializeGit(String path, bool git) async { + if (git) { + Status.start('Initialize Git...'); + try { + await Cli.initializeGit(path); + Status.complete('Git Initialized!!!'); + } catch (_) { + Status.fail('Git Not Installed.'); + } + } + } +} diff --git a/cli/lib/src/cli/cli.dart b/lib/src/cli/cli.dart similarity index 56% rename from cli/lib/src/cli/cli.dart rename to lib/src/cli/cli.dart index ed190e8..95949d5 100644 --- a/cli/lib/src/cli/cli.dart +++ b/lib/src/cli/cli.dart @@ -1,5 +1,7 @@ import 'dart:io'; +import 'package:path/path.dart'; + class Cli { static Future _run( String cmd, @@ -15,27 +17,35 @@ class Cli { return result; } + static Future cloneProject(String path) async { + await _run( + 'git', + ['clone', 'https://github.com/Geekyants/flutter-starter.git', path], + path: path, + ); + } + static Future removeFiles(String path, String api, bool test) async { - var args = []; + Directory target; + target = Directory(join(path, '.git')); + await target.delete(recursive: true); if (api == 'dio') { - args - ..add('lib/api_sdk/http') - ..add('lib/api_sdk/http_api_sdk.dart'); + target = Directory(join(path, 'lib', 'api_sdk', 'http')); + await target.delete(recursive: true); + target = Directory(join(path, 'lib', 'api_sdk', 'http_api_sdk.dart')); + await target.delete(recursive: true); } else { - args - ..add('lib/api_sdk/dio') - ..add('lib/api_sdk/dio_api_sdk.dart'); + target = Directory(join(path, 'lib', 'api_sdk', 'dio')); + await target.delete(recursive: true); + target = Directory(join(path, 'lib', 'api_sdk', 'dio_api_sdk.dart')); + await target.delete(recursive: true); } if (!test) { - args - ..add('integration_test') - ..add('test'); + target = Directory(join(path, 'integration_test')); + await target.delete(recursive: true); + target = Directory(join(path, 'test')); + await target.delete(recursive: true); } - await _run( - 'rm', - ['-rf', ...args], - path: path, - ); } static Future removePackages(String path, String api, bool test) async { diff --git a/cli/lib/src/command_runner.dart b/lib/src/command_runner.dart similarity index 90% rename from cli/lib/src/command_runner.dart rename to lib/src/command_runner.dart index 7caa867..4857568 100644 --- a/cli/lib/src/command_runner.dart +++ b/lib/src/command_runner.dart @@ -1,11 +1,11 @@ import 'package:args/args.dart'; import 'package:args/command_runner.dart'; -import 'package:mason/mason.dart'; +import 'package:mason_logger/mason_logger.dart'; import 'package:pub_updater/pub_updater.dart'; import 'package:flutter_starter_cli/src/commands/commands.dart'; import 'package:flutter_starter_cli/src/utils.dart'; -import 'package:flutter_starter_cli/src/version.dart' as ver; +import 'package:flutter_starter_cli/src/version.dart'; const executableName = 'flutter_starter_cli'; const packageName = 'flutter_starter_cli'; @@ -86,7 +86,7 @@ class FlutterStarterCliCommandRunner extends CommandRunner { final int? exitCode; if (topLevelResults['version'] == true) { - _logger.info(ver.packageVersion); + _logger.info(packageVersion); exitCode = ExitCode.success.code; } else { exitCode = await super.runCommand(topLevelResults); @@ -98,13 +98,13 @@ class FlutterStarterCliCommandRunner extends CommandRunner { Future _checkForUpdates() async { try { final latestVersion = await _pubUpdater.getLatestVersion(packageName); - final isUpToDate = ver.packageVersion == latestVersion; + final isUpToDate = packageVersion == latestVersion; if (!isUpToDate) { _logger ..info('') ..info( ''' -${lightYellow.wrap('Update available!')} ${lightCyan.wrap(ver.packageVersion)} \u2192 ${lightCyan.wrap(latestVersion)} +${lightYellow.wrap('Update available!')} ${lightCyan.wrap(packageVersion)} \u2192 ${lightCyan.wrap(latestVersion)} Run ${lightCyan.wrap('flutter_starter_cli update')} to update''', ); } diff --git a/cli/lib/src/commands/commands.dart b/lib/src/commands/commands.dart similarity index 100% rename from cli/lib/src/commands/commands.dart rename to lib/src/commands/commands.dart diff --git a/cli/lib/src/commands/create_command.dart b/lib/src/commands/create_command.dart similarity index 73% rename from cli/lib/src/commands/create_command.dart rename to lib/src/commands/create_command.dart index 2c13ba2..3a6c263 100644 --- a/cli/lib/src/commands/create_command.dart +++ b/lib/src/commands/create_command.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:args/command_runner.dart'; -import 'package:mason/mason.dart'; +import 'package:mason_logger/mason_logger.dart'; import 'package:flutter_starter_cli/src/cli/actions.dart'; import 'package:flutter_starter_cli/src/command_runner.dart'; @@ -55,40 +55,16 @@ class CreateCommand extends Command { @override Future run() async { - final brick = Brick.git( - const GitPath( - 'https://github.com/GeekyAnts/flutter-starter-cli', - path: 'bricks/flutter_starter', - ), - ); - final dir = Directory.current; - final target = DirectoryGeneratorTarget(dir); final name = _name; final desc = _desc; final org = _org; final api = _api; final test = _test; final git = _git; - Status.start('Project Creating...'); - final generator = await MasonGenerator.fromBrick(brick); - final fileCount = await generator.generate( - target, - logger: _logger, - vars: { - 'name': name, - 'desc': desc, - 'org': org, - 'api': api, - }, - ); - Status.complete('Project Created with ${fileCount.length} Files!!!'); - await onGenerateComplete( - _logger, - '${Directory.current.path}/$name', - api, - test, - git, - ); + final path = '${Directory.current.path}/$name'; + final target = Directory(path); + if (!target.existsSync()) await target.create(); + await onGenerateComplete(_logger, path, name, desc, org, api, test, git); _logger.success('Your Project is Ready to Use 🚀'); return ExitCode.success.code; } @@ -145,16 +121,12 @@ class CreateCommand extends Command { ); } - Future onGenerateComplete( - Logger logger, - String path, - String api, - bool test, - bool git, - ) async { - await Actions.setupFiles(path, api, test); + Future onGenerateComplete(Logger logger, String path, String name, + String desc, String org, String api, bool test, bool git) async { + await Actions.createProject(path); + await Actions.generateFiles(path, name, desc, org, api, test); await Actions.setupPackages(path, api, test); await Actions.getPackages(path); - if (git) await Actions.initializeGit(path); + await Actions.initializeGit(path, git); } } diff --git a/cli/lib/src/commands/update_command.dart b/lib/src/commands/update_command.dart similarity index 89% rename from cli/lib/src/commands/update_command.dart rename to lib/src/commands/update_command.dart index 22b27c7..1b9a46d 100644 --- a/cli/lib/src/commands/update_command.dart +++ b/lib/src/commands/update_command.dart @@ -1,9 +1,9 @@ import 'package:args/command_runner.dart'; -import 'package:mason/mason.dart'; +import 'package:mason_logger/mason_logger.dart'; import 'package:pub_updater/pub_updater.dart'; import 'package:flutter_starter_cli/src/command_runner.dart'; -import 'package:flutter_starter_cli/src/version.dart' as ver; +import 'package:flutter_starter_cli/src/version.dart'; class UpdateCommand extends Command { UpdateCommand({ @@ -34,7 +34,7 @@ class UpdateCommand extends Command { } updateCheckProgress.complete('Checked for updates'); - final isUpToDate = ver.packageVersion == latestVersion; + final isUpToDate = packageVersion == latestVersion; if (isUpToDate) { _logger.info('CLI is already at the latest version.'); return ExitCode.success.code; diff --git a/cli/lib/src/utils.dart b/lib/src/utils.dart similarity index 87% rename from cli/lib/src/utils.dart rename to lib/src/utils.dart index 90aab26..b8ebbc2 100644 --- a/cli/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -1,4 +1,4 @@ -import 'package:mason/mason.dart'; +import 'package:mason_logger/mason_logger.dart'; enum APIService { dio, diff --git a/cli/lib/src/version.dart b/lib/src/version.dart similarity index 100% rename from cli/lib/src/version.dart rename to lib/src/version.dart diff --git a/cli/pubspec.yaml b/pubspec.yaml similarity index 78% rename from cli/pubspec.yaml rename to pubspec.yaml index 617f811..5b55c27 100644 --- a/cli/pubspec.yaml +++ b/pubspec.yaml @@ -8,12 +8,11 @@ environment: dependencies: args: ^2.3.1 - mason: ^0.1.0-dev.33 + mason_logger: ^0.1.3 + path: ^1.8.2 pub_updater: ^0.2.1 dev_dependencies: - build_runner: ^2.0.0 - build_version: ^2.0.0 flutter_lints: ^2.0.1 executables: From c20b51a27b0be0ebf7c6a6bfeea6889b8d215d43 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Mon, 17 Oct 2022 10:13:07 +0530 Subject: [PATCH 14/25] update readme --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 0fc429f..2c69cec 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,6 @@ The `Flutter Starter CLI` is a very useful tool that provides commands for the e While working with the Flutter projects we have to write the same repetitive code multiple times but using this CLI, we can create a Flutter template on the fly.\ Also, the basic structure of all the tests in Flutter is the same. So this CLI also provides a basic starter pack for the Flutter test as well. -`Flutter Starter CLI` under the hood uses mason to generate the project template.\ -Mason is an open-source tool that generates code from custom templates called bricks. - Out of the box, `Flutter Starter CLI` includes:- - ✅ **State Management** @@ -35,10 +32,9 @@ Currently, the `Flutter Starter CLI` depends on the following packages:- | Package | Version | Description | | ------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- | | args | 2.3.1 | Parses raw command-line arguments into a set of options and values. | -| mason | 0.1.0 | A template generator which helps to generate files quickly and consistently. | +| mason_logger | 0.1.3 | Simple logging library for CLI requests. | +| path | 1.8.2 | The path package provides common operations for manipulating paths: joining, splitting, normalizing, etc. | | pub_updater | 0.2.1 | A Dart package which enables checking whether packages are up to date and supports updating them. | -| build_runner | 2.0.0 | The build_runner package provides a concrete way of generating files using Dart code, outside of tools like pub. | -| build_version | 2.0.0 | Include the version of the package in the source code. | | flutter_lints | 2.0.1 | This package contains a recommended set of lints for Flutter apps, packages, and plugins to encourage good coding practices. | ## Getting Started @@ -74,7 +70,10 @@ $ flutter_starter_cli create # Shorthand to create project with git $ flutter_starter_cli create --api= -g -# Shorthand to create project without git +# Shorthand to create project with test +$ flutter_starter_cli create --api= -t + +# Shorthand to create project without git and test $ flutter_starter_cli create --api= # Available API services (dio, http) @@ -89,14 +88,15 @@ The complete usage of the create command with options and flags. Creates a new flutter starter project. Usage: flutter_starter_cli create --h, --help Print this usage information. - --desc The description for the project. - (defaults to "A New Flutter Project.") - --org The organization for the project. - (defaults to "com.example") --a, --api The API service for the project. - [dio, http] --g, --[no-]git Initialize Git Repository. +-h, --help Print this usage information. + --desc The description for the project. + (defaults to "A New Flutter Project.") + --org The organization for the project. + (defaults to "com.example") +-a, --api The API service for the project. + [dio, http] +-t, --[no-]test Setup Test Cases. +-g, --[no-]git Initialize Git Repository. Run "flutter_starter_cli help" to see global options. ``` From 67cec6ffc838fa6add934611ee3242187b69b891 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Tue, 18 Oct 2022 10:35:57 +0530 Subject: [PATCH 15/25] add license and changelog --- CHANGELOG.md | 3 +++ LICENSE | 21 +++++++++++++++++++++ README.md | 4 ++-- lib/src/cli/cli.dart | 9 ++++++++- lib/src/commands/create_command.dart | 2 +- lib/src/version.dart | 2 +- pubspec.yaml | 8 +++++--- 7 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 LICENSE diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..13a1ea4 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +# 0.0.1-dev.1 + +- Initial development release. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4fc33a2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 GeekyAnts + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 2c69cec..28ab379 100644 --- a/README.md +++ b/README.md @@ -39,10 +39,10 @@ Currently, the `Flutter Starter CLI` depends on the following packages:- ## Getting Started -Firstly clone the project on your system then run the following command: +Activate globally via: ```sh -dart pub global activate --source=path +dart pub global activate flutter_starter_cli ``` ## Usage diff --git a/lib/src/cli/cli.dart b/lib/src/cli/cli.dart index 95949d5..428ed98 100644 --- a/lib/src/cli/cli.dart +++ b/lib/src/cli/cli.dart @@ -20,7 +20,14 @@ class Cli { static Future cloneProject(String path) async { await _run( 'git', - ['clone', 'https://github.com/Geekyants/flutter-starter.git', path], + [ + 'clone', + 'https://github.com/Geekyants/flutter-starter.git', + '--branch', + 'development', + '--single-branch', + path + ], path: path, ); } diff --git a/lib/src/commands/create_command.dart b/lib/src/commands/create_command.dart index 3a6c263..415737a 100644 --- a/lib/src/commands/create_command.dart +++ b/lib/src/commands/create_command.dart @@ -74,7 +74,7 @@ class CreateCommand extends Command { if (args.isEmpty) { return _logger.prompt( 'Name of the Project?', - defaultValue: 'counter', + defaultValue: 'flutter_starter', ); } return args.first; diff --git a/lib/src/version.dart b/lib/src/version.dart index af0834a..e3724f0 100644 --- a/lib/src/version.dart +++ b/lib/src/version.dart @@ -1 +1 @@ -const packageVersion = '0.0.1'; +const packageVersion = '0.0.1-dev.1'; diff --git a/pubspec.yaml b/pubspec.yaml index 5b55c27..baec7b2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,14 +1,16 @@ name: flutter_starter_cli description: Flutter Starter CLI -version: 0.0.1 -publish_to: none +version: 0.0.1-dev.1 + +homepage: https://flutter-starter.geekyants.com +repository: https://github.com/GeekyAnts/flutter-starter-cli environment: sdk: ">=2.18.0 <3.0.0" dependencies: args: ^2.3.1 - mason_logger: ^0.1.3 + mason_logger: ^0.2.0 path: ^1.8.2 pub_updater: ^0.2.1 From ce178ea123217ac0d7cb3d0027c97574290026b0 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Thu, 20 Oct 2022 15:38:47 +0530 Subject: [PATCH 16/25] fix pub points --- example/README.md | 9 +++++++++ lib/flutter_starter_cli.dart | 7 +++++++ pubspec.yaml | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 example/README.md diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..80e0310 --- /dev/null +++ b/example/README.md @@ -0,0 +1,9 @@ +# Example + +```sh +# Activate cli +dart pub global activate flutter_starter_cli + +# See usage +flutter_starter_cli --help +``` diff --git a/lib/flutter_starter_cli.dart b/lib/flutter_starter_cli.dart index 512d56d..ccb4aa5 100644 --- a/lib/flutter_starter_cli.dart +++ b/lib/flutter_starter_cli.dart @@ -1 +1,8 @@ +/// ```sh +/// # Activate cli +/// dart pub global activate flutter_starter_cli +/// +/// # See usage +/// flutter_starter_cli --help +/// ``` library flutter_starter_cli; diff --git a/pubspec.yaml b/pubspec.yaml index baec7b2..4c03283 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: flutter_starter_cli -description: Flutter Starter CLI +description: A command line tool that provides ease of setting up a Flutter project. version: 0.0.1-dev.1 homepage: https://flutter-starter.geekyants.com From d7ad0d8ea3d9d39b28222411d0397c182f38640c Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Fri, 21 Oct 2022 14:03:57 +0530 Subject: [PATCH 17/25] add riverpod state management --- lib/src/cli/actions.dart | 5 ++-- lib/src/cli/cli.dart | 22 ++++++++++------- lib/src/commands/create_command.dart | 36 ++++++++++++++++++++++++---- lib/src/utils.dart | 5 ++++ 4 files changed, 52 insertions(+), 16 deletions(-) diff --git a/lib/src/cli/actions.dart b/lib/src/cli/actions.dart index 266bc00..ba0da54 100644 --- a/lib/src/cli/actions.dart +++ b/lib/src/cli/actions.dart @@ -4,10 +4,10 @@ import 'package:flutter_starter_cli/src/cli/cli.dart'; import 'package:flutter_starter_cli/src/utils.dart'; class Actions { - static Future createProject(String path) async { + static Future createProject(String path, String state) async { Status.start('Project Creating...'); try { - await Cli.cloneProject(path); + await Cli.cloneProject(path, state); Status.complete('Project Created!!!'); } catch (_) { Status.fail('Project Creation Failed!!!'); @@ -39,6 +39,7 @@ class Actions { final contents = await file.readAsString(); file = await file.writeAsString(contents .replaceAll('flutter_starter', name) + .replaceAll('Flutter Starter', name) .replaceAll('A new Flutter project.', desc) .replaceAll('com.example', org) .replaceAll( diff --git a/lib/src/cli/cli.dart b/lib/src/cli/cli.dart index 428ed98..bb115bc 100644 --- a/lib/src/cli/cli.dart +++ b/lib/src/cli/cli.dart @@ -17,14 +17,18 @@ class Cli { return result; } - static Future cloneProject(String path) async { + static _delete(Directory target) async { + await target.delete(recursive: true); + } + + static Future cloneProject(String path, String state) async { await _run( 'git', [ 'clone', 'https://github.com/Geekyants/flutter-starter.git', '--branch', - 'development', + state, '--single-branch', path ], @@ -35,23 +39,23 @@ class Cli { static Future removeFiles(String path, String api, bool test) async { Directory target; target = Directory(join(path, '.git')); - await target.delete(recursive: true); + await _delete(target); if (api == 'dio') { target = Directory(join(path, 'lib', 'api_sdk', 'http')); - await target.delete(recursive: true); + await _delete(target); target = Directory(join(path, 'lib', 'api_sdk', 'http_api_sdk.dart')); - await target.delete(recursive: true); + await _delete(target); } else { target = Directory(join(path, 'lib', 'api_sdk', 'dio')); - await target.delete(recursive: true); + await _delete(target); target = Directory(join(path, 'lib', 'api_sdk', 'dio_api_sdk.dart')); - await target.delete(recursive: true); + await _delete(target); } if (!test) { target = Directory(join(path, 'integration_test')); - await target.delete(recursive: true); + await _delete(target); target = Directory(join(path, 'test')); - await target.delete(recursive: true); + await _delete(target); } } diff --git a/lib/src/commands/create_command.dart b/lib/src/commands/create_command.dart index 415737a..369754d 100644 --- a/lib/src/commands/create_command.dart +++ b/lib/src/commands/create_command.dart @@ -22,6 +22,12 @@ class CreateCommand extends Command { help: 'The organization for the project.', defaultsTo: 'com.example', ) + ..addOption( + 'state', + abbr: 's', + help: 'The state management for the project.', + allowed: [StateManagement.bloc.name, StateManagement.riverpod.name], + ) ..addOption( 'api', abbr: 'a', @@ -58,13 +64,15 @@ class CreateCommand extends Command { final name = _name; final desc = _desc; final org = _org; + final state = _state; final api = _api; - final test = _test; + final test = state == StateManagement.bloc.name ? _test : true; final git = _git; final path = '${Directory.current.path}/$name'; final target = Directory(path); if (!target.existsSync()) await target.create(); - await onGenerateComplete(_logger, path, name, desc, org, api, test, git); + await onGenerateComplete( + _logger, path, name, desc, org, state, api, test, git); _logger.success('Your Project is Ready to Use 🚀'); return ExitCode.success.code; } @@ -80,6 +88,15 @@ class CreateCommand extends Command { return args.first; } + String get _state { + return argResults?['state'] ?? + _logger.chooseOne( + 'Select the State Management', + choices: [StateManagement.bloc.name, StateManagement.riverpod.name], + defaultValue: StateManagement.bloc.name, + ); + } + String get _api { return argResults?['api'] ?? _logger.chooseOne( @@ -121,9 +138,18 @@ class CreateCommand extends Command { ); } - Future onGenerateComplete(Logger logger, String path, String name, - String desc, String org, String api, bool test, bool git) async { - await Actions.createProject(path); + Future onGenerateComplete( + Logger logger, + String path, + String name, + String desc, + String org, + String state, + String api, + bool test, + bool git, + ) async { + await Actions.createProject(path, state); await Actions.generateFiles(path, name, desc, org, api, test); await Actions.setupPackages(path, api, test); await Actions.getPackages(path); diff --git a/lib/src/utils.dart b/lib/src/utils.dart index b8ebbc2..b38b25e 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -5,6 +5,11 @@ enum APIService { http, } +enum StateManagement { + bloc, + riverpod, +} + class Status { static late Progress progress; static late Logger logger; From 5a44fc98769367d4f72df870aeb24ea4a283a2c2 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Fri, 21 Oct 2022 14:04:45 +0530 Subject: [PATCH 18/25] update readme and changelog --- CHANGELOG.md | 4 ++++ README.md | 17 +++++++---------- lib/src/version.dart | 2 +- pubspec.yaml | 4 ++-- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 13a1ea4..8b57d6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 0.0.1-dev.2 + +- Add support for riverpod. + # 0.0.1-dev.1 - Initial development release. diff --git a/README.md b/README.md index 28ab379..6c60eaa 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Out of the box, `Flutter Starter CLI` includes:- - ✅ **State Management** - BLoC - BLoC is a popular design/architectural pattern that is used to separate the logic from the UI. - - Riverpod - (Coming Soon... 🥳) + - RiverPod - A state-management library that catches programming errors at compile time and ensures that the code is testable. - ✅ **API-Services** - Dio - A powerful HTTP client for Dart, which supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, Timeout etc. - Http - A composable, Future-based library for making HTTP requests. @@ -32,7 +32,7 @@ Currently, the `Flutter Starter CLI` depends on the following packages:- | Package | Version | Description | | ------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- | | args | 2.3.1 | Parses raw command-line arguments into a set of options and values. | -| mason_logger | 0.1.3 | Simple logging library for CLI requests. | +| mason_logger | 0.2.1 | Simple logging library for CLI requests. | | path | 1.8.2 | The path package provides common operations for manipulating paths: joining, splitting, normalizing, etc. | | pub_updater | 0.2.1 | A Dart package which enables checking whether packages are up to date and supports updating them. | | flutter_lints | 2.0.1 | This package contains a recommended set of lints for Flutter apps, packages, and plugins to encourage good coding practices. | @@ -67,16 +67,11 @@ $ flutter_starter_cli create ``` ```sh -# Shorthand to create project with git -$ flutter_starter_cli create --api= -g - -# Shorthand to create project with test -$ flutter_starter_cli create --api= -t - -# Shorthand to create project without git and test -$ flutter_starter_cli create --api= +# Shorthand to create project +$ flutter_starter_cli create --state= --api= -g -t # Available API services (dio, http) +# Available State management (bloc, riverpod) ``` ## Complete Usage @@ -93,6 +88,8 @@ Usage: flutter_starter_cli create (defaults to "A New Flutter Project.") --org The organization for the project. (defaults to "com.example") +-s, --state The state management for the project. + [bloc, riverpod] -a, --api The API service for the project. [dio, http] -t, --[no-]test Setup Test Cases. diff --git a/lib/src/version.dart b/lib/src/version.dart index e3724f0..8a9085e 100644 --- a/lib/src/version.dart +++ b/lib/src/version.dart @@ -1 +1 @@ -const packageVersion = '0.0.1-dev.1'; +const packageVersion = '0.0.1-dev.2'; diff --git a/pubspec.yaml b/pubspec.yaml index 4c03283..640c94f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_starter_cli description: A command line tool that provides ease of setting up a Flutter project. -version: 0.0.1-dev.1 +version: 0.0.1-dev.2 homepage: https://flutter-starter.geekyants.com repository: https://github.com/GeekyAnts/flutter-starter-cli @@ -10,7 +10,7 @@ environment: dependencies: args: ^2.3.1 - mason_logger: ^0.2.0 + mason_logger: ^0.2.1 path: ^1.8.2 pub_updater: ^0.2.1 From 6c884e98c78c0326267c83df485fc286b01c6b36 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Tue, 25 Oct 2022 17:56:14 +0530 Subject: [PATCH 19/25] add command to upgrade project --- lib/src/cli/actions.dart | 10 ++++++ lib/src/cli/cli.dart | 8 +++++ lib/src/command_runner.dart | 2 ++ lib/src/commands/commands.dart | 1 + lib/src/commands/project_command.dart | 11 ++++++ lib/src/commands/subcommands/subcommands.dart | 1 + .../subcommands/upgrade_subcommand.dart | 35 +++++++++++++++++++ 7 files changed, 68 insertions(+) create mode 100644 lib/src/commands/project_command.dart create mode 100644 lib/src/commands/subcommands/subcommands.dart create mode 100644 lib/src/commands/subcommands/upgrade_subcommand.dart diff --git a/lib/src/cli/actions.dart b/lib/src/cli/actions.dart index ba0da54..4713d3e 100644 --- a/lib/src/cli/actions.dart +++ b/lib/src/cli/actions.dart @@ -80,4 +80,14 @@ class Actions { } } } + + static Future upgradeProject(String path, bool major) async { + Status.start('Upgrading Project...'); + try { + await Cli.upgradeProject(path, major); + Status.complete('Project Upgraded!!!'); + } catch (_) { + Status.fail('Project Upgrade Failed.'); + } + } } diff --git a/lib/src/cli/cli.dart b/lib/src/cli/cli.dart index bb115bc..2b66c10 100644 --- a/lib/src/cli/cli.dart +++ b/lib/src/cli/cli.dart @@ -97,4 +97,12 @@ class Cli { path: path, ); } + + static Future upgradeProject(String path, bool major) async { + await _run( + 'flutter', + ['pub', 'upgrade', major ? '--major-versions' : ''], + path: path, + ); + } } diff --git a/lib/src/command_runner.dart b/lib/src/command_runner.dart index 4857568..472d2c7 100644 --- a/lib/src/command_runner.dart +++ b/lib/src/command_runner.dart @@ -4,6 +4,7 @@ import 'package:mason_logger/mason_logger.dart'; import 'package:pub_updater/pub_updater.dart'; import 'package:flutter_starter_cli/src/commands/commands.dart'; +import 'package:flutter_starter_cli/src/commands/subcommands/subcommands.dart'; import 'package:flutter_starter_cli/src/utils.dart'; import 'package:flutter_starter_cli/src/version.dart'; @@ -32,6 +33,7 @@ class FlutterStarterCliCommandRunner extends CommandRunner { addCommand(CreateCommand(logger: _logger)); addCommand(UpdateCommand(logger: _logger, pubUpdater: _pubUpdater)); + addCommand(ProjectCommand()..addSubcommand(ProjectUpgradeSubcommand())); } final Logger _logger; diff --git a/lib/src/commands/commands.dart b/lib/src/commands/commands.dart index 46e7f2c..ebaeeba 100644 --- a/lib/src/commands/commands.dart +++ b/lib/src/commands/commands.dart @@ -1,2 +1,3 @@ export 'create_command.dart'; +export 'project_command.dart'; export 'update_command.dart'; diff --git a/lib/src/commands/project_command.dart b/lib/src/commands/project_command.dart new file mode 100644 index 0000000..0da82aa --- /dev/null +++ b/lib/src/commands/project_command.dart @@ -0,0 +1,11 @@ +import 'package:args/command_runner.dart'; + +class ProjectCommand extends Command { + ProjectCommand(); + + @override + String get description => 'Commands related to the Project.'; + + @override + String get name => 'project'; +} diff --git a/lib/src/commands/subcommands/subcommands.dart b/lib/src/commands/subcommands/subcommands.dart new file mode 100644 index 0000000..020fc9a --- /dev/null +++ b/lib/src/commands/subcommands/subcommands.dart @@ -0,0 +1 @@ +export 'upgrade_subcommand.dart'; diff --git a/lib/src/commands/subcommands/upgrade_subcommand.dart b/lib/src/commands/subcommands/upgrade_subcommand.dart new file mode 100644 index 0000000..01e77a4 --- /dev/null +++ b/lib/src/commands/subcommands/upgrade_subcommand.dart @@ -0,0 +1,35 @@ +import 'dart:io'; + +import 'package:args/command_runner.dart'; +import 'package:mason_logger/mason_logger.dart'; + +import 'package:flutter_starter_cli/src/cli/actions.dart'; + +class ProjectUpgradeSubcommand extends Command { + ProjectUpgradeSubcommand() { + argParser.addFlag( + 'major', + abbr: 'm', + help: 'Upgrade major versions.', + defaultsTo: false, + ); + } + + @override + String get description => 'Upgrade the project dependencies.'; + + @override + String get name => 'upgrade'; + + @override + Future run() async { + final path = Directory.current.path; + final major = _major; + await Actions.upgradeProject(path, major); + return ExitCode.success.code; + } + + bool get _major { + return argResults?['major']; + } +} From c72545a79797981535015911cd4db93a24bd93b6 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Fri, 28 Oct 2022 17:01:35 +0530 Subject: [PATCH 20/25] add steps and path --- lib/src/cli/actions.dart | 12 ++++++++++++ lib/src/cli/cli.dart | 4 ++-- lib/src/commands/create_command.dart | 21 ++++++++++++++++++--- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/lib/src/cli/actions.dart b/lib/src/cli/actions.dart index ba0da54..b9ba1b9 100644 --- a/lib/src/cli/actions.dart +++ b/lib/src/cli/actions.dart @@ -4,6 +4,12 @@ import 'package:flutter_starter_cli/src/cli/cli.dart'; import 'package:flutter_starter_cli/src/utils.dart'; class Actions { + static Future _addStep(message) async { + Status.start('Adding $message...'); + await Future.delayed(const Duration(seconds: 1)); + Status.complete('$message Added!!!'); + } + static Future createProject(String path, String state) async { Status.start('Project Creating...'); try { @@ -47,6 +53,12 @@ class Actions { } catch (_) {} }), ); + await _addStep('State Management'); + await _addStep('API Service'); + await _addStep('Localization'); + await _addStep('Routes'); + await _addStep('Themes'); + if (test) await _addStep('Test Cases'); } static Future setupPackages(String path, String api, bool test) async { diff --git a/lib/src/cli/cli.dart b/lib/src/cli/cli.dart index bb115bc..346d0d2 100644 --- a/lib/src/cli/cli.dart +++ b/lib/src/cli/cli.dart @@ -17,8 +17,8 @@ class Cli { return result; } - static _delete(Directory target) async { - await target.delete(recursive: true); + static _delete(Directory target) { + target.deleteSync(recursive: true); } static Future cloneProject(String path, String state) async { diff --git a/lib/src/commands/create_command.dart b/lib/src/commands/create_command.dart index 369754d..99b90a5 100644 --- a/lib/src/commands/create_command.dart +++ b/lib/src/commands/create_command.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:args/command_runner.dart'; import 'package:mason_logger/mason_logger.dart'; +import 'package:path/path.dart'; import 'package:flutter_starter_cli/src/cli/actions.dart'; import 'package:flutter_starter_cli/src/command_runner.dart'; @@ -22,6 +23,11 @@ class CreateCommand extends Command { help: 'The organization for the project.', defaultsTo: 'com.example', ) + ..addOption( + 'path', + abbr: 'p', + help: 'The directory path for the project.', + ) ..addOption( 'state', abbr: 's', @@ -68,12 +74,17 @@ class CreateCommand extends Command { final api = _api; final test = state == StateManagement.bloc.name ? _test : true; final git = _git; - final path = '${Directory.current.path}/$name'; + final dir = _dir(name); + final path = join(Directory.current.path, dir); final target = Directory(path); - if (!target.existsSync()) await target.create(); + if (!target.existsSync()) target.createSync(recursive: true); await onGenerateComplete( _logger, path, name, desc, org, state, api, test, git); - _logger.success('Your Project is Ready to Use 🚀'); + _logger.success('''Your Project is Ready to Use 🚀 +Type:- + \$ cd $dir + \$ flutter run +In order to run your application.'''); return ExitCode.success.code; } @@ -138,6 +149,10 @@ class CreateCommand extends Command { ); } + String _dir(name) { + return argResults?['path'] ?? name; + } + Future onGenerateComplete( Logger logger, String path, From 21ce69845ab1114a92d14e1125da90ebc3404c8d Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Wed, 2 Nov 2022 12:33:08 +0530 Subject: [PATCH 21/25] fix: test case issue --- lib/src/cli/cli.dart | 8 ++++---- lib/src/commands/create_command.dart | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/src/cli/cli.dart b/lib/src/cli/cli.dart index 9abb36a..2b75e77 100644 --- a/lib/src/cli/cli.dart +++ b/lib/src/cli/cli.dart @@ -17,8 +17,8 @@ class Cli { return result; } - static _delete(Directory target) { - target.deleteSync(recursive: true); + static _delete(Directory target, [bool isFile = false]) { + if (isFile || target.existsSync()) target.deleteSync(recursive: true); } static Future cloneProject(String path, String state) async { @@ -44,12 +44,12 @@ class Cli { target = Directory(join(path, 'lib', 'api_sdk', 'http')); await _delete(target); target = Directory(join(path, 'lib', 'api_sdk', 'http_api_sdk.dart')); - await _delete(target); + await _delete(target, true); } else { target = Directory(join(path, 'lib', 'api_sdk', 'dio')); await _delete(target); target = Directory(join(path, 'lib', 'api_sdk', 'dio_api_sdk.dart')); - await _delete(target); + await _delete(target, true); } if (!test) { target = Directory(join(path, 'integration_test')); diff --git a/lib/src/commands/create_command.dart b/lib/src/commands/create_command.dart index 99b90a5..1290894 100644 --- a/lib/src/commands/create_command.dart +++ b/lib/src/commands/create_command.dart @@ -72,7 +72,7 @@ class CreateCommand extends Command { final org = _org; final state = _state; final api = _api; - final test = state == StateManagement.bloc.name ? _test : true; + final test = state == StateManagement.bloc.name ? _test : false; final git = _git; final dir = _dir(name); final path = join(Directory.current.path, dir); From f11007bf6ad8fa7f4cf2eae071d185c2b6af79f7 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Wed, 2 Nov 2022 12:33:36 +0530 Subject: [PATCH 22/25] update readme and changelog --- CHANGELOG.md | 5 +++++ README.md | 10 ++++++++-- lib/src/version.dart | 2 +- pubspec.yaml | 6 +++--- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8b57d6a..44a13a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# 0.0.1-dev.3 + +- Added project upgrade command. +- Added output-directory path option. + # 0.0.1-dev.2 - Add support for riverpod. diff --git a/README.md b/README.md index 6c60eaa..2138174 100644 --- a/README.md +++ b/README.md @@ -32,9 +32,9 @@ Currently, the `Flutter Starter CLI` depends on the following packages:- | Package | Version | Description | | ------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------- | | args | 2.3.1 | Parses raw command-line arguments into a set of options and values. | -| mason_logger | 0.2.1 | Simple logging library for CLI requests. | +| mason_logger | 0.2.2 | Simple logging library for CLI requests. | | path | 1.8.2 | The path package provides common operations for manipulating paths: joining, splitting, normalizing, etc. | -| pub_updater | 0.2.1 | A Dart package which enables checking whether packages are up to date and supports updating them. | +| pub_updater | 0.2.2 | A Dart package which enables checking whether packages are up to date and supports updating them. | | flutter_lints | 2.0.1 | This package contains a recommended set of lints for Flutter apps, packages, and plugins to encourage good coding practices. | ## Getting Started @@ -74,6 +74,11 @@ $ flutter_starter_cli create --state= --api= (defaults to "A New Flutter Project.") --org The organization for the project. (defaults to "com.example") +-p, --path The directory path for the project. -s, --state The state management for the project. [bloc, riverpod] -a, --api The API service for the project. diff --git a/lib/src/version.dart b/lib/src/version.dart index 8a9085e..baa0110 100644 --- a/lib/src/version.dart +++ b/lib/src/version.dart @@ -1 +1 @@ -const packageVersion = '0.0.1-dev.2'; +const packageVersion = '0.0.1-dev.3'; diff --git a/pubspec.yaml b/pubspec.yaml index 640c94f..b239103 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_starter_cli description: A command line tool that provides ease of setting up a Flutter project. -version: 0.0.1-dev.2 +version: 0.0.1-dev.3 homepage: https://flutter-starter.geekyants.com repository: https://github.com/GeekyAnts/flutter-starter-cli @@ -10,9 +10,9 @@ environment: dependencies: args: ^2.3.1 - mason_logger: ^0.2.1 + mason_logger: ^0.2.2 path: ^1.8.2 - pub_updater: ^0.2.1 + pub_updater: ^0.2.2 dev_dependencies: flutter_lints: ^2.0.1 From 3eab7ea367868228af161e888da02df226e90f74 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Fri, 4 Nov 2022 17:25:15 +0530 Subject: [PATCH 23/25] add graphql api service --- lib/src/cli/cli.dart | 73 +++++++++++++++++++--------- lib/src/commands/create_command.dart | 12 ++++- lib/src/utils.dart | 1 + 3 files changed, 62 insertions(+), 24 deletions(-) diff --git a/lib/src/cli/cli.dart b/lib/src/cli/cli.dart index 2b75e77..39e9086 100644 --- a/lib/src/cli/cli.dart +++ b/lib/src/cli/cli.dart @@ -2,6 +2,8 @@ import 'dart:io'; import 'package:path/path.dart'; +import 'package:flutter_starter_cli/src/utils.dart'; + class Cli { static Future _run( String cmd, @@ -17,8 +19,8 @@ class Cli { return result; } - static _delete(Directory target, [bool isFile = false]) { - if (isFile || target.existsSync()) target.deleteSync(recursive: true); + static _delete(target) { + if (target.existsSync()) target.deleteSync(recursive: true); } static Future cloneProject(String path, String state) async { @@ -37,36 +39,63 @@ class Cli { } static Future removeFiles(String path, String api, bool test) async { - Directory target; - target = Directory(join(path, '.git')); - await _delete(target); - if (api == 'dio') { - target = Directory(join(path, 'lib', 'api_sdk', 'http')); - await _delete(target); - target = Directory(join(path, 'lib', 'api_sdk', 'http_api_sdk.dart')); - await _delete(target, true); - } else { - target = Directory(join(path, 'lib', 'api_sdk', 'dio')); - await _delete(target); - target = Directory(join(path, 'lib', 'api_sdk', 'dio_api_sdk.dart')); - await _delete(target, true); + File file; + Directory folder; + folder = Directory(join(path, '.git')); + await _delete(folder); + final String apiSdk = join(path, 'lib', 'api_sdk'); + if (api == APIService.dio.name) { + folder = Directory(join(apiSdk, 'http')); + await _delete(folder); + file = File(join(apiSdk, 'http_api_sdk.dart')); + await _delete(file); + folder = Directory(join(apiSdk, 'graphql')); + await _delete(folder); + file = File(join(apiSdk, 'graphql_api_sdk.dart')); + await _delete(file); + } else if (api == APIService.http.name) { + folder = Directory(join(apiSdk, 'dio')); + await _delete(folder); + file = File(join(apiSdk, 'dio_api_sdk.dart')); + await _delete(file); + folder = Directory(join(apiSdk, 'graphql')); + await _delete(folder); + file = File(join(apiSdk, 'graphql_api_sdk.dart')); + await _delete(file); + } else if (api == APIService.graphql.name) { + folder = Directory(join(apiSdk, 'http')); + await _delete(folder); + file = File(join(apiSdk, 'http_api_sdk.dart')); + await _delete(file); + folder = Directory(join(apiSdk, 'dio')); + await _delete(folder); + file = File(join(apiSdk, 'dio_api_sdk.dart')); + await _delete(file); } if (!test) { - target = Directory(join(path, 'integration_test')); - await _delete(target); - target = Directory(join(path, 'test')); - await _delete(target); + folder = Directory(join(path, 'integration_test')); + await _delete(folder); + folder = Directory(join(path, 'test')); + await _delete(folder); } } static Future removePackages(String path, String api, bool test) async { var args = []; - if (api == 'dio') { + if (api == APIService.dio.name) { args ..add('http') - ..add('http_interceptor'); - } else { + ..add('http_interceptor') + ..add('graphql_flutter'); + } else if (api == APIService.http.name) { + args + ..add('dio') + ..add('retrofit') + ..add('graphql_flutter'); + } else if (api == APIService.graphql.name) { args + ..add('http') + ..add('http_interceptor') ..add('dio') ..add('retrofit'); } diff --git a/lib/src/commands/create_command.dart b/lib/src/commands/create_command.dart index 1290894..df4bb2d 100644 --- a/lib/src/commands/create_command.dart +++ b/lib/src/commands/create_command.dart @@ -38,7 +38,11 @@ class CreateCommand extends Command { 'api', abbr: 'a', help: 'The API service for the project.', - allowed: [APIService.dio.name, APIService.http.name], + allowed: [ + APIService.dio.name, + APIService.http.name, + APIService.graphql.name + ], ) ..addFlag( 'test', @@ -112,7 +116,11 @@ In order to run your application.'''); return argResults?['api'] ?? _logger.chooseOne( 'Select the API Service', - choices: [APIService.dio.name, APIService.http.name], + choices: [ + APIService.dio.name, + APIService.http.name, + APIService.graphql.name + ], defaultValue: APIService.dio.name, ); } diff --git a/lib/src/utils.dart b/lib/src/utils.dart index b38b25e..d37ad7a 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -3,6 +3,7 @@ import 'package:mason_logger/mason_logger.dart'; enum APIService { dio, http, + graphql, } enum StateManagement { From bb58df277d5f6d23f3bbdf24ede1aead81480868 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Mon, 7 Nov 2022 15:59:51 +0530 Subject: [PATCH 24/25] update readme and changelog --- CHANGELOG.md | 4 ++++ README.md | 7 ++++--- flutter-starter-cli.gif | Bin 262644 -> 420696 bytes lib/src/version.dart | 2 +- pubspec.yaml | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44a13a6..092af1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 0.0.1-dev.4 + +- Added graphql api service. + # 0.0.1-dev.3 - Added project upgrade command. diff --git a/README.md b/README.md index 2138174..2b8955a 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ Out of the box, `Flutter Starter CLI` includes:- - ✅ **API-Services** - Dio - A powerful HTTP client for Dart, which supports Interceptors, Global configuration, FormData, Request Cancellation, File downloading, Timeout etc. - Http - A composable, Future-based library for making HTTP requests. + - Graphql - A standalone GraphQL client for Flutter, bringing all the features from a modern GraphQL client to one easy to use package. - ✅ **Basic Setup** - Themes - Themes are used to share colors and font styles throughout an app. - Localization - The project provides support for multiple languages like English, Spanish and French. @@ -70,7 +71,7 @@ $ flutter_starter_cli create # Shorthand to create project $ flutter_starter_cli create --state= --api= -g -t -# Available API services (dio, http) +# Available API services (dio, http, graphql) # Available State management (bloc, riverpod) ``` @@ -97,7 +98,7 @@ Usage: flutter_starter_cli create -s, --state The state management for the project. [bloc, riverpod] -a, --api The API service for the project. - [dio, http] + [dio, http, graphql] -t, --[no-]test Setup Test Cases. -g, --[no-]git Initialize Git Repository. @@ -144,4 +145,4 @@ The complete structure of the newly created project directory looks like this: A demo video to illustrate how to use the `Flutter_Starter_CLI` -![demo](flutter-starter-cli.gif) +![demo](./flutter-starter-cli.gif) diff --git a/flutter-starter-cli.gif b/flutter-starter-cli.gif index bb2bc53694daff17da89886462f4a495516aac01..f7c9008b0d768e70c83da59d42d66c842f5146ff 100644 GIT binary patch literal 420696 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∋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⪼;{ft?3a6 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�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 diff --git a/lib/src/version.dart b/lib/src/version.dart index baa0110..f7e4563 100644 --- a/lib/src/version.dart +++ b/lib/src/version.dart @@ -1 +1 @@ -const packageVersion = '0.0.1-dev.3'; +const packageVersion = '0.0.1-dev.4'; diff --git a/pubspec.yaml b/pubspec.yaml index b239103..f8a8e3a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: flutter_starter_cli description: A command line tool that provides ease of setting up a Flutter project. -version: 0.0.1-dev.3 +version: 0.0.1-dev.4 homepage: https://flutter-starter.geekyants.com repository: https://github.com/GeekyAnts/flutter-starter-cli From f243ddcd0263958bdc1b143fd980b5dd70e91e03 Mon Sep 17 00:00:00 2001 From: Jeevan Joshi Date: Sat, 24 Jun 2023 17:01:36 +0530 Subject: [PATCH 25/25] upgrade project to dart 3.0 --- pubspec.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index f8a8e3a..4de4149 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,13 +6,13 @@ homepage: https://flutter-starter.geekyants.com repository: https://github.com/GeekyAnts/flutter-starter-cli environment: - sdk: ">=2.18.0 <3.0.0" + sdk: ">=3.0.0 <4.0.0" dependencies: - args: ^2.3.1 - mason_logger: ^0.2.2 - path: ^1.8.2 - pub_updater: ^0.2.2 + args: ^2.4.2 + mason_logger: ^0.2.6 + path: ^1.8.3 + pub_updater: ^0.3.1 dev_dependencies: flutter_lints: ^2.0.1