├── README.md ├── app ├── lego_app │ ├── ios │ │ ├── Flutter │ │ │ ├── Debug.xcconfig │ │ │ ├── Release.xcconfig │ │ │ └── AppFrameworkInfo.plist │ │ ├── Runner │ │ │ ├── Runner-Bridging-Header.h │ │ │ ├── Assets.xcassets │ │ │ │ ├── LaunchImage.imageset │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ ├── README.md │ │ │ │ │ └── Contents.json │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ ├── Icon-App-83.5x83.5@2x.png │ │ │ │ │ └── Contents.json │ │ │ ├── AppDelegate.swift │ │ │ ├── Base.lproj │ │ │ │ ├── Main.storyboard │ │ │ │ └── LaunchScreen.storyboard │ │ │ └── Info.plist │ │ ├── Runner.xcodeproj │ │ │ ├── project.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── xcshareddata │ │ │ │ └── xcschemes │ │ │ │ │ └── Runner.xcscheme │ │ │ └── project.pbxproj │ │ ├── Runner.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── .gitignore │ ├── android │ │ ├── gradle.properties │ │ ├── app │ │ │ ├── src │ │ │ │ ├── main │ │ │ │ │ ├── res │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── values │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ │ └── values-night │ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── kotlin │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── lego_style │ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ └── build.gradle │ │ ├── gradle │ │ │ └── wrapper │ │ │ │ └── gradle-wrapper.properties │ │ ├── .gitignore │ │ ├── settings.gradle │ │ └── build.gradle │ ├── lib │ │ ├── di │ │ │ └── di_initializer.dart │ │ └── main.dart │ ├── pubspec.yaml │ ├── README.md │ ├── test │ │ └── widget_test.dart │ ├── .metadata │ └── pubspec.lock ├── lego_configuration │ ├── lib │ │ ├── lego_configuration.dart │ │ └── src │ │ │ ├── feature │ │ │ └── lego_list.dart │ │ │ └── di │ │ │ └── di_initializer.dart │ ├── pubspec.yaml │ └── pubspec.lock └── lego_navigation │ ├── lib │ ├── lego_navigation.dart │ └── src │ │ ├── feature │ │ └── lego_list.dart │ │ ├── di │ │ └── di_initializer.dart │ │ ├── route_information.dart │ │ └── router.dart │ ├── pubspec.yaml │ └── pubspec.lock ├── feature ├── lego_list │ ├── l10n │ │ └── app_en.arb │ ├── lib │ │ ├── src │ │ │ ├── navigation │ │ │ │ └── navigation.dart │ │ │ ├── configurator │ │ │ │ └── configurator.dart │ │ │ ├── domain │ │ │ │ ├── model │ │ │ │ │ └── lego_set.dart │ │ │ │ └── repository │ │ │ │ │ └── lego_repository.dart │ │ │ ├── widget │ │ │ │ ├── localization │ │ │ │ │ ├── app_localizations_en.dart │ │ │ │ │ └── app_localizations.dart │ │ │ │ ├── bloc │ │ │ │ │ ├── lego_list_state.dart │ │ │ │ │ └── lego_list_cubit.dart │ │ │ │ └── lego_list_page.dart │ │ │ ├── di │ │ │ │ └── di_initializer.dart │ │ │ └── flow │ │ │ │ └── lego_list_flow.dart │ │ └── lego_list.dart │ ├── l10n.yaml │ ├── test │ │ ├── step │ │ │ ├── i_tap_text.dart │ │ │ ├── i_see_text.dart │ │ │ ├── i_see_widget.dart │ │ │ ├── navigation_to_universe_is_requested.dart │ │ │ └── the_flow_is_running_with_configuration.dart │ │ ├── utils │ │ │ └── mocks.dart │ │ ├── lego_list.feature │ │ └── lego_list_test.dart │ ├── pubspec.yaml │ └── pubspec.lock └── harry_potter │ ├── lib │ ├── harry_potter.dart │ └── src │ │ ├── widget │ │ ├── hp_list │ │ │ ├── localization │ │ │ │ ├── translations │ │ │ │ │ ├── hp.i69n.yaml │ │ │ │ │ └── hp.i69n.dart │ │ │ │ └── hp_localizations.dart │ │ │ ├── bloc │ │ │ │ ├── hp_state.dart │ │ │ │ ├── hp_cubit.dart │ │ │ │ └── hp_state.freezed.dart │ │ │ └── hp_list_page.dart │ │ └── hp_details │ │ │ └── hp_details_page.dart │ │ ├── domain │ │ ├── model │ │ │ ├── character.dart │ │ │ └── character.freezed.dart │ │ └── repository │ │ │ └── hp_repository.dart │ │ ├── di │ │ ├── di_initializer.dart │ │ └── di_initializer.config.dart │ │ └── flow │ │ ├── harry_potter_state.dart │ │ ├── harry_potter_flow.dart │ │ └── harry_potter_state.freezed.dart │ ├── pubspec.yaml │ └── pubspec.lock ├── core └── design_system │ ├── lib │ ├── design_system.dart │ └── src │ │ └── theme.dart │ ├── pubspec.yaml │ └── pubspec.lock ├── .gitignore └── analysis_options.yaml /README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/lego_app/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /app/lego_app/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /feature/lego_list/l10n/app_en.arb: -------------------------------------------------------------------------------- 1 | { 2 | "legoWorlds": "Lego worlds" 3 | } -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /core/design_system/lib/design_system.dart: -------------------------------------------------------------------------------- 1 | export 'package:design_system/src/theme.dart'; 2 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/harry_potter.dart: -------------------------------------------------------------------------------- 1 | export 'package:harry_potter/src/flow/harry_potter_flow.dart'; 2 | -------------------------------------------------------------------------------- /app/lego_configuration/lib/lego_configuration.dart: -------------------------------------------------------------------------------- 1 | export 'package:lego_configuration/src/di/di_initializer.dart'; 2 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/widget/hp_list/localization/translations/hp.i69n.yaml: -------------------------------------------------------------------------------- 1 | chooseCharacter: 'Choose a character' -------------------------------------------------------------------------------- /app/lego_app/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/navigation/navigation.dart: -------------------------------------------------------------------------------- 1 | abstract class LegoListNavigation { 2 | void openUniverse(String id); 3 | } 4 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/configurator/configurator.dart: -------------------------------------------------------------------------------- 1 | abstract class LegoListConfigurator { 2 | bool get gridRepresentation; 3 | } 4 | -------------------------------------------------------------------------------- /feature/lego_list/l10n.yaml: -------------------------------------------------------------------------------- 1 | arb-dir: l10n 2 | template-arb-file: app_en.arb 3 | synthetic-package: false 4 | output-dir: ./lib/src/widget/localization -------------------------------------------------------------------------------- /core/design_system/lib/src/theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | final legoTheme = ThemeData( 4 | primarySwatch: Colors.yellow, 5 | ); 6 | -------------------------------------------------------------------------------- /app/lego_navigation/lib/lego_navigation.dart: -------------------------------------------------------------------------------- 1 | export 'package:lego_navigation/src/di/di_initializer.dart'; 2 | export 'package:lego_navigation/src/route_information.dart'; 3 | -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/olexale/lego_style_demo/HEAD/app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /feature/lego_list/lib/lego_list.dart: -------------------------------------------------------------------------------- 1 | export 'package:lego_list/src/flow/lego_list_flow.dart'; 2 | export 'package:lego_list/src/configurator/configurator.dart'; 3 | export 'package:lego_list/src/navigation/navigation.dart'; 4 | -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/kotlin/com/example/lego_style/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.lego_style 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /feature/lego_list/test/step/i_tap_text.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_test/flutter_test.dart'; 2 | 3 | Future iTapText(WidgetTester tester, String text) async { 4 | await tester.tap(find.text(text)); 5 | await tester.pump(); 6 | } 7 | -------------------------------------------------------------------------------- /feature/lego_list/test/step/i_see_text.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter_test/flutter_test.dart'; 4 | 5 | FutureOr iSeeText(WidgetTester tester, String text) { 6 | expect(find.text(text), findsOneWidget); 7 | } 8 | -------------------------------------------------------------------------------- /app/lego_app/lib/di/di_initializer.dart: -------------------------------------------------------------------------------- 1 | import 'package:lego_configuration/lego_configuration.dart' as configuration; 2 | import 'package:lego_navigation/lego_navigation.dart' as navigation; 3 | 4 | void initialize() { 5 | configuration.initialize(); 6 | navigation.initialize(); 7 | } 8 | -------------------------------------------------------------------------------- /app/lego_app/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip 7 | -------------------------------------------------------------------------------- /app/lego_configuration/lib/src/feature/lego_list.dart: -------------------------------------------------------------------------------- 1 | import 'package:lego_list/lego_list.dart'; 2 | 3 | class LegoListConfiguratorImpl implements LegoListConfigurator { 4 | @override 5 | bool get gridRepresentation => 6 | const String.fromEnvironment('GRID_UI', defaultValue: 'false') == 'true'; 7 | } 8 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/domain/model/lego_set.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | 3 | class LegoSet extends Equatable { 4 | const LegoSet(this.id, this.name); 5 | 6 | final String id; 7 | final String name; 8 | 9 | @override 10 | List get props => [id, name]; 11 | } 12 | -------------------------------------------------------------------------------- /feature/lego_list/test/step/i_see_widget.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter_test/flutter_test.dart'; 4 | 5 | /// Example: Then I see {SomeWidget} widget 6 | FutureOr iSeeWidget( 7 | WidgetTester tester, 8 | Type type, 9 | ) { 10 | expect(find.byType(type), findsOneWidget); 11 | } 12 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/lego_navigation/lib/src/feature/lego_list.dart: -------------------------------------------------------------------------------- 1 | import 'package:lego_list/lego_list.dart'; 2 | import 'package:lego_navigation/src/router.dart'; 3 | 4 | class LegoListNavigationImpl implements LegoListNavigation { 5 | @override 6 | void openUniverse(String id) { 7 | router.push('/universe/$id'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/lego_navigation/lib/src/di/di_initializer.dart: -------------------------------------------------------------------------------- 1 | import 'package:get_it/get_it.dart'; 2 | import 'package:lego_list/lego_list.dart'; 3 | import 'package:lego_navigation/src/feature/lego_list.dart'; 4 | 5 | void initialize() { 6 | GetIt.I.registerFactory( 7 | () => LegoListNavigationImpl(), 8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/lego_configuration/lib/src/di/di_initializer.dart: -------------------------------------------------------------------------------- 1 | import 'package:get_it/get_it.dart'; 2 | import 'package:lego_configuration/src/feature/lego_list.dart'; 3 | import 'package:lego_list/lego_list.dart'; 4 | 5 | void initialize() { 6 | GetIt.I.registerFactory( 7 | () => LegoListConfiguratorImpl(), 8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/domain/model/character.dart: -------------------------------------------------------------------------------- 1 | import 'package:freezed_annotation/freezed_annotation.dart'; 2 | 3 | part 'character.freezed.dart'; 4 | 5 | @freezed 6 | class Character with _$Character { 7 | const factory Character({ 8 | required String name, 9 | required String biography, 10 | }) = _Character; 11 | } 12 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/lego_app/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/widget/localization/app_localizations_en.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | import 'app_localizations.dart'; 5 | 6 | /// The translations for English (`en`). 7 | class AppLocalizationsEn extends AppLocalizations { 8 | AppLocalizationsEn([String locale = 'en']) : super(locale); 9 | 10 | @override 11 | String get legoWorlds => 'Lego worlds'; 12 | } 13 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/di/di_initializer.dart: -------------------------------------------------------------------------------- 1 | import 'package:get_it/get_it.dart'; 2 | import 'package:harry_potter/src/di/di_initializer.config.dart'; 3 | import 'package:injectable/injectable.dart'; 4 | 5 | @injectableInit 6 | void initialize() { 7 | GetIt.I.pushNewScope(); 8 | $initGetIt(GetIt.I); 9 | } 10 | 11 | void deinitialize() { 12 | GetIt.I.popScope(); 13 | } 14 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/widget/hp_list/bloc/hp_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:freezed_annotation/freezed_annotation.dart'; 2 | import 'package:harry_potter/src/domain/model/character.dart'; 3 | 4 | part 'hp_state.freezed.dart'; 5 | 6 | @freezed 7 | class HPState with _$HPState { 8 | const factory HPState({ 9 | @Default([]) List characters, 10 | }) = _HPState; 11 | } 12 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | 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. -------------------------------------------------------------------------------- /app/lego_configuration/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: lego_configuration 2 | description: Configuration for Lego demo 3 | publish_to: 'none' 4 | 5 | version: 1.0.0+1 6 | 7 | environment: 8 | sdk: ">=2.17.6 <3.0.0" 9 | 10 | dependencies: 11 | flutter: 12 | sdk: flutter 13 | get_it: ^7.2.0 14 | lego_list: 15 | path: ../../feature/lego_list 16 | 17 | dev_dependencies: 18 | 19 | flutter_lints: ^2.0.0 20 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/domain/repository/lego_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:lego_list/src/domain/model/lego_set.dart'; 2 | 3 | class LegoRepository { 4 | List getLegoSets() { 5 | return const [ 6 | LegoSet('star_wars', 'Lego Star Wars'), 7 | LegoSet('marvel', 'Lego Marvel'), 8 | LegoSet('hp', 'Lego Harry Potter'), 9 | LegoSet('dc', 'Lego DC'), 10 | ]; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /core/design_system/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: design_system 2 | description: The Design System for Lego demo 3 | publish_to: 'none' 4 | 5 | version: 1.0.0+1 6 | 7 | environment: 8 | sdk: ">=2.17.6 <3.0.0" 9 | 10 | dependencies: 11 | flutter: 12 | sdk: flutter 13 | 14 | dev_dependencies: 15 | flutter_test: 16 | sdk: flutter 17 | 18 | flutter_lints: ^2.0.0 19 | 20 | flutter: 21 | uses-material-design: true 22 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/flow/harry_potter_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:freezed_annotation/freezed_annotation.dart'; 2 | import 'package:harry_potter/src/domain/model/character.dart'; 3 | 4 | part 'harry_potter_state.freezed.dart'; 5 | 6 | @freezed 7 | class HarryPotterState with _$HarryPotterState { 8 | const factory HarryPotterState({ 9 | Character? selectedCharacter, 10 | }) = _HarryPotterState; 11 | } 12 | -------------------------------------------------------------------------------- /app/lego_navigation/lib/src/route_information.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:lego_navigation/src/router.dart'; 3 | 4 | RouteInformationProvider get routeInformationProvider => 5 | router.routeInformationProvider; 6 | 7 | RouteInformationParser get routeInformationParser => 8 | router.routeInformationParser; 9 | 10 | RouterDelegate get routerDelegate => router.routerDelegate; 11 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/widget/bloc/lego_list_state.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:lego_list/src/domain/model/lego_set.dart'; 3 | 4 | class LegoListState extends Equatable { 5 | const LegoListState({ 6 | required this.legoSets, 7 | required this.grid, 8 | }); 9 | 10 | final List legoSets; 11 | final bool grid; 12 | 13 | @override 14 | List get props => [legoSets, grid]; 15 | } 16 | -------------------------------------------------------------------------------- /app/lego_app/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/lego_app/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/lego_navigation/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: lego_navigation 2 | description: Navigation for Lego demo 3 | publish_to: 'none' 4 | 5 | version: 1.0.0+1 6 | 7 | environment: 8 | sdk: ">=2.17.6 <3.0.0" 9 | 10 | dependencies: 11 | flutter: 12 | sdk: flutter 13 | get_it: ^7.2.0 14 | go_router: ^4.2.8 15 | harry_potter: 16 | path: ../../feature/harry_potter 17 | lego_list: 18 | path: ../../feature/lego_list 19 | 20 | dev_dependencies: 21 | 22 | flutter_lints: ^2.0.0 23 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/widget/hp_list/bloc/hp_cubit.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_bloc/flutter_bloc.dart'; 2 | import 'package:harry_potter/src/domain/repository/hp_repository.dart'; 3 | import 'package:harry_potter/src/widget/hp_list/bloc/hp_state.dart'; 4 | import 'package:injectable/injectable.dart'; 5 | 6 | @injectable 7 | class HPCubit extends Cubit { 8 | HPCubit(HPRepository repository) 9 | : super(HPState(characters: repository.getCharacters())); 10 | } 11 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /feature/lego_list/test/step/navigation_to_universe_is_requested.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:flutter_test/flutter_test.dart'; 4 | import 'package:get_it/get_it.dart'; 5 | import 'package:lego_list/src/navigation/navigation.dart'; 6 | import 'package:mocktail/mocktail.dart'; 7 | 8 | FutureOr navigationToUniverseIsRequested( 9 | WidgetTester tester, 10 | String id, 11 | ) { 12 | final mock = GetIt.I(); 13 | verify(() => mock.openUniverse(id)).called(1); 14 | } 15 | -------------------------------------------------------------------------------- /app/lego_app/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /feature/lego_list/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: lego_list 2 | description: Lego List for Lego demo 3 | publish_to: 'none' 4 | 5 | version: 1.0.0+1 6 | 7 | environment: 8 | sdk: ">=2.17.6 <3.0.0" 9 | 10 | dependencies: 11 | equatable: ^2.0.5 12 | flutter: 13 | sdk: flutter 14 | flutter_bloc: ^8.1.1 15 | flutter_localizations: 16 | sdk: flutter 17 | get_it: ^7.2.0 18 | intl: ^0.17.0 19 | 20 | dev_dependencies: 21 | bdd_widget_test: ^1.4.2 22 | build_runner: ^2.2.0 23 | flutter_test: 24 | sdk: flutter 25 | flutter_lints: ^2.0.0 26 | mocktail: ^0.3.0 27 | -------------------------------------------------------------------------------- /app/lego_app/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: lego_app 2 | description: A new Flutter project. 3 | publish_to: 'none' 4 | 5 | version: 1.0.0+1 6 | 7 | environment: 8 | sdk: ">=2.17.6 <3.0.0" 9 | 10 | dependencies: 11 | design_system: 12 | path: ../../core/design_system 13 | flutter: 14 | sdk: flutter 15 | lego_configuration: 16 | path: ../lego_configuration 17 | lego_navigation: 18 | path: ../lego_navigation 19 | 20 | dev_dependencies: 21 | flutter_test: 22 | sdk: flutter 23 | 24 | flutter_lints: ^2.0.0 25 | 26 | flutter: 27 | uses-material-design: true 28 | -------------------------------------------------------------------------------- /feature/harry_potter/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: harry_potter 2 | description: Harry Potter for Lego demo 3 | publish_to: 'none' 4 | 5 | version: 1.0.0+1 6 | 7 | environment: 8 | sdk: ">=2.17.6 <3.0.0" 9 | 10 | dependencies: 11 | flow_builder: ^0.0.9 12 | flutter: 13 | sdk: flutter 14 | flutter_bloc: ^8.1.1 15 | flutter_localizations: 16 | sdk: flutter 17 | freezed_annotation: ^2.1.0 18 | get_it: ^7.2.0 19 | i69n: ^2.1.0 20 | injectable: ^1.5.3 21 | 22 | dev_dependencies: 23 | build_runner: ^2.2.0 24 | flutter_lints: ^2.0.0 25 | freezed: ^2.1.0+1 26 | injectable_generator: ^1.5.4 -------------------------------------------------------------------------------- /app/lego_navigation/lib/src/router.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:go_router/go_router.dart'; 3 | import 'package:harry_potter/harry_potter.dart'; 4 | import 'package:lego_list/lego_list.dart'; 5 | 6 | final router = GoRouter( 7 | routes: [ 8 | GoRoute( 9 | path: '/', 10 | builder: (context, state) => const LegoListFlow(), 11 | ), 12 | GoRoute( 13 | path: '/universe/hp', 14 | builder: (context, state) => const HarryPotterFlow(), 15 | ), 16 | ], 17 | errorBuilder: (context, state) => Scaffold( 18 | appBar: AppBar(), 19 | ), 20 | ); 21 | -------------------------------------------------------------------------------- /app/lego_app/README.md: -------------------------------------------------------------------------------- 1 | # lego_style 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /feature/lego_list/test/utils/mocks.dart: -------------------------------------------------------------------------------- 1 | import 'package:lego_list/src/configurator/configurator.dart'; 2 | import 'package:lego_list/src/navigation/navigation.dart'; 3 | import 'package:mocktail/mocktail.dart'; 4 | 5 | class MockLegoListConfigurator extends Mock implements LegoListConfigurator {} 6 | 7 | LegoListConfigurator createLegoListConfigurator(bool isGrid) { 8 | final mock = MockLegoListConfigurator(); 9 | when(() => mock.gridRepresentation).thenReturn(isGrid); 10 | return mock; 11 | } 12 | 13 | class MockLegoListNavigation extends Mock implements LegoListNavigation {} 14 | 15 | LegoListNavigation createLegoListNavigation() => MockLegoListNavigation(); 16 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/di/di_initializer.dart: -------------------------------------------------------------------------------- 1 | import 'package:get_it/get_it.dart'; 2 | import 'package:lego_list/src/domain/repository/lego_repository.dart'; 3 | import 'package:lego_list/src/widget/bloc/lego_list_cubit.dart'; 4 | 5 | const _initializedMark = 'lego_list_initialized'; 6 | 7 | void initialize() { 8 | final isInitialized = 9 | GetIt.I.isRegistered(instanceName: _initializedMark); 10 | if (!isInitialized) { 11 | GetIt.I.registerSingleton(true, instanceName: _initializedMark); 12 | GetIt.I.registerFactory(() => LegoRepository()); 13 | GetIt.I 14 | .registerFactory(() => LegoListCubit(GetIt.I(), GetIt.I(), GetIt.I())); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/widget/hp_details/hp_details_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:harry_potter/src/domain/model/character.dart'; 3 | 4 | class HpDetailsPage extends StatelessWidget { 5 | const HpDetailsPage({ 6 | super.key, 7 | required this.character, 8 | }); 9 | 10 | final Character character; 11 | 12 | @override 13 | Widget build(BuildContext context) => Scaffold( 14 | appBar: AppBar(title: Text(character.name)), 15 | body: SingleChildScrollView( 16 | child: Padding( 17 | padding: const EdgeInsets.all(8.0), 18 | child: Text(character.biography), 19 | )), 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /app/lego_app/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:design_system/design_system.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:lego_app/di/di_initializer.dart'; 4 | import 'package:lego_navigation/lego_navigation.dart' as nav; 5 | 6 | void main() { 7 | initialize(); 8 | runApp(const MyApp()); 9 | } 10 | 11 | class MyApp extends StatelessWidget { 12 | const MyApp({super.key}); 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return MaterialApp.router( 17 | theme: legoTheme, 18 | routeInformationProvider: nav.routeInformationProvider, 19 | routeInformationParser: nav.routeInformationParser, 20 | routerDelegate: nav.routerDelegate, 21 | ); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/lego_app/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /feature/lego_list/test/step/the_flow_is_running_with_configuration.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | import 'package:get_it/get_it.dart'; 4 | import 'package:lego_list/src/flow/lego_list_flow.dart'; 5 | 6 | import '../utils/mocks.dart'; 7 | 8 | Future theFlowIsRunningWithConfiguration( 9 | WidgetTester tester, 10 | String config, 11 | ) async { 12 | final getIt = GetIt.I; 13 | 14 | await getIt.reset(); 15 | getIt.registerSingleton(createLegoListConfigurator(config == 'grid')); 16 | getIt.registerSingleton(createLegoListNavigation()); 17 | 18 | await tester.pumpWidget(const MaterialApp(home: LegoListFlow())); 19 | await tester.pumpAndSettle(); 20 | } 21 | -------------------------------------------------------------------------------- /app/lego_app/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.6.10' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:7.1.2' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | google() 17 | mavenCentral() 18 | } 19 | } 20 | 21 | rootProject.buildDir = '../build' 22 | subprojects { 23 | project.buildDir = "${rootProject.buildDir}/${project.name}" 24 | } 25 | subprojects { 26 | project.evaluationDependsOn(':app') 27 | } 28 | 29 | task clean(type: Delete) { 30 | delete rootProject.buildDir 31 | } 32 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/widget/bloc/lego_list_cubit.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_bloc/flutter_bloc.dart'; 2 | import 'package:lego_list/lego_list.dart'; 3 | import 'package:lego_list/src/domain/model/lego_set.dart'; 4 | import 'package:lego_list/src/domain/repository/lego_repository.dart'; 5 | import 'package:lego_list/src/widget/bloc/lego_list_state.dart'; 6 | 7 | class LegoListCubit extends Cubit { 8 | LegoListCubit( 9 | LegoRepository repository, 10 | LegoListConfigurator configurator, 11 | this._navigation, 12 | ) : super( 13 | LegoListState( 14 | legoSets: repository.getLegoSets(), 15 | grid: configurator.gridRepresentation, 16 | ), 17 | ); 18 | 19 | final LegoListNavigation _navigation; 20 | 21 | void onLegoSetSelected(LegoSet legoSet) { 22 | _navigation.openUniverse(legoSet.id); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/lego_app/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 9.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .packages 31 | .pub-cache/ 32 | .pub/ 33 | **/build/ 34 | 35 | # Web related 36 | generated_plugin_registrant.dart 37 | 38 | # Symbolication related 39 | app.*.symbols 40 | 41 | # Obfuscation related 42 | app.*.map.json 43 | 44 | # Android Studio will place build artifacts here 45 | app/*/android/app/debug 46 | app/*/android/app/profile 47 | app/*/android/app/release 48 | -------------------------------------------------------------------------------- /feature/lego_list/test/lego_list.feature: -------------------------------------------------------------------------------- 1 | Feature: Lego List 2 | In order to know more about Lego worlds 3 | As a user 4 | I want browse the list of Lego collections 5 | 6 | Scenario: Lego world list is shown 7 | Given the flow is running with {'list'} configuration 8 | Then I see {ListView} widget 9 | And I see {'Lego Star Wars'} text 10 | And I see {'Lego Marvel'} text 11 | And I see {'Lego Harry Potter'} text 12 | And I see {'Lego DC'} text 13 | 14 | Scenario: Lego world grid is shown 15 | Given the flow is running with {'grid'} configuration 16 | Then I see {GridView} widget 17 | And I see {'Lego Star Wars'} text 18 | And I see {'Lego Marvel'} text 19 | And I see {'Lego Harry Potter'} text 20 | And I see {'Lego DC'} text 21 | 22 | Scenario: I can see world's details 23 | Given the flow is running with {'list'} configuration 24 | When I tap {'Lego Harry Potter'} text 25 | Then navigation to {'hp'} universe is requested 26 | 27 | -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/di/di_initializer.config.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | 3 | // ************************************************************************** 4 | // InjectableConfigGenerator 5 | // ************************************************************************** 6 | 7 | // ignore_for_file: no_leading_underscores_for_library_prefixes 8 | import 'package:get_it/get_it.dart' as _i1; 9 | import 'package:injectable/injectable.dart' as _i2; 10 | 11 | import '../domain/repository/hp_repository.dart' as _i3; 12 | import '../widget/hp_list/bloc/hp_cubit.dart' 13 | as _i4; // ignore_for_file: unnecessary_lambdas 14 | 15 | // ignore_for_file: lines_longer_than_80_chars 16 | /// initializes the registration of provided dependencies inside of [GetIt] 17 | _i1.GetIt $initGetIt(_i1.GetIt get, 18 | {String? environment, _i2.EnvironmentFilter? environmentFilter}) { 19 | final gh = _i2.GetItHelper(get, environment, environmentFilter); 20 | gh.factory<_i3.HPRepository>(() => _i3.HPRepository()); 21 | gh.factory<_i4.HPCubit>(() => _i4.HPCubit(get<_i3.HPRepository>())); 22 | return get; 23 | } 24 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/flow/lego_list_flow.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_bloc/flutter_bloc.dart'; 3 | import 'package:get_it/get_it.dart'; 4 | import 'package:lego_list/src/di/di_initializer.dart'; 5 | import 'package:lego_list/src/widget/bloc/lego_list_cubit.dart'; 6 | import 'package:lego_list/src/widget/lego_list_page.dart'; 7 | import 'package:lego_list/src/widget/localization/app_localizations.dart'; 8 | 9 | class LegoListFlow extends StatefulWidget { 10 | const LegoListFlow({super.key}); 11 | 12 | @override 13 | State createState() => _LegoListFlowState(); 14 | } 15 | 16 | class _LegoListFlowState extends State { 17 | @override 18 | void initState() { 19 | super.initState(); 20 | initialize(); 21 | } 22 | 23 | @override 24 | Widget build(BuildContext context) => Localizations.override( 25 | context: context, 26 | delegates: AppLocalizations.localizationsDelegates, 27 | child: BlocProvider( 28 | create: (_) => GetIt.I.get(), 29 | child: const LegoListPage(), 30 | ), 31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /app/lego_app/test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility in the flutter_test package. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:lego_app/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(const MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/widget/hp_list/localization/hp_localizations.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:harry_potter/src/widget/hp_list/localization/translations/hp.i69n.dart'; 3 | 4 | final _translations = { 5 | 'en': () => const Hp(), 6 | }; 7 | 8 | class HpLocalizations { 9 | const HpLocalizations(this.translations); 10 | 11 | final Hp translations; 12 | 13 | static const LocalizationsDelegate delegate = 14 | _HpLocalizationsDelegate(); 15 | 16 | static final List supportedLocales = 17 | _translations.keys.map((x) => Locale(x)).toList(); 18 | 19 | static Future load(Locale locale) => 20 | Future.value(HpLocalizations(_translations[locale.languageCode]!())); 21 | 22 | static Hp of(BuildContext context) => 23 | Localizations.of(context, HpLocalizations)!.translations; 24 | } 25 | 26 | class _HpLocalizationsDelegate extends LocalizationsDelegate { 27 | const _HpLocalizationsDelegate(); 28 | 29 | @override 30 | bool isSupported(Locale locale) => 31 | _translations.keys.contains(locale.languageCode); 32 | 33 | @override 34 | Future load(Locale locale) => HpLocalizations.load(locale); 35 | 36 | @override 37 | bool shouldReload(LocalizationsDelegate old) => false; 38 | } 39 | -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | # This file configures the analyzer, which statically analyzes Dart code to 2 | # check for errors, warnings, and lints. 3 | # 4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled 5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be 6 | # invoked from the command line by running `flutter analyze`. 7 | 8 | # The following line activates a set of recommended lints for Flutter apps, 9 | # packages, and plugins designed to encourage good coding practices. 10 | include: package:flutter_lints/flutter.yaml 11 | 12 | linter: 13 | # The lint rules applied to this project can be customized in the 14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml` 15 | # included above or to enable additional rules. A list of all available lints 16 | # and their documentation is published at 17 | # https://dart-lang.github.io/linter/lints/index.html. 18 | # 19 | # Instead of disabling a lint rule for the entire project in the 20 | # section below, it can also be suppressed for a single line of code 21 | # or a specific dart file by using the `// ignore: name_of_lint` and 22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file 23 | # producing the lint. 24 | rules: 25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule 26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule 27 | 28 | # Additional information about this file can be found at 29 | # https://dart.dev/guides/language/analysis-options 30 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/flow/harry_potter_flow.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flow_builder/flow_builder.dart'; 3 | import 'package:harry_potter/src/di/di_initializer.dart'; 4 | import 'package:harry_potter/src/flow/harry_potter_state.dart'; 5 | import 'package:harry_potter/src/widget/hp_details/hp_details_page.dart'; 6 | import 'package:harry_potter/src/widget/hp_list/hp_list_page.dart'; 7 | import 'package:harry_potter/src/widget/hp_list/localization/hp_localizations.dart'; 8 | 9 | class HarryPotterFlow extends StatefulWidget { 10 | const HarryPotterFlow({super.key}); 11 | 12 | @override 13 | State createState() => _HarryPotterFlowState(); 14 | } 15 | 16 | class _HarryPotterFlowState extends State { 17 | @override 18 | void initState() { 19 | super.initState(); 20 | initialize(); 21 | } 22 | 23 | @override 24 | void dispose() { 25 | deinitialize(); 26 | super.dispose(); 27 | } 28 | 29 | @override 30 | Widget build(BuildContext context) => Localizations.override( 31 | context: context, 32 | delegates: const [HpLocalizations.delegate], 33 | child: FlowBuilder( 34 | state: const HarryPotterState(), 35 | onGeneratePages: (state, pages) { 36 | return [ 37 | const MaterialPage(child: HpListPage()), 38 | if (state.selectedCharacter != null) 39 | MaterialPage( 40 | child: HpDetailsPage(character: state.selectedCharacter!), 41 | ), 42 | ]; 43 | }, 44 | )); 45 | } 46 | -------------------------------------------------------------------------------- /feature/lego_list/test/lego_list_test.dart: -------------------------------------------------------------------------------- 1 | // GENERATED CODE - DO NOT MODIFY BY HAND 2 | // ignore_for_file: unused_import, directives_ordering 3 | 4 | import 'package:flutter/material.dart'; 5 | import 'package:flutter_test/flutter_test.dart'; 6 | 7 | import './step/the_flow_is_running_with_configuration.dart'; 8 | import './step/i_see_widget.dart'; 9 | import './step/i_see_text.dart'; 10 | import './step/i_tap_text.dart'; 11 | import './step/navigation_to_universe_is_requested.dart'; 12 | 13 | void main() { 14 | group('''Lego List''', () { 15 | testWidgets('''Lego world list is shown''', (tester) async { 16 | await theFlowIsRunningWithConfiguration(tester, 'list'); 17 | await iSeeWidget(tester, ListView); 18 | await iSeeText(tester, 'Lego Star Wars'); 19 | await iSeeText(tester, 'Lego Marvel'); 20 | await iSeeText(tester, 'Lego Harry Potter'); 21 | await iSeeText(tester, 'Lego DC'); 22 | }); 23 | testWidgets('''Lego world grid is shown''', (tester) async { 24 | await theFlowIsRunningWithConfiguration(tester, 'grid'); 25 | await iSeeWidget(tester, GridView); 26 | await iSeeText(tester, 'Lego Star Wars'); 27 | await iSeeText(tester, 'Lego Marvel'); 28 | await iSeeText(tester, 'Lego Harry Potter'); 29 | await iSeeText(tester, 'Lego DC'); 30 | }); 31 | testWidgets('''I can see world's details''', (tester) async { 32 | await theFlowIsRunningWithConfiguration(tester, 'list'); 33 | await iTapText(tester, 'Lego Harry Potter'); 34 | await navigationToUniverseIsRequested(tester, 'hp'); 35 | }); 36 | }); 37 | } 38 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/widget/hp_list/hp_list_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flow_builder/flow_builder.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:flutter_bloc/flutter_bloc.dart'; 4 | import 'package:get_it/get_it.dart'; 5 | import 'package:harry_potter/src/flow/harry_potter_state.dart'; 6 | import 'package:harry_potter/src/widget/hp_list/bloc/hp_cubit.dart'; 7 | import 'package:harry_potter/src/widget/hp_list/bloc/hp_state.dart'; 8 | import 'package:harry_potter/src/widget/hp_list/localization/hp_localizations.dart'; 9 | 10 | class HpListPage extends StatelessWidget { 11 | const HpListPage({super.key}); 12 | 13 | @override 14 | Widget build(BuildContext context) => Scaffold( 15 | appBar: AppBar( 16 | leading: BackButton( 17 | onPressed: () => context.flow().complete()), 18 | title: Text(HpLocalizations.of(context).chooseCharacter), 19 | ), 20 | body: BlocProvider( 21 | create: (_) => GetIt.I.get(), 22 | child: BlocBuilder(builder: (context, state) { 23 | return ListView.builder( 24 | itemBuilder: (context, index) { 25 | return ListTile( 26 | title: Text(state.characters[index].name), 27 | onTap: () => context.flow().update( 28 | (s) => s.copyWith( 29 | selectedCharacter: state.characters[index]), 30 | ), 31 | ); 32 | }, 33 | itemCount: state.characters.length, 34 | ); 35 | }))); 36 | } 37 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/widget/hp_list/localization/translations/hp.i69n.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: unused_element, unused_field, camel_case_types, annotate_overrides, prefer_single_quotes 2 | // GENERATED FILE, do not edit! 3 | import 'package:i69n/i69n.dart' as i69n; 4 | 5 | String get _languageCode => 'en'; 6 | String get _localeName => 'en'; 7 | 8 | String _plural(int count, 9 | {String? zero, 10 | String? one, 11 | String? two, 12 | String? few, 13 | String? many, 14 | String? other}) => 15 | i69n.plural(count, _languageCode, 16 | zero: zero, one: one, two: two, few: few, many: many, other: other); 17 | String _ordinal(int count, 18 | {String? zero, 19 | String? one, 20 | String? two, 21 | String? few, 22 | String? many, 23 | String? other}) => 24 | i69n.ordinal(count, _languageCode, 25 | zero: zero, one: one, two: two, few: few, many: many, other: other); 26 | String _cardinal(int count, 27 | {String? zero, 28 | String? one, 29 | String? two, 30 | String? few, 31 | String? many, 32 | String? other}) => 33 | i69n.cardinal(count, _languageCode, 34 | zero: zero, one: one, two: two, few: few, many: many, other: other); 35 | 36 | class Hp implements i69n.I69nMessageBundle { 37 | const Hp(); 38 | String get chooseCharacter => "Choose a character"; 39 | Object operator [](String key) { 40 | var index = key.indexOf('.'); 41 | if (index > 0) { 42 | return (this[key.substring(0, index)] 43 | as i69n.I69nMessageBundle)[key.substring(index + 1)]; 44 | } 45 | switch (key) { 46 | case 'chooseCharacter': 47 | return chooseCharacter; 48 | default: 49 | return key; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /app/lego_app/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 15 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /app/lego_app/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled. 5 | 6 | version: 7 | revision: f1875d570e39de09040c8f79aa13cc56baab8db1 8 | channel: stable 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 17 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 18 | - platform: android 19 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 20 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 21 | - platform: ios 22 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 23 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 24 | - platform: linux 25 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 26 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 27 | - platform: macos 28 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 29 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 30 | - platform: web 31 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 32 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 33 | - platform: windows 34 | create_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 35 | base_revision: f1875d570e39de09040c8f79aa13cc56baab8db1 36 | 37 | # User provided section 38 | 39 | # List of Local paths (relative to this file) that should be 40 | # ignored by the migrate tool. 41 | # 42 | # Files that are not part of the templates will be ignored by default. 43 | unmanaged_files: 44 | - 'lib/main.dart' 45 | - 'ios/Runner.xcodeproj/project.pbxproj' 46 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | Lego Style 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | lego_style 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | $(FLUTTER_BUILD_NAME) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | $(FLUTTER_BUILD_NUMBER) 25 | LSRequiresIPhoneOS 26 | 27 | UILaunchStoryboardName 28 | LaunchScreen 29 | UIMainStoryboardFile 30 | Main 31 | UISupportedInterfaceOrientations 32 | 33 | UIInterfaceOrientationPortrait 34 | UIInterfaceOrientationLandscapeLeft 35 | UIInterfaceOrientationLandscapeRight 36 | 37 | UISupportedInterfaceOrientations~ipad 38 | 39 | UIInterfaceOrientationPortrait 40 | UIInterfaceOrientationPortraitUpsideDown 41 | UIInterfaceOrientationLandscapeLeft 42 | UIInterfaceOrientationLandscapeRight 43 | 44 | UIViewControllerBasedStatusBarAppearance 45 | 46 | CADisableMinimumFrameDurationOnPhone 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/widget/lego_list_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_bloc/flutter_bloc.dart'; 3 | import 'package:lego_list/src/widget/bloc/lego_list_cubit.dart'; 4 | import 'package:lego_list/src/widget/bloc/lego_list_state.dart'; 5 | import 'package:lego_list/src/widget/localization/app_localizations.dart'; 6 | 7 | class LegoListPage extends StatelessWidget { 8 | const LegoListPage({super.key}); 9 | 10 | @override 11 | Widget build(BuildContext context) => Scaffold( 12 | appBar: AppBar(title: Text(AppLocalizations.of(context)!.legoWorlds)), 13 | body: BlocBuilder( 14 | builder: (context, state) => 15 | state.grid ? const _Grid() : const _List(), 16 | ), 17 | ); 18 | } 19 | 20 | class _List extends StatelessWidget { 21 | const _List(); 22 | 23 | @override 24 | Widget build(BuildContext context) { 25 | final legoSets = context.watch().state.legoSets; 26 | return ListView.builder( 27 | itemBuilder: (context, index) { 28 | return ListTile( 29 | title: Text(legoSets[index].name), 30 | onTap: () => 31 | context.read().onLegoSetSelected(legoSets[index]), 32 | ); 33 | }, 34 | itemCount: legoSets.length, 35 | ); 36 | } 37 | } 38 | 39 | class _Grid extends StatelessWidget { 40 | const _Grid(); 41 | 42 | @override 43 | Widget build(BuildContext context) { 44 | final legoSets = context.watch().state.legoSets; 45 | return GridView.builder( 46 | gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( 47 | crossAxisCount: 2, 48 | ), 49 | itemCount: legoSets.length, 50 | itemBuilder: (context, index) { 51 | return InkWell( 52 | onTap: () => context 53 | .read() 54 | .onLegoSetSelected(legoSets[index]), 55 | child: Card( 56 | color: Theme.of(context).colorScheme.secondary, 57 | child: Center(child: Text(legoSets[index].name)), 58 | ), 59 | ); 60 | }); 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /app/lego_app/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | android { 29 | compileSdkVersion flutter.compileSdkVersion 30 | ndkVersion flutter.ndkVersion 31 | 32 | compileOptions { 33 | sourceCompatibility JavaVersion.VERSION_1_8 34 | targetCompatibility JavaVersion.VERSION_1_8 35 | } 36 | 37 | kotlinOptions { 38 | jvmTarget = '1.8' 39 | } 40 | 41 | sourceSets { 42 | main.java.srcDirs += 'src/main/kotlin' 43 | } 44 | 45 | defaultConfig { 46 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 47 | applicationId "com.example.lego_style" 48 | // You can update the following values to match your application needs. 49 | // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. 50 | minSdkVersion flutter.minSdkVersion 51 | targetSdkVersion flutter.targetSdkVersion 52 | versionCode flutterVersionCode.toInteger() 53 | versionName flutterVersionName 54 | } 55 | 56 | buildTypes { 57 | release { 58 | // TODO: Add your own signing config for the release build. 59 | // Signing with the debug keys for now, so `flutter run --release` works. 60 | signingConfig signingConfigs.debug 61 | } 62 | } 63 | } 64 | 65 | flutter { 66 | source '../..' 67 | } 68 | 69 | dependencies { 70 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 71 | } 72 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 52 | 54 | 60 | 61 | 62 | 63 | 69 | 71 | 77 | 78 | 79 | 80 | 82 | 83 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /app/lego_configuration/pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "2.9.0" 11 | bloc: 12 | dependency: transitive 13 | description: 14 | name: bloc 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "8.1.0" 18 | characters: 19 | dependency: transitive 20 | description: 21 | name: characters 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.2.0" 25 | clock: 26 | dependency: transitive 27 | description: 28 | name: clock 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.1.0" 32 | collection: 33 | dependency: transitive 34 | description: 35 | name: collection 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.16.0" 39 | equatable: 40 | dependency: transitive 41 | description: 42 | name: equatable 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "2.0.5" 46 | flutter: 47 | dependency: "direct main" 48 | description: flutter 49 | source: sdk 50 | version: "0.0.0" 51 | flutter_bloc: 52 | dependency: transitive 53 | description: 54 | name: flutter_bloc 55 | url: "https://pub.dartlang.org" 56 | source: hosted 57 | version: "8.1.1" 58 | flutter_lints: 59 | dependency: "direct dev" 60 | description: 61 | name: flutter_lints 62 | url: "https://pub.dartlang.org" 63 | source: hosted 64 | version: "2.0.1" 65 | flutter_localizations: 66 | dependency: transitive 67 | description: flutter 68 | source: sdk 69 | version: "0.0.0" 70 | get_it: 71 | dependency: "direct main" 72 | description: 73 | name: get_it 74 | url: "https://pub.dartlang.org" 75 | source: hosted 76 | version: "7.2.0" 77 | intl: 78 | dependency: transitive 79 | description: 80 | name: intl 81 | url: "https://pub.dartlang.org" 82 | source: hosted 83 | version: "0.17.0" 84 | lego_list: 85 | dependency: "direct main" 86 | description: 87 | path: "../../feature/lego_list" 88 | relative: true 89 | source: path 90 | version: "1.0.0+1" 91 | lints: 92 | dependency: transitive 93 | description: 94 | name: lints 95 | url: "https://pub.dartlang.org" 96 | source: hosted 97 | version: "2.0.0" 98 | material_color_utilities: 99 | dependency: transitive 100 | description: 101 | name: material_color_utilities 102 | url: "https://pub.dartlang.org" 103 | source: hosted 104 | version: "0.1.4" 105 | meta: 106 | dependency: transitive 107 | description: 108 | name: meta 109 | url: "https://pub.dartlang.org" 110 | source: hosted 111 | version: "1.7.0" 112 | nested: 113 | dependency: transitive 114 | description: 115 | name: nested 116 | url: "https://pub.dartlang.org" 117 | source: hosted 118 | version: "1.0.0" 119 | path: 120 | dependency: transitive 121 | description: 122 | name: path 123 | url: "https://pub.dartlang.org" 124 | source: hosted 125 | version: "1.8.1" 126 | provider: 127 | dependency: transitive 128 | description: 129 | name: provider 130 | url: "https://pub.dartlang.org" 131 | source: hosted 132 | version: "6.0.3" 133 | sky_engine: 134 | dependency: transitive 135 | description: flutter 136 | source: sdk 137 | version: "0.0.99" 138 | vector_math: 139 | dependency: transitive 140 | description: 141 | name: vector_math 142 | url: "https://pub.dartlang.org" 143 | source: hosted 144 | version: "2.1.2" 145 | sdks: 146 | dart: ">=2.17.6 <3.0.0" 147 | flutter: ">=1.16.0" 148 | -------------------------------------------------------------------------------- /core/design_system/pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "2.8.2" 11 | boolean_selector: 12 | dependency: transitive 13 | description: 14 | name: boolean_selector 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "2.1.0" 18 | characters: 19 | dependency: transitive 20 | description: 21 | name: characters 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "1.2.0" 25 | charcode: 26 | dependency: transitive 27 | description: 28 | name: charcode 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.3.1" 32 | clock: 33 | dependency: transitive 34 | description: 35 | name: clock 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.1.0" 39 | collection: 40 | dependency: transitive 41 | description: 42 | name: collection 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "1.16.0" 46 | fake_async: 47 | dependency: transitive 48 | description: 49 | name: fake_async 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "1.3.0" 53 | flutter: 54 | dependency: "direct main" 55 | description: flutter 56 | source: sdk 57 | version: "0.0.0" 58 | flutter_lints: 59 | dependency: "direct dev" 60 | description: 61 | name: flutter_lints 62 | url: "https://pub.dartlang.org" 63 | source: hosted 64 | version: "2.0.1" 65 | flutter_test: 66 | dependency: "direct dev" 67 | description: flutter 68 | source: sdk 69 | version: "0.0.0" 70 | lints: 71 | dependency: transitive 72 | description: 73 | name: lints 74 | url: "https://pub.dartlang.org" 75 | source: hosted 76 | version: "2.0.0" 77 | matcher: 78 | dependency: transitive 79 | description: 80 | name: matcher 81 | url: "https://pub.dartlang.org" 82 | source: hosted 83 | version: "0.12.11" 84 | material_color_utilities: 85 | dependency: transitive 86 | description: 87 | name: material_color_utilities 88 | url: "https://pub.dartlang.org" 89 | source: hosted 90 | version: "0.1.4" 91 | meta: 92 | dependency: transitive 93 | description: 94 | name: meta 95 | url: "https://pub.dartlang.org" 96 | source: hosted 97 | version: "1.7.0" 98 | path: 99 | dependency: transitive 100 | description: 101 | name: path 102 | url: "https://pub.dartlang.org" 103 | source: hosted 104 | version: "1.8.1" 105 | sky_engine: 106 | dependency: transitive 107 | description: flutter 108 | source: sdk 109 | version: "0.0.99" 110 | source_span: 111 | dependency: transitive 112 | description: 113 | name: source_span 114 | url: "https://pub.dartlang.org" 115 | source: hosted 116 | version: "1.8.2" 117 | stack_trace: 118 | dependency: transitive 119 | description: 120 | name: stack_trace 121 | url: "https://pub.dartlang.org" 122 | source: hosted 123 | version: "1.10.0" 124 | stream_channel: 125 | dependency: transitive 126 | description: 127 | name: stream_channel 128 | url: "https://pub.dartlang.org" 129 | source: hosted 130 | version: "2.1.0" 131 | string_scanner: 132 | dependency: transitive 133 | description: 134 | name: string_scanner 135 | url: "https://pub.dartlang.org" 136 | source: hosted 137 | version: "1.1.0" 138 | term_glyph: 139 | dependency: transitive 140 | description: 141 | name: term_glyph 142 | url: "https://pub.dartlang.org" 143 | source: hosted 144 | version: "1.2.0" 145 | test_api: 146 | dependency: transitive 147 | description: 148 | name: test_api 149 | url: "https://pub.dartlang.org" 150 | source: hosted 151 | version: "0.4.9" 152 | vector_math: 153 | dependency: transitive 154 | description: 155 | name: vector_math 156 | url: "https://pub.dartlang.org" 157 | source: hosted 158 | version: "2.1.2" 159 | sdks: 160 | dart: ">=2.17.6 <3.0.0" 161 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/widget/hp_list/bloc/hp_state.freezed.dart: -------------------------------------------------------------------------------- 1 | // coverage:ignore-file 2 | // GENERATED CODE - DO NOT MODIFY BY HAND 3 | // ignore_for_file: type=lint 4 | // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target 5 | 6 | part of 'hp_state.dart'; 7 | 8 | // ************************************************************************** 9 | // FreezedGenerator 10 | // ************************************************************************** 11 | 12 | T _$identity(T value) => value; 13 | 14 | final _privateConstructorUsedError = UnsupportedError( 15 | 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); 16 | 17 | /// @nodoc 18 | mixin _$HPState { 19 | List get characters => throw _privateConstructorUsedError; 20 | 21 | @JsonKey(ignore: true) 22 | $HPStateCopyWith get copyWith => throw _privateConstructorUsedError; 23 | } 24 | 25 | /// @nodoc 26 | abstract class $HPStateCopyWith<$Res> { 27 | factory $HPStateCopyWith(HPState value, $Res Function(HPState) then) = 28 | _$HPStateCopyWithImpl<$Res>; 29 | $Res call({List characters}); 30 | } 31 | 32 | /// @nodoc 33 | class _$HPStateCopyWithImpl<$Res> implements $HPStateCopyWith<$Res> { 34 | _$HPStateCopyWithImpl(this._value, this._then); 35 | 36 | final HPState _value; 37 | // ignore: unused_field 38 | final $Res Function(HPState) _then; 39 | 40 | @override 41 | $Res call({ 42 | Object? characters = freezed, 43 | }) { 44 | return _then(_value.copyWith( 45 | characters: characters == freezed 46 | ? _value.characters 47 | : characters // ignore: cast_nullable_to_non_nullable 48 | as List, 49 | )); 50 | } 51 | } 52 | 53 | /// @nodoc 54 | abstract class _$$_HPStateCopyWith<$Res> implements $HPStateCopyWith<$Res> { 55 | factory _$$_HPStateCopyWith( 56 | _$_HPState value, $Res Function(_$_HPState) then) = 57 | __$$_HPStateCopyWithImpl<$Res>; 58 | @override 59 | $Res call({List characters}); 60 | } 61 | 62 | /// @nodoc 63 | class __$$_HPStateCopyWithImpl<$Res> extends _$HPStateCopyWithImpl<$Res> 64 | implements _$$_HPStateCopyWith<$Res> { 65 | __$$_HPStateCopyWithImpl(_$_HPState _value, $Res Function(_$_HPState) _then) 66 | : super(_value, (v) => _then(v as _$_HPState)); 67 | 68 | @override 69 | _$_HPState get _value => super._value as _$_HPState; 70 | 71 | @override 72 | $Res call({ 73 | Object? characters = freezed, 74 | }) { 75 | return _then(_$_HPState( 76 | characters: characters == freezed 77 | ? _value._characters 78 | : characters // ignore: cast_nullable_to_non_nullable 79 | as List, 80 | )); 81 | } 82 | } 83 | 84 | /// @nodoc 85 | 86 | class _$_HPState implements _HPState { 87 | const _$_HPState({final List characters = const []}) 88 | : _characters = characters; 89 | 90 | final List _characters; 91 | @override 92 | @JsonKey() 93 | List get characters { 94 | // ignore: implicit_dynamic_type 95 | return EqualUnmodifiableListView(_characters); 96 | } 97 | 98 | @override 99 | String toString() { 100 | return 'HPState(characters: $characters)'; 101 | } 102 | 103 | @override 104 | bool operator ==(dynamic other) { 105 | return identical(this, other) || 106 | (other.runtimeType == runtimeType && 107 | other is _$_HPState && 108 | const DeepCollectionEquality() 109 | .equals(other._characters, _characters)); 110 | } 111 | 112 | @override 113 | int get hashCode => Object.hash( 114 | runtimeType, const DeepCollectionEquality().hash(_characters)); 115 | 116 | @JsonKey(ignore: true) 117 | @override 118 | _$$_HPStateCopyWith<_$_HPState> get copyWith => 119 | __$$_HPStateCopyWithImpl<_$_HPState>(this, _$identity); 120 | } 121 | 122 | abstract class _HPState implements HPState { 123 | const factory _HPState({final List characters}) = _$_HPState; 124 | 125 | @override 126 | List get characters; 127 | @override 128 | @JsonKey(ignore: true) 129 | _$$_HPStateCopyWith<_$_HPState> get copyWith => 130 | throw _privateConstructorUsedError; 131 | } 132 | -------------------------------------------------------------------------------- /feature/lego_list/lib/src/widget/localization/app_localizations.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'dart:async'; 3 | 4 | import 'package:flutter/foundation.dart'; 5 | import 'package:flutter/widgets.dart'; 6 | import 'package:flutter_localizations/flutter_localizations.dart'; 7 | import 'package:intl/intl.dart' as intl; 8 | 9 | import 'app_localizations_en.dart'; 10 | 11 | /// Callers can lookup localized strings with an instance of AppLocalizations returned 12 | /// by `AppLocalizations.of(context)`. 13 | /// 14 | /// Applications need to include `AppLocalizations.delegate()` in their app's 15 | /// localizationDelegates list, and the locales they support in the app's 16 | /// supportedLocales list. For example: 17 | /// 18 | /// ``` 19 | /// import 'localization/app_localizations.dart'; 20 | /// 21 | /// return MaterialApp( 22 | /// localizationsDelegates: AppLocalizations.localizationsDelegates, 23 | /// supportedLocales: AppLocalizations.supportedLocales, 24 | /// home: MyApplicationHome(), 25 | /// ); 26 | /// ``` 27 | /// 28 | /// ## Update pubspec.yaml 29 | /// 30 | /// Please make sure to update your pubspec.yaml to include the following 31 | /// packages: 32 | /// 33 | /// ``` 34 | /// dependencies: 35 | /// # Internationalization support. 36 | /// flutter_localizations: 37 | /// sdk: flutter 38 | /// intl: any # Use the pinned version from flutter_localizations 39 | /// 40 | /// # rest of dependencies 41 | /// ``` 42 | /// 43 | /// ## iOS Applications 44 | /// 45 | /// iOS applications define key application metadata, including supported 46 | /// locales, in an Info.plist file that is built into the application bundle. 47 | /// To configure the locales supported by your app, you’ll need to edit this 48 | /// file. 49 | /// 50 | /// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. 51 | /// Then, in the Project Navigator, open the Info.plist file under the Runner 52 | /// project’s Runner folder. 53 | /// 54 | /// Next, select the Information Property List item, select Add Item from the 55 | /// Editor menu, then select Localizations from the pop-up menu. 56 | /// 57 | /// Select and expand the newly-created Localizations item then, for each 58 | /// locale your application supports, add a new item and select the locale 59 | /// you wish to add from the pop-up menu in the Value field. This list should 60 | /// be consistent with the languages listed in the AppLocalizations.supportedLocales 61 | /// property. 62 | abstract class AppLocalizations { 63 | AppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); 64 | 65 | final String localeName; 66 | 67 | static AppLocalizations? of(BuildContext context) { 68 | return Localizations.of(context, AppLocalizations); 69 | } 70 | 71 | static const LocalizationsDelegate delegate = _AppLocalizationsDelegate(); 72 | 73 | /// A list of this localizations delegate along with the default localizations 74 | /// delegates. 75 | /// 76 | /// Returns a list of localizations delegates containing this delegate along with 77 | /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, 78 | /// and GlobalWidgetsLocalizations.delegate. 79 | /// 80 | /// Additional delegates can be added by appending to this list in 81 | /// MaterialApp. This list does not have to be used at all if a custom list 82 | /// of delegates is preferred or required. 83 | static const List> localizationsDelegates = >[ 84 | delegate, 85 | GlobalMaterialLocalizations.delegate, 86 | GlobalCupertinoLocalizations.delegate, 87 | GlobalWidgetsLocalizations.delegate, 88 | ]; 89 | 90 | /// A list of this localizations delegate's supported locales. 91 | static const List supportedLocales = [ 92 | Locale('en') 93 | ]; 94 | 95 | /// No description provided for @legoWorlds. 96 | /// 97 | /// In en, this message translates to: 98 | /// **'Lego worlds'** 99 | String get legoWorlds; 100 | } 101 | 102 | class _AppLocalizationsDelegate extends LocalizationsDelegate { 103 | const _AppLocalizationsDelegate(); 104 | 105 | @override 106 | Future load(Locale locale) { 107 | return SynchronousFuture(lookupAppLocalizations(locale)); 108 | } 109 | 110 | @override 111 | bool isSupported(Locale locale) => ['en'].contains(locale.languageCode); 112 | 113 | @override 114 | bool shouldReload(_AppLocalizationsDelegate old) => false; 115 | } 116 | 117 | AppLocalizations lookupAppLocalizations(Locale locale) { 118 | 119 | 120 | // Lookup logic when only language code is specified. 121 | switch (locale.languageCode) { 122 | case 'en': return AppLocalizationsEn(); 123 | } 124 | 125 | throw FlutterError( 126 | 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' 127 | 'an issue with the localizations generation tool. Please file an issue ' 128 | 'on GitHub with a reproducible sample app and the gen-l10n configuration ' 129 | 'that was used.' 130 | ); 131 | } 132 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/domain/model/character.freezed.dart: -------------------------------------------------------------------------------- 1 | // coverage:ignore-file 2 | // GENERATED CODE - DO NOT MODIFY BY HAND 3 | // ignore_for_file: type=lint 4 | // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target 5 | 6 | part of 'character.dart'; 7 | 8 | // ************************************************************************** 9 | // FreezedGenerator 10 | // ************************************************************************** 11 | 12 | T _$identity(T value) => value; 13 | 14 | final _privateConstructorUsedError = UnsupportedError( 15 | 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); 16 | 17 | /// @nodoc 18 | mixin _$Character { 19 | String get name => throw _privateConstructorUsedError; 20 | String get biography => throw _privateConstructorUsedError; 21 | 22 | @JsonKey(ignore: true) 23 | $CharacterCopyWith get copyWith => 24 | throw _privateConstructorUsedError; 25 | } 26 | 27 | /// @nodoc 28 | abstract class $CharacterCopyWith<$Res> { 29 | factory $CharacterCopyWith(Character value, $Res Function(Character) then) = 30 | _$CharacterCopyWithImpl<$Res>; 31 | $Res call({String name, String biography}); 32 | } 33 | 34 | /// @nodoc 35 | class _$CharacterCopyWithImpl<$Res> implements $CharacterCopyWith<$Res> { 36 | _$CharacterCopyWithImpl(this._value, this._then); 37 | 38 | final Character _value; 39 | // ignore: unused_field 40 | final $Res Function(Character) _then; 41 | 42 | @override 43 | $Res call({ 44 | Object? name = freezed, 45 | Object? biography = freezed, 46 | }) { 47 | return _then(_value.copyWith( 48 | name: name == freezed 49 | ? _value.name 50 | : name // ignore: cast_nullable_to_non_nullable 51 | as String, 52 | biography: biography == freezed 53 | ? _value.biography 54 | : biography // ignore: cast_nullable_to_non_nullable 55 | as String, 56 | )); 57 | } 58 | } 59 | 60 | /// @nodoc 61 | abstract class _$$_CharacterCopyWith<$Res> implements $CharacterCopyWith<$Res> { 62 | factory _$$_CharacterCopyWith( 63 | _$_Character value, $Res Function(_$_Character) then) = 64 | __$$_CharacterCopyWithImpl<$Res>; 65 | @override 66 | $Res call({String name, String biography}); 67 | } 68 | 69 | /// @nodoc 70 | class __$$_CharacterCopyWithImpl<$Res> extends _$CharacterCopyWithImpl<$Res> 71 | implements _$$_CharacterCopyWith<$Res> { 72 | __$$_CharacterCopyWithImpl( 73 | _$_Character _value, $Res Function(_$_Character) _then) 74 | : super(_value, (v) => _then(v as _$_Character)); 75 | 76 | @override 77 | _$_Character get _value => super._value as _$_Character; 78 | 79 | @override 80 | $Res call({ 81 | Object? name = freezed, 82 | Object? biography = freezed, 83 | }) { 84 | return _then(_$_Character( 85 | name: name == freezed 86 | ? _value.name 87 | : name // ignore: cast_nullable_to_non_nullable 88 | as String, 89 | biography: biography == freezed 90 | ? _value.biography 91 | : biography // ignore: cast_nullable_to_non_nullable 92 | as String, 93 | )); 94 | } 95 | } 96 | 97 | /// @nodoc 98 | 99 | class _$_Character implements _Character { 100 | const _$_Character({required this.name, required this.biography}); 101 | 102 | @override 103 | final String name; 104 | @override 105 | final String biography; 106 | 107 | @override 108 | String toString() { 109 | return 'Character(name: $name, biography: $biography)'; 110 | } 111 | 112 | @override 113 | bool operator ==(dynamic other) { 114 | return identical(this, other) || 115 | (other.runtimeType == runtimeType && 116 | other is _$_Character && 117 | const DeepCollectionEquality().equals(other.name, name) && 118 | const DeepCollectionEquality().equals(other.biography, biography)); 119 | } 120 | 121 | @override 122 | int get hashCode => Object.hash( 123 | runtimeType, 124 | const DeepCollectionEquality().hash(name), 125 | const DeepCollectionEquality().hash(biography)); 126 | 127 | @JsonKey(ignore: true) 128 | @override 129 | _$$_CharacterCopyWith<_$_Character> get copyWith => 130 | __$$_CharacterCopyWithImpl<_$_Character>(this, _$identity); 131 | } 132 | 133 | abstract class _Character implements Character { 134 | const factory _Character( 135 | {required final String name, 136 | required final String biography}) = _$_Character; 137 | 138 | @override 139 | String get name; 140 | @override 141 | String get biography; 142 | @override 143 | @JsonKey(ignore: true) 144 | _$$_CharacterCopyWith<_$_Character> get copyWith => 145 | throw _privateConstructorUsedError; 146 | } 147 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/domain/repository/hp_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:harry_potter/src/domain/model/character.dart'; 2 | import 'package:injectable/injectable.dart'; 3 | 4 | @injectable 5 | class HPRepository { 6 | List getCharacters() => _characters; 7 | Character getCharacter(String name) { 8 | return Character( 9 | name: name, 10 | biography: '$name is a character in Harry Potter', 11 | ); 12 | } 13 | 14 | final List _characters = const [ 15 | Character( 16 | name: 'Harry Potter', 17 | biography: 18 | '''Harry James Potter is a fictional character and the titular protagonist in J. K. Rowling's series of eponymous novels. The majority of the books' plot covers seven years in the life of the orphan Harry, who, on his eleventh birthday, learns he is a wizard. Thus, he attends Hogwarts School of Witchcraft and Wizardry to practise magic under the guidance of the kindly headmaster Albus Dumbledore and other school professors along with his best friends Ron Weasley and Hermione Granger. Harry also discovers that he is already famous throughout the novel's magical community, and that his fate is tied with that of Lord Voldemort – the internationally feared Dark Wizard and murderer of his parents, Lily and James. The book and film series revolve around Harry's struggle to adapt to the wizarding world and defeat Voldemort.'''), 19 | Character( 20 | name: 'Ron Weasley', 21 | biography: 22 | '''Ronald Bilius Weasley is a fictional character in J. K. Rowling's Harry Potter fantasy novel series. His first appearance was in the first book of the series, Harry Potter and the Philosopher's Stone, as the best friend of Harry Potter and Hermione Granger. He is a member of the Weasley family, a pure blood family that resides in "The Burrow" outside Ottery St. Catchpole. Being the only member of the three main characters raised in magical society, he also provides insight into the Wizarding World's magical customs and traditions. Along with Harry and Hermione, he is a member of Gryffindor house and is present for most of the action throughout the series.'''), 23 | Character( 24 | name: 'Hermione Granger', 25 | biography: 26 | '''Hermione Jean Granger is a fictional character in J. K. Rowling's Harry Potter series. She first appears in the novel Harry Potter and the Philosopher's Stone (1997), as a new student on her way to Hogwarts. After Harry and Ron save her from a mountain troll in the girls' restroom, she becomes best friends with them and often uses her quick wit, deft recall, and encyclopaedic knowledge to lend aid in dire situations. Rowling has stated that Hermione resembles herself as a young girl, with her insecurity and fear of failure.'''), 27 | Character( 28 | name: 'Albus Dumbledore', 29 | biography: 30 | '''Albus Percival Wulfric Brian Dumbledore is a fictional character in J. K. Rowling's Harry Potter series. For most of the series, he is the headmaster of the wizarding school Hogwarts. As part of his backstory, it is revealed that he is the founder and leader of the Order of the Phoenix, an organisation dedicated to fighting Lord Voldemort, the main antagonist of the series. 31 | 32 | Dumbledore was portrayed by Richard Harris in the film adaptations of Harry Potter and the Philosopher's Stone (2001) and Harry Potter and the Chamber of Secrets (2002), however Harris died from Hodgkin's disease in August 2002 before the release of Chamber of Secrets three months later on November 15th. After Harris' death, Michael Gambon portrayed Dumbledore in the six remaining Harry Potter films from 2004 to 2011. Jude Law portrayed Dumbledore as a middle-aged man in the prequel films Fantastic Beasts: The Crimes of Grindelwald (2018) and Fantastic Beasts: The Secrets of Dumbledore (2022). 33 | 34 | Rowling stated she chose the name Dumbledore, which is a dialectal word for "bumblebee", because of Dumbledore's love of music: she imagined him walking around "humming to himself a lot"'''), 35 | Character( 36 | name: 'Lord Voldemort', 37 | biography: 38 | '''Lord Voldemort is a sobriquet for Tom Marvolo Riddle, a character and the main antagonist in J. K. Rowling's series of Harry Potter novels. The character first appeared in Harry Potter and the Philosopher's Stone, which was published in 1997, and returned either in person or in flashbacks in each book and its film adaptation in the series except the third, Harry Potter and the Prisoner of Azkaban, in which he is only mentioned. 39 | 40 | Voldemort is the archenemy of Harry Potter, who according to a prophecy has "the power to vanquish the Dark Lord". He attempts to murder the boy, but instead kills his parents, Lily and James Potter, and leaves Harry with a scar on his forehead in the shape of a lightning bolt. Nearly every witch or wizard dares not utter his name and refers to him instead with such monikers as "You-Know-Who", "He Who Must Not Be Named", or "the Dark Lord". Voldemort's obsession with blood purity signifies his aim to rid the wizarding world of Muggle (non-magical) heritage and to conquer both worlds, Muggle and wizarding, to achieve pure-blood dominance. Through his mother's family, he is the last descendant of the wizard Salazar Slytherin, one of the four founders of Hogwarts School of Witchcraft and Wizardry. He is the leader of the Death Eaters, a group of evil wizards and witches dedicated to ridding the Wizarding World of Muggles and establishing Voldemort as its supreme ruler.'''), 41 | ]; 42 | } 43 | -------------------------------------------------------------------------------- /feature/harry_potter/lib/src/flow/harry_potter_state.freezed.dart: -------------------------------------------------------------------------------- 1 | // coverage:ignore-file 2 | // GENERATED CODE - DO NOT MODIFY BY HAND 3 | // ignore_for_file: type=lint 4 | // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target 5 | 6 | part of 'harry_potter_state.dart'; 7 | 8 | // ************************************************************************** 9 | // FreezedGenerator 10 | // ************************************************************************** 11 | 12 | T _$identity(T value) => value; 13 | 14 | final _privateConstructorUsedError = UnsupportedError( 15 | 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); 16 | 17 | /// @nodoc 18 | mixin _$HarryPotterState { 19 | Character? get selectedCharacter => throw _privateConstructorUsedError; 20 | 21 | @JsonKey(ignore: true) 22 | $HarryPotterStateCopyWith get copyWith => 23 | throw _privateConstructorUsedError; 24 | } 25 | 26 | /// @nodoc 27 | abstract class $HarryPotterStateCopyWith<$Res> { 28 | factory $HarryPotterStateCopyWith( 29 | HarryPotterState value, $Res Function(HarryPotterState) then) = 30 | _$HarryPotterStateCopyWithImpl<$Res>; 31 | $Res call({Character? selectedCharacter}); 32 | 33 | $CharacterCopyWith<$Res>? get selectedCharacter; 34 | } 35 | 36 | /// @nodoc 37 | class _$HarryPotterStateCopyWithImpl<$Res> 38 | implements $HarryPotterStateCopyWith<$Res> { 39 | _$HarryPotterStateCopyWithImpl(this._value, this._then); 40 | 41 | final HarryPotterState _value; 42 | // ignore: unused_field 43 | final $Res Function(HarryPotterState) _then; 44 | 45 | @override 46 | $Res call({ 47 | Object? selectedCharacter = freezed, 48 | }) { 49 | return _then(_value.copyWith( 50 | selectedCharacter: selectedCharacter == freezed 51 | ? _value.selectedCharacter 52 | : selectedCharacter // ignore: cast_nullable_to_non_nullable 53 | as Character?, 54 | )); 55 | } 56 | 57 | @override 58 | $CharacterCopyWith<$Res>? get selectedCharacter { 59 | if (_value.selectedCharacter == null) { 60 | return null; 61 | } 62 | 63 | return $CharacterCopyWith<$Res>(_value.selectedCharacter!, (value) { 64 | return _then(_value.copyWith(selectedCharacter: value)); 65 | }); 66 | } 67 | } 68 | 69 | /// @nodoc 70 | abstract class _$$_HarryPotterStateCopyWith<$Res> 71 | implements $HarryPotterStateCopyWith<$Res> { 72 | factory _$$_HarryPotterStateCopyWith( 73 | _$_HarryPotterState value, $Res Function(_$_HarryPotterState) then) = 74 | __$$_HarryPotterStateCopyWithImpl<$Res>; 75 | @override 76 | $Res call({Character? selectedCharacter}); 77 | 78 | @override 79 | $CharacterCopyWith<$Res>? get selectedCharacter; 80 | } 81 | 82 | /// @nodoc 83 | class __$$_HarryPotterStateCopyWithImpl<$Res> 84 | extends _$HarryPotterStateCopyWithImpl<$Res> 85 | implements _$$_HarryPotterStateCopyWith<$Res> { 86 | __$$_HarryPotterStateCopyWithImpl( 87 | _$_HarryPotterState _value, $Res Function(_$_HarryPotterState) _then) 88 | : super(_value, (v) => _then(v as _$_HarryPotterState)); 89 | 90 | @override 91 | _$_HarryPotterState get _value => super._value as _$_HarryPotterState; 92 | 93 | @override 94 | $Res call({ 95 | Object? selectedCharacter = freezed, 96 | }) { 97 | return _then(_$_HarryPotterState( 98 | selectedCharacter: selectedCharacter == freezed 99 | ? _value.selectedCharacter 100 | : selectedCharacter // ignore: cast_nullable_to_non_nullable 101 | as Character?, 102 | )); 103 | } 104 | } 105 | 106 | /// @nodoc 107 | 108 | class _$_HarryPotterState implements _HarryPotterState { 109 | const _$_HarryPotterState({this.selectedCharacter}); 110 | 111 | @override 112 | final Character? selectedCharacter; 113 | 114 | @override 115 | String toString() { 116 | return 'HarryPotterState(selectedCharacter: $selectedCharacter)'; 117 | } 118 | 119 | @override 120 | bool operator ==(dynamic other) { 121 | return identical(this, other) || 122 | (other.runtimeType == runtimeType && 123 | other is _$_HarryPotterState && 124 | const DeepCollectionEquality() 125 | .equals(other.selectedCharacter, selectedCharacter)); 126 | } 127 | 128 | @override 129 | int get hashCode => Object.hash( 130 | runtimeType, const DeepCollectionEquality().hash(selectedCharacter)); 131 | 132 | @JsonKey(ignore: true) 133 | @override 134 | _$$_HarryPotterStateCopyWith<_$_HarryPotterState> get copyWith => 135 | __$$_HarryPotterStateCopyWithImpl<_$_HarryPotterState>(this, _$identity); 136 | } 137 | 138 | abstract class _HarryPotterState implements HarryPotterState { 139 | const factory _HarryPotterState({final Character? selectedCharacter}) = 140 | _$_HarryPotterState; 141 | 142 | @override 143 | Character? get selectedCharacter; 144 | @override 145 | @JsonKey(ignore: true) 146 | _$$_HarryPotterStateCopyWith<_$_HarryPotterState> get copyWith => 147 | throw _privateConstructorUsedError; 148 | } 149 | -------------------------------------------------------------------------------- /app/lego_navigation/pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | _fe_analyzer_shared: 5 | dependency: transitive 6 | description: 7 | name: _fe_analyzer_shared 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "46.0.0" 11 | analyzer: 12 | dependency: transitive 13 | description: 14 | name: analyzer 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "4.6.0" 18 | args: 19 | dependency: transitive 20 | description: 21 | name: args 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "2.3.1" 25 | async: 26 | dependency: transitive 27 | description: 28 | name: async 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "2.9.0" 32 | bloc: 33 | dependency: transitive 34 | description: 35 | name: bloc 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "8.1.0" 39 | build: 40 | dependency: transitive 41 | description: 42 | name: build 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "2.3.0" 46 | build_config: 47 | dependency: transitive 48 | description: 49 | name: build_config 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "1.1.0" 53 | characters: 54 | dependency: transitive 55 | description: 56 | name: characters 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "1.2.0" 60 | checked_yaml: 61 | dependency: transitive 62 | description: 63 | name: checked_yaml 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "2.0.1" 67 | clock: 68 | dependency: transitive 69 | description: 70 | name: clock 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "1.1.0" 74 | collection: 75 | dependency: transitive 76 | description: 77 | name: collection 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "1.16.0" 81 | convert: 82 | dependency: transitive 83 | description: 84 | name: convert 85 | url: "https://pub.dartlang.org" 86 | source: hosted 87 | version: "3.0.2" 88 | crypto: 89 | dependency: transitive 90 | description: 91 | name: crypto 92 | url: "https://pub.dartlang.org" 93 | source: hosted 94 | version: "3.0.2" 95 | dart_style: 96 | dependency: transitive 97 | description: 98 | name: dart_style 99 | url: "https://pub.dartlang.org" 100 | source: hosted 101 | version: "2.2.3" 102 | equatable: 103 | dependency: transitive 104 | description: 105 | name: equatable 106 | url: "https://pub.dartlang.org" 107 | source: hosted 108 | version: "2.0.5" 109 | file: 110 | dependency: transitive 111 | description: 112 | name: file 113 | url: "https://pub.dartlang.org" 114 | source: hosted 115 | version: "6.1.4" 116 | flow_builder: 117 | dependency: transitive 118 | description: 119 | name: flow_builder 120 | url: "https://pub.dartlang.org" 121 | source: hosted 122 | version: "0.0.9" 123 | flutter: 124 | dependency: "direct main" 125 | description: flutter 126 | source: sdk 127 | version: "0.0.0" 128 | flutter_bloc: 129 | dependency: transitive 130 | description: 131 | name: flutter_bloc 132 | url: "https://pub.dartlang.org" 133 | source: hosted 134 | version: "8.1.1" 135 | flutter_lints: 136 | dependency: "direct dev" 137 | description: 138 | name: flutter_lints 139 | url: "https://pub.dartlang.org" 140 | source: hosted 141 | version: "2.0.1" 142 | flutter_localizations: 143 | dependency: transitive 144 | description: flutter 145 | source: sdk 146 | version: "0.0.0" 147 | flutter_web_plugins: 148 | dependency: transitive 149 | description: flutter 150 | source: sdk 151 | version: "0.0.0" 152 | freezed_annotation: 153 | dependency: transitive 154 | description: 155 | name: freezed_annotation 156 | url: "https://pub.dartlang.org" 157 | source: hosted 158 | version: "2.1.0" 159 | get_it: 160 | dependency: "direct main" 161 | description: 162 | name: get_it 163 | url: "https://pub.dartlang.org" 164 | source: hosted 165 | version: "7.2.0" 166 | glob: 167 | dependency: transitive 168 | description: 169 | name: glob 170 | url: "https://pub.dartlang.org" 171 | source: hosted 172 | version: "2.1.0" 173 | go_router: 174 | dependency: "direct main" 175 | description: 176 | name: go_router 177 | url: "https://pub.dartlang.org" 178 | source: hosted 179 | version: "4.2.8" 180 | harry_potter: 181 | dependency: "direct main" 182 | description: 183 | path: "../../feature/harry_potter" 184 | relative: true 185 | source: path 186 | version: "1.0.0+1" 187 | i69n: 188 | dependency: transitive 189 | description: 190 | name: i69n 191 | url: "https://pub.dartlang.org" 192 | source: hosted 193 | version: "2.1.0" 194 | injectable: 195 | dependency: transitive 196 | description: 197 | name: injectable 198 | url: "https://pub.dartlang.org" 199 | source: hosted 200 | version: "1.5.3" 201 | intl: 202 | dependency: transitive 203 | description: 204 | name: intl 205 | url: "https://pub.dartlang.org" 206 | source: hosted 207 | version: "0.17.0" 208 | js: 209 | dependency: transitive 210 | description: 211 | name: js 212 | url: "https://pub.dartlang.org" 213 | source: hosted 214 | version: "0.6.4" 215 | json_annotation: 216 | dependency: transitive 217 | description: 218 | name: json_annotation 219 | url: "https://pub.dartlang.org" 220 | source: hosted 221 | version: "4.6.0" 222 | lego_list: 223 | dependency: "direct main" 224 | description: 225 | path: "../../feature/lego_list" 226 | relative: true 227 | source: path 228 | version: "1.0.0+1" 229 | lints: 230 | dependency: transitive 231 | description: 232 | name: lints 233 | url: "https://pub.dartlang.org" 234 | source: hosted 235 | version: "2.0.0" 236 | logging: 237 | dependency: transitive 238 | description: 239 | name: logging 240 | url: "https://pub.dartlang.org" 241 | source: hosted 242 | version: "1.0.2" 243 | material_color_utilities: 244 | dependency: transitive 245 | description: 246 | name: material_color_utilities 247 | url: "https://pub.dartlang.org" 248 | source: hosted 249 | version: "0.1.4" 250 | meta: 251 | dependency: transitive 252 | description: 253 | name: meta 254 | url: "https://pub.dartlang.org" 255 | source: hosted 256 | version: "1.7.0" 257 | nested: 258 | dependency: transitive 259 | description: 260 | name: nested 261 | url: "https://pub.dartlang.org" 262 | source: hosted 263 | version: "1.0.0" 264 | package_config: 265 | dependency: transitive 266 | description: 267 | name: package_config 268 | url: "https://pub.dartlang.org" 269 | source: hosted 270 | version: "2.1.0" 271 | path: 272 | dependency: transitive 273 | description: 274 | name: path 275 | url: "https://pub.dartlang.org" 276 | source: hosted 277 | version: "1.8.1" 278 | provider: 279 | dependency: transitive 280 | description: 281 | name: provider 282 | url: "https://pub.dartlang.org" 283 | source: hosted 284 | version: "6.0.3" 285 | pub_semver: 286 | dependency: transitive 287 | description: 288 | name: pub_semver 289 | url: "https://pub.dartlang.org" 290 | source: hosted 291 | version: "2.1.1" 292 | pubspec_parse: 293 | dependency: transitive 294 | description: 295 | name: pubspec_parse 296 | url: "https://pub.dartlang.org" 297 | source: hosted 298 | version: "1.2.1" 299 | sky_engine: 300 | dependency: transitive 301 | description: flutter 302 | source: sdk 303 | version: "0.0.99" 304 | source_span: 305 | dependency: transitive 306 | description: 307 | name: source_span 308 | url: "https://pub.dartlang.org" 309 | source: hosted 310 | version: "1.9.1" 311 | string_scanner: 312 | dependency: transitive 313 | description: 314 | name: string_scanner 315 | url: "https://pub.dartlang.org" 316 | source: hosted 317 | version: "1.1.1" 318 | term_glyph: 319 | dependency: transitive 320 | description: 321 | name: term_glyph 322 | url: "https://pub.dartlang.org" 323 | source: hosted 324 | version: "1.2.1" 325 | typed_data: 326 | dependency: transitive 327 | description: 328 | name: typed_data 329 | url: "https://pub.dartlang.org" 330 | source: hosted 331 | version: "1.3.1" 332 | vector_math: 333 | dependency: transitive 334 | description: 335 | name: vector_math 336 | url: "https://pub.dartlang.org" 337 | source: hosted 338 | version: "2.1.2" 339 | watcher: 340 | dependency: transitive 341 | description: 342 | name: watcher 343 | url: "https://pub.dartlang.org" 344 | source: hosted 345 | version: "1.0.1" 346 | yaml: 347 | dependency: transitive 348 | description: 349 | name: yaml 350 | url: "https://pub.dartlang.org" 351 | source: hosted 352 | version: "3.1.1" 353 | sdks: 354 | dart: ">=2.17.6 <3.0.0" 355 | flutter: ">=3.0.0" 356 | -------------------------------------------------------------------------------- /app/lego_app/pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | _fe_analyzer_shared: 5 | dependency: transitive 6 | description: 7 | name: _fe_analyzer_shared 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "46.0.0" 11 | analyzer: 12 | dependency: transitive 13 | description: 14 | name: analyzer 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "4.6.0" 18 | args: 19 | dependency: transitive 20 | description: 21 | name: args 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "2.3.1" 25 | async: 26 | dependency: transitive 27 | description: 28 | name: async 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "2.8.2" 32 | bloc: 33 | dependency: transitive 34 | description: 35 | name: bloc 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "8.1.0" 39 | boolean_selector: 40 | dependency: transitive 41 | description: 42 | name: boolean_selector 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "2.1.0" 46 | build: 47 | dependency: transitive 48 | description: 49 | name: build 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "2.3.0" 53 | build_config: 54 | dependency: transitive 55 | description: 56 | name: build_config 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "1.1.0" 60 | characters: 61 | dependency: transitive 62 | description: 63 | name: characters 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "1.2.0" 67 | charcode: 68 | dependency: transitive 69 | description: 70 | name: charcode 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "1.3.1" 74 | checked_yaml: 75 | dependency: transitive 76 | description: 77 | name: checked_yaml 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "2.0.1" 81 | clock: 82 | dependency: transitive 83 | description: 84 | name: clock 85 | url: "https://pub.dartlang.org" 86 | source: hosted 87 | version: "1.1.0" 88 | collection: 89 | dependency: transitive 90 | description: 91 | name: collection 92 | url: "https://pub.dartlang.org" 93 | source: hosted 94 | version: "1.16.0" 95 | convert: 96 | dependency: transitive 97 | description: 98 | name: convert 99 | url: "https://pub.dartlang.org" 100 | source: hosted 101 | version: "3.0.2" 102 | crypto: 103 | dependency: transitive 104 | description: 105 | name: crypto 106 | url: "https://pub.dartlang.org" 107 | source: hosted 108 | version: "3.0.2" 109 | dart_style: 110 | dependency: transitive 111 | description: 112 | name: dart_style 113 | url: "https://pub.dartlang.org" 114 | source: hosted 115 | version: "2.2.3" 116 | design_system: 117 | dependency: "direct main" 118 | description: 119 | path: "../../core/design_system" 120 | relative: true 121 | source: path 122 | version: "1.0.0+1" 123 | equatable: 124 | dependency: transitive 125 | description: 126 | name: equatable 127 | url: "https://pub.dartlang.org" 128 | source: hosted 129 | version: "2.0.5" 130 | fake_async: 131 | dependency: transitive 132 | description: 133 | name: fake_async 134 | url: "https://pub.dartlang.org" 135 | source: hosted 136 | version: "1.3.0" 137 | file: 138 | dependency: transitive 139 | description: 140 | name: file 141 | url: "https://pub.dartlang.org" 142 | source: hosted 143 | version: "6.1.4" 144 | flow_builder: 145 | dependency: transitive 146 | description: 147 | name: flow_builder 148 | url: "https://pub.dartlang.org" 149 | source: hosted 150 | version: "0.0.9" 151 | flutter: 152 | dependency: "direct main" 153 | description: flutter 154 | source: sdk 155 | version: "0.0.0" 156 | flutter_bloc: 157 | dependency: transitive 158 | description: 159 | name: flutter_bloc 160 | url: "https://pub.dartlang.org" 161 | source: hosted 162 | version: "8.1.1" 163 | flutter_lints: 164 | dependency: "direct dev" 165 | description: 166 | name: flutter_lints 167 | url: "https://pub.dartlang.org" 168 | source: hosted 169 | version: "2.0.1" 170 | flutter_localizations: 171 | dependency: transitive 172 | description: flutter 173 | source: sdk 174 | version: "0.0.0" 175 | flutter_test: 176 | dependency: "direct dev" 177 | description: flutter 178 | source: sdk 179 | version: "0.0.0" 180 | flutter_web_plugins: 181 | dependency: transitive 182 | description: flutter 183 | source: sdk 184 | version: "0.0.0" 185 | freezed_annotation: 186 | dependency: transitive 187 | description: 188 | name: freezed_annotation 189 | url: "https://pub.dartlang.org" 190 | source: hosted 191 | version: "2.1.0" 192 | get_it: 193 | dependency: transitive 194 | description: 195 | name: get_it 196 | url: "https://pub.dartlang.org" 197 | source: hosted 198 | version: "7.2.0" 199 | glob: 200 | dependency: transitive 201 | description: 202 | name: glob 203 | url: "https://pub.dartlang.org" 204 | source: hosted 205 | version: "2.1.0" 206 | go_router: 207 | dependency: transitive 208 | description: 209 | name: go_router 210 | url: "https://pub.dartlang.org" 211 | source: hosted 212 | version: "4.2.8" 213 | harry_potter: 214 | dependency: transitive 215 | description: 216 | path: "../../feature/harry_potter" 217 | relative: true 218 | source: path 219 | version: "1.0.0+1" 220 | i69n: 221 | dependency: transitive 222 | description: 223 | name: i69n 224 | url: "https://pub.dartlang.org" 225 | source: hosted 226 | version: "2.1.0" 227 | injectable: 228 | dependency: transitive 229 | description: 230 | name: injectable 231 | url: "https://pub.dartlang.org" 232 | source: hosted 233 | version: "1.5.3" 234 | intl: 235 | dependency: transitive 236 | description: 237 | name: intl 238 | url: "https://pub.dartlang.org" 239 | source: hosted 240 | version: "0.17.0" 241 | js: 242 | dependency: transitive 243 | description: 244 | name: js 245 | url: "https://pub.dartlang.org" 246 | source: hosted 247 | version: "0.6.4" 248 | json_annotation: 249 | dependency: transitive 250 | description: 251 | name: json_annotation 252 | url: "https://pub.dartlang.org" 253 | source: hosted 254 | version: "4.6.0" 255 | lego_configuration: 256 | dependency: "direct main" 257 | description: 258 | path: "../lego_configuration" 259 | relative: true 260 | source: path 261 | version: "1.0.0+1" 262 | lego_list: 263 | dependency: transitive 264 | description: 265 | path: "../../feature/lego_list" 266 | relative: true 267 | source: path 268 | version: "1.0.0+1" 269 | lego_navigation: 270 | dependency: "direct main" 271 | description: 272 | path: "../lego_navigation" 273 | relative: true 274 | source: path 275 | version: "1.0.0+1" 276 | lints: 277 | dependency: transitive 278 | description: 279 | name: lints 280 | url: "https://pub.dartlang.org" 281 | source: hosted 282 | version: "2.0.0" 283 | logging: 284 | dependency: transitive 285 | description: 286 | name: logging 287 | url: "https://pub.dartlang.org" 288 | source: hosted 289 | version: "1.0.2" 290 | matcher: 291 | dependency: transitive 292 | description: 293 | name: matcher 294 | url: "https://pub.dartlang.org" 295 | source: hosted 296 | version: "0.12.11" 297 | material_color_utilities: 298 | dependency: transitive 299 | description: 300 | name: material_color_utilities 301 | url: "https://pub.dartlang.org" 302 | source: hosted 303 | version: "0.1.4" 304 | meta: 305 | dependency: transitive 306 | description: 307 | name: meta 308 | url: "https://pub.dartlang.org" 309 | source: hosted 310 | version: "1.7.0" 311 | nested: 312 | dependency: transitive 313 | description: 314 | name: nested 315 | url: "https://pub.dartlang.org" 316 | source: hosted 317 | version: "1.0.0" 318 | package_config: 319 | dependency: transitive 320 | description: 321 | name: package_config 322 | url: "https://pub.dartlang.org" 323 | source: hosted 324 | version: "2.1.0" 325 | path: 326 | dependency: transitive 327 | description: 328 | name: path 329 | url: "https://pub.dartlang.org" 330 | source: hosted 331 | version: "1.8.1" 332 | provider: 333 | dependency: transitive 334 | description: 335 | name: provider 336 | url: "https://pub.dartlang.org" 337 | source: hosted 338 | version: "6.0.3" 339 | pub_semver: 340 | dependency: transitive 341 | description: 342 | name: pub_semver 343 | url: "https://pub.dartlang.org" 344 | source: hosted 345 | version: "2.1.1" 346 | pubspec_parse: 347 | dependency: transitive 348 | description: 349 | name: pubspec_parse 350 | url: "https://pub.dartlang.org" 351 | source: hosted 352 | version: "1.2.1" 353 | sky_engine: 354 | dependency: transitive 355 | description: flutter 356 | source: sdk 357 | version: "0.0.99" 358 | source_span: 359 | dependency: transitive 360 | description: 361 | name: source_span 362 | url: "https://pub.dartlang.org" 363 | source: hosted 364 | version: "1.8.2" 365 | stack_trace: 366 | dependency: transitive 367 | description: 368 | name: stack_trace 369 | url: "https://pub.dartlang.org" 370 | source: hosted 371 | version: "1.10.0" 372 | stream_channel: 373 | dependency: transitive 374 | description: 375 | name: stream_channel 376 | url: "https://pub.dartlang.org" 377 | source: hosted 378 | version: "2.1.0" 379 | string_scanner: 380 | dependency: transitive 381 | description: 382 | name: string_scanner 383 | url: "https://pub.dartlang.org" 384 | source: hosted 385 | version: "1.1.0" 386 | term_glyph: 387 | dependency: transitive 388 | description: 389 | name: term_glyph 390 | url: "https://pub.dartlang.org" 391 | source: hosted 392 | version: "1.2.0" 393 | test_api: 394 | dependency: transitive 395 | description: 396 | name: test_api 397 | url: "https://pub.dartlang.org" 398 | source: hosted 399 | version: "0.4.9" 400 | typed_data: 401 | dependency: transitive 402 | description: 403 | name: typed_data 404 | url: "https://pub.dartlang.org" 405 | source: hosted 406 | version: "1.3.1" 407 | vector_math: 408 | dependency: transitive 409 | description: 410 | name: vector_math 411 | url: "https://pub.dartlang.org" 412 | source: hosted 413 | version: "2.1.2" 414 | watcher: 415 | dependency: transitive 416 | description: 417 | name: watcher 418 | url: "https://pub.dartlang.org" 419 | source: hosted 420 | version: "1.0.1" 421 | yaml: 422 | dependency: transitive 423 | description: 424 | name: yaml 425 | url: "https://pub.dartlang.org" 426 | source: hosted 427 | version: "3.1.1" 428 | sdks: 429 | dart: ">=2.17.6 <3.0.0" 430 | flutter: ">=3.0.0" 431 | -------------------------------------------------------------------------------- /feature/harry_potter/pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | _fe_analyzer_shared: 5 | dependency: transitive 6 | description: 7 | name: _fe_analyzer_shared 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "46.0.0" 11 | analyzer: 12 | dependency: transitive 13 | description: 14 | name: analyzer 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "4.6.0" 18 | args: 19 | dependency: transitive 20 | description: 21 | name: args 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "2.3.1" 25 | async: 26 | dependency: transitive 27 | description: 28 | name: async 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "2.9.0" 32 | bloc: 33 | dependency: transitive 34 | description: 35 | name: bloc 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "8.1.0" 39 | build: 40 | dependency: transitive 41 | description: 42 | name: build 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "2.3.0" 46 | build_config: 47 | dependency: transitive 48 | description: 49 | name: build_config 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "1.1.0" 53 | build_daemon: 54 | dependency: transitive 55 | description: 56 | name: build_daemon 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "3.1.0" 60 | build_resolvers: 61 | dependency: transitive 62 | description: 63 | name: build_resolvers 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "2.0.9" 67 | build_runner: 68 | dependency: "direct dev" 69 | description: 70 | name: build_runner 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "2.2.0" 74 | build_runner_core: 75 | dependency: transitive 76 | description: 77 | name: build_runner_core 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "7.2.3" 81 | built_collection: 82 | dependency: transitive 83 | description: 84 | name: built_collection 85 | url: "https://pub.dartlang.org" 86 | source: hosted 87 | version: "5.1.1" 88 | built_value: 89 | dependency: transitive 90 | description: 91 | name: built_value 92 | url: "https://pub.dartlang.org" 93 | source: hosted 94 | version: "8.4.1" 95 | characters: 96 | dependency: transitive 97 | description: 98 | name: characters 99 | url: "https://pub.dartlang.org" 100 | source: hosted 101 | version: "1.2.0" 102 | checked_yaml: 103 | dependency: transitive 104 | description: 105 | name: checked_yaml 106 | url: "https://pub.dartlang.org" 107 | source: hosted 108 | version: "2.0.1" 109 | clock: 110 | dependency: transitive 111 | description: 112 | name: clock 113 | url: "https://pub.dartlang.org" 114 | source: hosted 115 | version: "1.1.0" 116 | code_builder: 117 | dependency: transitive 118 | description: 119 | name: code_builder 120 | url: "https://pub.dartlang.org" 121 | source: hosted 122 | version: "4.2.0" 123 | collection: 124 | dependency: transitive 125 | description: 126 | name: collection 127 | url: "https://pub.dartlang.org" 128 | source: hosted 129 | version: "1.16.0" 130 | convert: 131 | dependency: transitive 132 | description: 133 | name: convert 134 | url: "https://pub.dartlang.org" 135 | source: hosted 136 | version: "3.0.2" 137 | crypto: 138 | dependency: transitive 139 | description: 140 | name: crypto 141 | url: "https://pub.dartlang.org" 142 | source: hosted 143 | version: "3.0.2" 144 | dart_style: 145 | dependency: transitive 146 | description: 147 | name: dart_style 148 | url: "https://pub.dartlang.org" 149 | source: hosted 150 | version: "2.2.3" 151 | file: 152 | dependency: transitive 153 | description: 154 | name: file 155 | url: "https://pub.dartlang.org" 156 | source: hosted 157 | version: "6.1.4" 158 | fixnum: 159 | dependency: transitive 160 | description: 161 | name: fixnum 162 | url: "https://pub.dartlang.org" 163 | source: hosted 164 | version: "1.0.1" 165 | flow_builder: 166 | dependency: "direct main" 167 | description: 168 | name: flow_builder 169 | url: "https://pub.dartlang.org" 170 | source: hosted 171 | version: "0.0.9" 172 | flutter: 173 | dependency: "direct main" 174 | description: flutter 175 | source: sdk 176 | version: "0.0.0" 177 | flutter_bloc: 178 | dependency: "direct main" 179 | description: 180 | name: flutter_bloc 181 | url: "https://pub.dartlang.org" 182 | source: hosted 183 | version: "8.1.1" 184 | flutter_lints: 185 | dependency: "direct dev" 186 | description: 187 | name: flutter_lints 188 | url: "https://pub.dartlang.org" 189 | source: hosted 190 | version: "2.0.1" 191 | flutter_localizations: 192 | dependency: "direct main" 193 | description: flutter 194 | source: sdk 195 | version: "0.0.0" 196 | freezed: 197 | dependency: "direct dev" 198 | description: 199 | name: freezed 200 | url: "https://pub.dartlang.org" 201 | source: hosted 202 | version: "2.1.0+1" 203 | freezed_annotation: 204 | dependency: "direct main" 205 | description: 206 | name: freezed_annotation 207 | url: "https://pub.dartlang.org" 208 | source: hosted 209 | version: "2.1.0" 210 | frontend_server_client: 211 | dependency: transitive 212 | description: 213 | name: frontend_server_client 214 | url: "https://pub.dartlang.org" 215 | source: hosted 216 | version: "2.1.3" 217 | get_it: 218 | dependency: "direct main" 219 | description: 220 | name: get_it 221 | url: "https://pub.dartlang.org" 222 | source: hosted 223 | version: "7.2.0" 224 | glob: 225 | dependency: transitive 226 | description: 227 | name: glob 228 | url: "https://pub.dartlang.org" 229 | source: hosted 230 | version: "2.1.0" 231 | graphs: 232 | dependency: transitive 233 | description: 234 | name: graphs 235 | url: "https://pub.dartlang.org" 236 | source: hosted 237 | version: "2.1.0" 238 | http_multi_server: 239 | dependency: transitive 240 | description: 241 | name: http_multi_server 242 | url: "https://pub.dartlang.org" 243 | source: hosted 244 | version: "3.2.1" 245 | http_parser: 246 | dependency: transitive 247 | description: 248 | name: http_parser 249 | url: "https://pub.dartlang.org" 250 | source: hosted 251 | version: "4.0.1" 252 | i69n: 253 | dependency: "direct main" 254 | description: 255 | name: i69n 256 | url: "https://pub.dartlang.org" 257 | source: hosted 258 | version: "2.1.0" 259 | injectable: 260 | dependency: "direct main" 261 | description: 262 | name: injectable 263 | url: "https://pub.dartlang.org" 264 | source: hosted 265 | version: "1.5.3" 266 | injectable_generator: 267 | dependency: "direct dev" 268 | description: 269 | name: injectable_generator 270 | url: "https://pub.dartlang.org" 271 | source: hosted 272 | version: "1.5.4" 273 | intl: 274 | dependency: transitive 275 | description: 276 | name: intl 277 | url: "https://pub.dartlang.org" 278 | source: hosted 279 | version: "0.17.0" 280 | io: 281 | dependency: transitive 282 | description: 283 | name: io 284 | url: "https://pub.dartlang.org" 285 | source: hosted 286 | version: "1.0.3" 287 | js: 288 | dependency: transitive 289 | description: 290 | name: js 291 | url: "https://pub.dartlang.org" 292 | source: hosted 293 | version: "0.6.4" 294 | json_annotation: 295 | dependency: transitive 296 | description: 297 | name: json_annotation 298 | url: "https://pub.dartlang.org" 299 | source: hosted 300 | version: "4.6.0" 301 | lints: 302 | dependency: transitive 303 | description: 304 | name: lints 305 | url: "https://pub.dartlang.org" 306 | source: hosted 307 | version: "2.0.0" 308 | logging: 309 | dependency: transitive 310 | description: 311 | name: logging 312 | url: "https://pub.dartlang.org" 313 | source: hosted 314 | version: "1.0.2" 315 | matcher: 316 | dependency: transitive 317 | description: 318 | name: matcher 319 | url: "https://pub.dartlang.org" 320 | source: hosted 321 | version: "0.12.12" 322 | material_color_utilities: 323 | dependency: transitive 324 | description: 325 | name: material_color_utilities 326 | url: "https://pub.dartlang.org" 327 | source: hosted 328 | version: "0.1.4" 329 | meta: 330 | dependency: transitive 331 | description: 332 | name: meta 333 | url: "https://pub.dartlang.org" 334 | source: hosted 335 | version: "1.7.0" 336 | mime: 337 | dependency: transitive 338 | description: 339 | name: mime 340 | url: "https://pub.dartlang.org" 341 | source: hosted 342 | version: "1.0.2" 343 | nested: 344 | dependency: transitive 345 | description: 346 | name: nested 347 | url: "https://pub.dartlang.org" 348 | source: hosted 349 | version: "1.0.0" 350 | package_config: 351 | dependency: transitive 352 | description: 353 | name: package_config 354 | url: "https://pub.dartlang.org" 355 | source: hosted 356 | version: "2.1.0" 357 | path: 358 | dependency: transitive 359 | description: 360 | name: path 361 | url: "https://pub.dartlang.org" 362 | source: hosted 363 | version: "1.8.1" 364 | pool: 365 | dependency: transitive 366 | description: 367 | name: pool 368 | url: "https://pub.dartlang.org" 369 | source: hosted 370 | version: "1.5.1" 371 | provider: 372 | dependency: transitive 373 | description: 374 | name: provider 375 | url: "https://pub.dartlang.org" 376 | source: hosted 377 | version: "6.0.3" 378 | pub_semver: 379 | dependency: transitive 380 | description: 381 | name: pub_semver 382 | url: "https://pub.dartlang.org" 383 | source: hosted 384 | version: "2.1.1" 385 | pubspec_parse: 386 | dependency: transitive 387 | description: 388 | name: pubspec_parse 389 | url: "https://pub.dartlang.org" 390 | source: hosted 391 | version: "1.2.1" 392 | shelf: 393 | dependency: transitive 394 | description: 395 | name: shelf 396 | url: "https://pub.dartlang.org" 397 | source: hosted 398 | version: "1.3.2" 399 | shelf_web_socket: 400 | dependency: transitive 401 | description: 402 | name: shelf_web_socket 403 | url: "https://pub.dartlang.org" 404 | source: hosted 405 | version: "1.0.2" 406 | sky_engine: 407 | dependency: transitive 408 | description: flutter 409 | source: sdk 410 | version: "0.0.99" 411 | source_gen: 412 | dependency: transitive 413 | description: 414 | name: source_gen 415 | url: "https://pub.dartlang.org" 416 | source: hosted 417 | version: "1.2.2" 418 | source_span: 419 | dependency: transitive 420 | description: 421 | name: source_span 422 | url: "https://pub.dartlang.org" 423 | source: hosted 424 | version: "1.9.1" 425 | stack_trace: 426 | dependency: transitive 427 | description: 428 | name: stack_trace 429 | url: "https://pub.dartlang.org" 430 | source: hosted 431 | version: "1.10.0" 432 | stream_channel: 433 | dependency: transitive 434 | description: 435 | name: stream_channel 436 | url: "https://pub.dartlang.org" 437 | source: hosted 438 | version: "2.1.0" 439 | stream_transform: 440 | dependency: transitive 441 | description: 442 | name: stream_transform 443 | url: "https://pub.dartlang.org" 444 | source: hosted 445 | version: "2.0.0" 446 | string_scanner: 447 | dependency: transitive 448 | description: 449 | name: string_scanner 450 | url: "https://pub.dartlang.org" 451 | source: hosted 452 | version: "1.1.1" 453 | term_glyph: 454 | dependency: transitive 455 | description: 456 | name: term_glyph 457 | url: "https://pub.dartlang.org" 458 | source: hosted 459 | version: "1.2.1" 460 | timing: 461 | dependency: transitive 462 | description: 463 | name: timing 464 | url: "https://pub.dartlang.org" 465 | source: hosted 466 | version: "1.0.0" 467 | typed_data: 468 | dependency: transitive 469 | description: 470 | name: typed_data 471 | url: "https://pub.dartlang.org" 472 | source: hosted 473 | version: "1.3.1" 474 | vector_math: 475 | dependency: transitive 476 | description: 477 | name: vector_math 478 | url: "https://pub.dartlang.org" 479 | source: hosted 480 | version: "2.1.2" 481 | watcher: 482 | dependency: transitive 483 | description: 484 | name: watcher 485 | url: "https://pub.dartlang.org" 486 | source: hosted 487 | version: "1.0.1" 488 | web_socket_channel: 489 | dependency: transitive 490 | description: 491 | name: web_socket_channel 492 | url: "https://pub.dartlang.org" 493 | source: hosted 494 | version: "2.2.0" 495 | yaml: 496 | dependency: transitive 497 | description: 498 | name: yaml 499 | url: "https://pub.dartlang.org" 500 | source: hosted 501 | version: "3.1.1" 502 | sdks: 503 | dart: ">=2.17.6 <3.0.0" 504 | flutter: ">=1.16.0" 505 | -------------------------------------------------------------------------------- /feature/lego_list/pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | _fe_analyzer_shared: 5 | dependency: transitive 6 | description: 7 | name: _fe_analyzer_shared 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "31.0.0" 11 | analyzer: 12 | dependency: transitive 13 | description: 14 | name: analyzer 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "2.8.0" 18 | args: 19 | dependency: transitive 20 | description: 21 | name: args 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "2.3.1" 25 | async: 26 | dependency: transitive 27 | description: 28 | name: async 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "2.8.2" 32 | bdd_widget_test: 33 | dependency: "direct dev" 34 | description: 35 | name: bdd_widget_test 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "1.4.2" 39 | bloc: 40 | dependency: transitive 41 | description: 42 | name: bloc 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "8.1.0" 46 | boolean_selector: 47 | dependency: transitive 48 | description: 49 | name: boolean_selector 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "2.1.0" 53 | build: 54 | dependency: transitive 55 | description: 56 | name: build 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "2.3.0" 60 | build_config: 61 | dependency: transitive 62 | description: 63 | name: build_config 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "1.1.0" 67 | build_daemon: 68 | dependency: transitive 69 | description: 70 | name: build_daemon 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "3.1.0" 74 | build_resolvers: 75 | dependency: transitive 76 | description: 77 | name: build_resolvers 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "2.0.4" 81 | build_runner: 82 | dependency: "direct dev" 83 | description: 84 | name: build_runner 85 | url: "https://pub.dartlang.org" 86 | source: hosted 87 | version: "2.2.0" 88 | build_runner_core: 89 | dependency: transitive 90 | description: 91 | name: build_runner_core 92 | url: "https://pub.dartlang.org" 93 | source: hosted 94 | version: "7.2.3" 95 | built_collection: 96 | dependency: transitive 97 | description: 98 | name: built_collection 99 | url: "https://pub.dartlang.org" 100 | source: hosted 101 | version: "5.1.1" 102 | built_value: 103 | dependency: transitive 104 | description: 105 | name: built_value 106 | url: "https://pub.dartlang.org" 107 | source: hosted 108 | version: "8.4.1" 109 | characters: 110 | dependency: transitive 111 | description: 112 | name: characters 113 | url: "https://pub.dartlang.org" 114 | source: hosted 115 | version: "1.2.0" 116 | charcode: 117 | dependency: transitive 118 | description: 119 | name: charcode 120 | url: "https://pub.dartlang.org" 121 | source: hosted 122 | version: "1.3.1" 123 | checked_yaml: 124 | dependency: transitive 125 | description: 126 | name: checked_yaml 127 | url: "https://pub.dartlang.org" 128 | source: hosted 129 | version: "2.0.1" 130 | cli_util: 131 | dependency: transitive 132 | description: 133 | name: cli_util 134 | url: "https://pub.dartlang.org" 135 | source: hosted 136 | version: "0.3.5" 137 | clock: 138 | dependency: transitive 139 | description: 140 | name: clock 141 | url: "https://pub.dartlang.org" 142 | source: hosted 143 | version: "1.1.0" 144 | code_builder: 145 | dependency: transitive 146 | description: 147 | name: code_builder 148 | url: "https://pub.dartlang.org" 149 | source: hosted 150 | version: "4.2.0" 151 | collection: 152 | dependency: transitive 153 | description: 154 | name: collection 155 | url: "https://pub.dartlang.org" 156 | source: hosted 157 | version: "1.16.0" 158 | convert: 159 | dependency: transitive 160 | description: 161 | name: convert 162 | url: "https://pub.dartlang.org" 163 | source: hosted 164 | version: "3.0.2" 165 | coverage: 166 | dependency: transitive 167 | description: 168 | name: coverage 169 | url: "https://pub.dartlang.org" 170 | source: hosted 171 | version: "1.3.2" 172 | crypto: 173 | dependency: transitive 174 | description: 175 | name: crypto 176 | url: "https://pub.dartlang.org" 177 | source: hosted 178 | version: "3.0.2" 179 | dart_style: 180 | dependency: transitive 181 | description: 182 | name: dart_style 183 | url: "https://pub.dartlang.org" 184 | source: hosted 185 | version: "2.1.1" 186 | diacritic: 187 | dependency: transitive 188 | description: 189 | name: diacritic 190 | url: "https://pub.dartlang.org" 191 | source: hosted 192 | version: "0.1.3" 193 | equatable: 194 | dependency: "direct main" 195 | description: 196 | name: equatable 197 | url: "https://pub.dartlang.org" 198 | source: hosted 199 | version: "2.0.5" 200 | fake_async: 201 | dependency: transitive 202 | description: 203 | name: fake_async 204 | url: "https://pub.dartlang.org" 205 | source: hosted 206 | version: "1.3.0" 207 | file: 208 | dependency: transitive 209 | description: 210 | name: file 211 | url: "https://pub.dartlang.org" 212 | source: hosted 213 | version: "6.1.4" 214 | fixnum: 215 | dependency: transitive 216 | description: 217 | name: fixnum 218 | url: "https://pub.dartlang.org" 219 | source: hosted 220 | version: "1.0.1" 221 | flutter: 222 | dependency: "direct main" 223 | description: flutter 224 | source: sdk 225 | version: "0.0.0" 226 | flutter_bloc: 227 | dependency: "direct main" 228 | description: 229 | name: flutter_bloc 230 | url: "https://pub.dartlang.org" 231 | source: hosted 232 | version: "8.1.1" 233 | flutter_lints: 234 | dependency: "direct dev" 235 | description: 236 | name: flutter_lints 237 | url: "https://pub.dartlang.org" 238 | source: hosted 239 | version: "2.0.1" 240 | flutter_localizations: 241 | dependency: "direct main" 242 | description: flutter 243 | source: sdk 244 | version: "0.0.0" 245 | flutter_test: 246 | dependency: "direct dev" 247 | description: flutter 248 | source: sdk 249 | version: "0.0.0" 250 | frontend_server_client: 251 | dependency: transitive 252 | description: 253 | name: frontend_server_client 254 | url: "https://pub.dartlang.org" 255 | source: hosted 256 | version: "2.1.3" 257 | get_it: 258 | dependency: "direct main" 259 | description: 260 | name: get_it 261 | url: "https://pub.dartlang.org" 262 | source: hosted 263 | version: "7.2.0" 264 | glob: 265 | dependency: transitive 266 | description: 267 | name: glob 268 | url: "https://pub.dartlang.org" 269 | source: hosted 270 | version: "2.1.0" 271 | graphs: 272 | dependency: transitive 273 | description: 274 | name: graphs 275 | url: "https://pub.dartlang.org" 276 | source: hosted 277 | version: "2.1.0" 278 | http_multi_server: 279 | dependency: transitive 280 | description: 281 | name: http_multi_server 282 | url: "https://pub.dartlang.org" 283 | source: hosted 284 | version: "3.2.1" 285 | http_parser: 286 | dependency: transitive 287 | description: 288 | name: http_parser 289 | url: "https://pub.dartlang.org" 290 | source: hosted 291 | version: "4.0.1" 292 | intl: 293 | dependency: "direct main" 294 | description: 295 | name: intl 296 | url: "https://pub.dartlang.org" 297 | source: hosted 298 | version: "0.17.0" 299 | io: 300 | dependency: transitive 301 | description: 302 | name: io 303 | url: "https://pub.dartlang.org" 304 | source: hosted 305 | version: "1.0.3" 306 | js: 307 | dependency: transitive 308 | description: 309 | name: js 310 | url: "https://pub.dartlang.org" 311 | source: hosted 312 | version: "0.6.4" 313 | json_annotation: 314 | dependency: transitive 315 | description: 316 | name: json_annotation 317 | url: "https://pub.dartlang.org" 318 | source: hosted 319 | version: "4.6.0" 320 | lints: 321 | dependency: transitive 322 | description: 323 | name: lints 324 | url: "https://pub.dartlang.org" 325 | source: hosted 326 | version: "2.0.0" 327 | logging: 328 | dependency: transitive 329 | description: 330 | name: logging 331 | url: "https://pub.dartlang.org" 332 | source: hosted 333 | version: "1.0.2" 334 | matcher: 335 | dependency: transitive 336 | description: 337 | name: matcher 338 | url: "https://pub.dartlang.org" 339 | source: hosted 340 | version: "0.12.11" 341 | material_color_utilities: 342 | dependency: transitive 343 | description: 344 | name: material_color_utilities 345 | url: "https://pub.dartlang.org" 346 | source: hosted 347 | version: "0.1.4" 348 | meta: 349 | dependency: transitive 350 | description: 351 | name: meta 352 | url: "https://pub.dartlang.org" 353 | source: hosted 354 | version: "1.7.0" 355 | mime: 356 | dependency: transitive 357 | description: 358 | name: mime 359 | url: "https://pub.dartlang.org" 360 | source: hosted 361 | version: "1.0.2" 362 | mocktail: 363 | dependency: "direct dev" 364 | description: 365 | name: mocktail 366 | url: "https://pub.dartlang.org" 367 | source: hosted 368 | version: "0.3.0" 369 | nested: 370 | dependency: transitive 371 | description: 372 | name: nested 373 | url: "https://pub.dartlang.org" 374 | source: hosted 375 | version: "1.0.0" 376 | node_preamble: 377 | dependency: transitive 378 | description: 379 | name: node_preamble 380 | url: "https://pub.dartlang.org" 381 | source: hosted 382 | version: "2.0.1" 383 | package_config: 384 | dependency: transitive 385 | description: 386 | name: package_config 387 | url: "https://pub.dartlang.org" 388 | source: hosted 389 | version: "2.1.0" 390 | path: 391 | dependency: transitive 392 | description: 393 | name: path 394 | url: "https://pub.dartlang.org" 395 | source: hosted 396 | version: "1.8.1" 397 | pool: 398 | dependency: transitive 399 | description: 400 | name: pool 401 | url: "https://pub.dartlang.org" 402 | source: hosted 403 | version: "1.5.1" 404 | provider: 405 | dependency: transitive 406 | description: 407 | name: provider 408 | url: "https://pub.dartlang.org" 409 | source: hosted 410 | version: "6.0.3" 411 | pub_semver: 412 | dependency: transitive 413 | description: 414 | name: pub_semver 415 | url: "https://pub.dartlang.org" 416 | source: hosted 417 | version: "2.1.1" 418 | pubspec_parse: 419 | dependency: transitive 420 | description: 421 | name: pubspec_parse 422 | url: "https://pub.dartlang.org" 423 | source: hosted 424 | version: "1.2.1" 425 | shelf: 426 | dependency: transitive 427 | description: 428 | name: shelf 429 | url: "https://pub.dartlang.org" 430 | source: hosted 431 | version: "1.3.2" 432 | shelf_packages_handler: 433 | dependency: transitive 434 | description: 435 | name: shelf_packages_handler 436 | url: "https://pub.dartlang.org" 437 | source: hosted 438 | version: "3.0.1" 439 | shelf_static: 440 | dependency: transitive 441 | description: 442 | name: shelf_static 443 | url: "https://pub.dartlang.org" 444 | source: hosted 445 | version: "1.1.1" 446 | shelf_web_socket: 447 | dependency: transitive 448 | description: 449 | name: shelf_web_socket 450 | url: "https://pub.dartlang.org" 451 | source: hosted 452 | version: "1.0.2" 453 | sky_engine: 454 | dependency: transitive 455 | description: flutter 456 | source: sdk 457 | version: "0.0.99" 458 | source_map_stack_trace: 459 | dependency: transitive 460 | description: 461 | name: source_map_stack_trace 462 | url: "https://pub.dartlang.org" 463 | source: hosted 464 | version: "2.1.0" 465 | source_maps: 466 | dependency: transitive 467 | description: 468 | name: source_maps 469 | url: "https://pub.dartlang.org" 470 | source: hosted 471 | version: "0.10.10" 472 | source_span: 473 | dependency: transitive 474 | description: 475 | name: source_span 476 | url: "https://pub.dartlang.org" 477 | source: hosted 478 | version: "1.8.2" 479 | stack_trace: 480 | dependency: transitive 481 | description: 482 | name: stack_trace 483 | url: "https://pub.dartlang.org" 484 | source: hosted 485 | version: "1.10.0" 486 | stream_channel: 487 | dependency: transitive 488 | description: 489 | name: stream_channel 490 | url: "https://pub.dartlang.org" 491 | source: hosted 492 | version: "2.1.0" 493 | stream_transform: 494 | dependency: transitive 495 | description: 496 | name: stream_transform 497 | url: "https://pub.dartlang.org" 498 | source: hosted 499 | version: "2.0.0" 500 | string_scanner: 501 | dependency: transitive 502 | description: 503 | name: string_scanner 504 | url: "https://pub.dartlang.org" 505 | source: hosted 506 | version: "1.1.0" 507 | term_glyph: 508 | dependency: transitive 509 | description: 510 | name: term_glyph 511 | url: "https://pub.dartlang.org" 512 | source: hosted 513 | version: "1.2.0" 514 | test: 515 | dependency: transitive 516 | description: 517 | name: test 518 | url: "https://pub.dartlang.org" 519 | source: hosted 520 | version: "1.20.2" 521 | test_api: 522 | dependency: transitive 523 | description: 524 | name: test_api 525 | url: "https://pub.dartlang.org" 526 | source: hosted 527 | version: "0.4.9" 528 | test_core: 529 | dependency: transitive 530 | description: 531 | name: test_core 532 | url: "https://pub.dartlang.org" 533 | source: hosted 534 | version: "0.4.11" 535 | timing: 536 | dependency: transitive 537 | description: 538 | name: timing 539 | url: "https://pub.dartlang.org" 540 | source: hosted 541 | version: "1.0.0" 542 | typed_data: 543 | dependency: transitive 544 | description: 545 | name: typed_data 546 | url: "https://pub.dartlang.org" 547 | source: hosted 548 | version: "1.3.1" 549 | vector_math: 550 | dependency: transitive 551 | description: 552 | name: vector_math 553 | url: "https://pub.dartlang.org" 554 | source: hosted 555 | version: "2.1.2" 556 | vm_service: 557 | dependency: transitive 558 | description: 559 | name: vm_service 560 | url: "https://pub.dartlang.org" 561 | source: hosted 562 | version: "8.3.0" 563 | watcher: 564 | dependency: transitive 565 | description: 566 | name: watcher 567 | url: "https://pub.dartlang.org" 568 | source: hosted 569 | version: "1.0.1" 570 | web_socket_channel: 571 | dependency: transitive 572 | description: 573 | name: web_socket_channel 574 | url: "https://pub.dartlang.org" 575 | source: hosted 576 | version: "2.2.0" 577 | webkit_inspection_protocol: 578 | dependency: transitive 579 | description: 580 | name: webkit_inspection_protocol 581 | url: "https://pub.dartlang.org" 582 | source: hosted 583 | version: "1.1.0" 584 | yaml: 585 | dependency: transitive 586 | description: 587 | name: yaml 588 | url: "https://pub.dartlang.org" 589 | source: hosted 590 | version: "3.1.1" 591 | sdks: 592 | dart: ">=2.17.6 <3.0.0" 593 | flutter: ">=1.16.0" 594 | -------------------------------------------------------------------------------- /app/lego_app/ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 50; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 16 | /* End PBXBuildFile section */ 17 | 18 | /* Begin PBXCopyFilesBuildPhase section */ 19 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 20 | isa = PBXCopyFilesBuildPhase; 21 | buildActionMask = 2147483647; 22 | dstPath = ""; 23 | dstSubfolderSpec = 10; 24 | files = ( 25 | ); 26 | name = "Embed Frameworks"; 27 | runOnlyForDeploymentPostprocessing = 0; 28 | }; 29 | /* End PBXCopyFilesBuildPhase section */ 30 | 31 | /* Begin PBXFileReference section */ 32 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 33 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 34 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 35 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 36 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 37 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 38 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 39 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 40 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 41 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 42 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 43 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 44 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 45 | /* End PBXFileReference section */ 46 | 47 | /* Begin PBXFrameworksBuildPhase section */ 48 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 49 | isa = PBXFrameworksBuildPhase; 50 | buildActionMask = 2147483647; 51 | files = ( 52 | ); 53 | runOnlyForDeploymentPostprocessing = 0; 54 | }; 55 | /* End PBXFrameworksBuildPhase section */ 56 | 57 | /* Begin PBXGroup section */ 58 | 9740EEB11CF90186004384FC /* Flutter */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 62 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 63 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 64 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 65 | ); 66 | name = Flutter; 67 | sourceTree = ""; 68 | }; 69 | 97C146E51CF9000F007C117D = { 70 | isa = PBXGroup; 71 | children = ( 72 | 9740EEB11CF90186004384FC /* Flutter */, 73 | 97C146F01CF9000F007C117D /* Runner */, 74 | 97C146EF1CF9000F007C117D /* Products */, 75 | ); 76 | sourceTree = ""; 77 | }; 78 | 97C146EF1CF9000F007C117D /* Products */ = { 79 | isa = PBXGroup; 80 | children = ( 81 | 97C146EE1CF9000F007C117D /* Runner.app */, 82 | ); 83 | name = Products; 84 | sourceTree = ""; 85 | }; 86 | 97C146F01CF9000F007C117D /* Runner */ = { 87 | isa = PBXGroup; 88 | children = ( 89 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 90 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 91 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 92 | 97C147021CF9000F007C117D /* Info.plist */, 93 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 94 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 95 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 96 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 97 | ); 98 | path = Runner; 99 | sourceTree = ""; 100 | }; 101 | /* End PBXGroup section */ 102 | 103 | /* Begin PBXNativeTarget section */ 104 | 97C146ED1CF9000F007C117D /* Runner */ = { 105 | isa = PBXNativeTarget; 106 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 107 | buildPhases = ( 108 | 9740EEB61CF901F6004384FC /* Run Script */, 109 | 97C146EA1CF9000F007C117D /* Sources */, 110 | 97C146EB1CF9000F007C117D /* Frameworks */, 111 | 97C146EC1CF9000F007C117D /* Resources */, 112 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 113 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 114 | ); 115 | buildRules = ( 116 | ); 117 | dependencies = ( 118 | ); 119 | name = Runner; 120 | productName = Runner; 121 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 122 | productType = "com.apple.product-type.application"; 123 | }; 124 | /* End PBXNativeTarget section */ 125 | 126 | /* Begin PBXProject section */ 127 | 97C146E61CF9000F007C117D /* Project object */ = { 128 | isa = PBXProject; 129 | attributes = { 130 | LastUpgradeCheck = 1300; 131 | ORGANIZATIONNAME = ""; 132 | TargetAttributes = { 133 | 97C146ED1CF9000F007C117D = { 134 | CreatedOnToolsVersion = 7.3.1; 135 | LastSwiftMigration = 1100; 136 | }; 137 | }; 138 | }; 139 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 140 | compatibilityVersion = "Xcode 9.3"; 141 | developmentRegion = en; 142 | hasScannedForEncodings = 0; 143 | knownRegions = ( 144 | en, 145 | Base, 146 | ); 147 | mainGroup = 97C146E51CF9000F007C117D; 148 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 149 | projectDirPath = ""; 150 | projectRoot = ""; 151 | targets = ( 152 | 97C146ED1CF9000F007C117D /* Runner */, 153 | ); 154 | }; 155 | /* End PBXProject section */ 156 | 157 | /* Begin PBXResourcesBuildPhase section */ 158 | 97C146EC1CF9000F007C117D /* Resources */ = { 159 | isa = PBXResourcesBuildPhase; 160 | buildActionMask = 2147483647; 161 | files = ( 162 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 163 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 164 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 165 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 166 | ); 167 | runOnlyForDeploymentPostprocessing = 0; 168 | }; 169 | /* End PBXResourcesBuildPhase section */ 170 | 171 | /* Begin PBXShellScriptBuildPhase section */ 172 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 173 | isa = PBXShellScriptBuildPhase; 174 | buildActionMask = 2147483647; 175 | files = ( 176 | ); 177 | inputPaths = ( 178 | ); 179 | name = "Thin Binary"; 180 | outputPaths = ( 181 | ); 182 | runOnlyForDeploymentPostprocessing = 0; 183 | shellPath = /bin/sh; 184 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 185 | }; 186 | 9740EEB61CF901F6004384FC /* Run Script */ = { 187 | isa = PBXShellScriptBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | ); 191 | inputPaths = ( 192 | ); 193 | name = "Run Script"; 194 | outputPaths = ( 195 | ); 196 | runOnlyForDeploymentPostprocessing = 0; 197 | shellPath = /bin/sh; 198 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 199 | }; 200 | /* End PBXShellScriptBuildPhase section */ 201 | 202 | /* Begin PBXSourcesBuildPhase section */ 203 | 97C146EA1CF9000F007C117D /* Sources */ = { 204 | isa = PBXSourcesBuildPhase; 205 | buildActionMask = 2147483647; 206 | files = ( 207 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 208 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 209 | ); 210 | runOnlyForDeploymentPostprocessing = 0; 211 | }; 212 | /* End PBXSourcesBuildPhase section */ 213 | 214 | /* Begin PBXVariantGroup section */ 215 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 216 | isa = PBXVariantGroup; 217 | children = ( 218 | 97C146FB1CF9000F007C117D /* Base */, 219 | ); 220 | name = Main.storyboard; 221 | sourceTree = ""; 222 | }; 223 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 224 | isa = PBXVariantGroup; 225 | children = ( 226 | 97C147001CF9000F007C117D /* Base */, 227 | ); 228 | name = LaunchScreen.storyboard; 229 | sourceTree = ""; 230 | }; 231 | /* End PBXVariantGroup section */ 232 | 233 | /* Begin XCBuildConfiguration section */ 234 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 235 | isa = XCBuildConfiguration; 236 | buildSettings = { 237 | ALWAYS_SEARCH_USER_PATHS = NO; 238 | CLANG_ANALYZER_NONNULL = YES; 239 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 240 | CLANG_CXX_LIBRARY = "libc++"; 241 | CLANG_ENABLE_MODULES = YES; 242 | CLANG_ENABLE_OBJC_ARC = YES; 243 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 244 | CLANG_WARN_BOOL_CONVERSION = YES; 245 | CLANG_WARN_COMMA = YES; 246 | CLANG_WARN_CONSTANT_CONVERSION = YES; 247 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 248 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 249 | CLANG_WARN_EMPTY_BODY = YES; 250 | CLANG_WARN_ENUM_CONVERSION = YES; 251 | CLANG_WARN_INFINITE_RECURSION = YES; 252 | CLANG_WARN_INT_CONVERSION = YES; 253 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 254 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 255 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 256 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 257 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 258 | CLANG_WARN_STRICT_PROTOTYPES = YES; 259 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 260 | CLANG_WARN_UNREACHABLE_CODE = YES; 261 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 262 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 263 | COPY_PHASE_STRIP = NO; 264 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 265 | ENABLE_NS_ASSERTIONS = NO; 266 | ENABLE_STRICT_OBJC_MSGSEND = YES; 267 | GCC_C_LANGUAGE_STANDARD = gnu99; 268 | GCC_NO_COMMON_BLOCKS = YES; 269 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 270 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 271 | GCC_WARN_UNDECLARED_SELECTOR = YES; 272 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 273 | GCC_WARN_UNUSED_FUNCTION = YES; 274 | GCC_WARN_UNUSED_VARIABLE = YES; 275 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 276 | MTL_ENABLE_DEBUG_INFO = NO; 277 | SDKROOT = iphoneos; 278 | SUPPORTED_PLATFORMS = iphoneos; 279 | TARGETED_DEVICE_FAMILY = "1,2"; 280 | VALIDATE_PRODUCT = YES; 281 | }; 282 | name = Profile; 283 | }; 284 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 285 | isa = XCBuildConfiguration; 286 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 287 | buildSettings = { 288 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 289 | CLANG_ENABLE_MODULES = YES; 290 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 291 | ENABLE_BITCODE = NO; 292 | INFOPLIST_FILE = Runner/Info.plist; 293 | LD_RUNPATH_SEARCH_PATHS = ( 294 | "$(inherited)", 295 | "@executable_path/Frameworks", 296 | ); 297 | PRODUCT_BUNDLE_IDENTIFIER = com.example.legoStyle; 298 | PRODUCT_NAME = "$(TARGET_NAME)"; 299 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 300 | SWIFT_VERSION = 5.0; 301 | VERSIONING_SYSTEM = "apple-generic"; 302 | }; 303 | name = Profile; 304 | }; 305 | 97C147031CF9000F007C117D /* Debug */ = { 306 | isa = XCBuildConfiguration; 307 | buildSettings = { 308 | ALWAYS_SEARCH_USER_PATHS = NO; 309 | CLANG_ANALYZER_NONNULL = YES; 310 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 311 | CLANG_CXX_LIBRARY = "libc++"; 312 | CLANG_ENABLE_MODULES = YES; 313 | CLANG_ENABLE_OBJC_ARC = YES; 314 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 315 | CLANG_WARN_BOOL_CONVERSION = YES; 316 | CLANG_WARN_COMMA = YES; 317 | CLANG_WARN_CONSTANT_CONVERSION = YES; 318 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 319 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 320 | CLANG_WARN_EMPTY_BODY = YES; 321 | CLANG_WARN_ENUM_CONVERSION = YES; 322 | CLANG_WARN_INFINITE_RECURSION = YES; 323 | CLANG_WARN_INT_CONVERSION = YES; 324 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 325 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 326 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 327 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 328 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 329 | CLANG_WARN_STRICT_PROTOTYPES = YES; 330 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 331 | CLANG_WARN_UNREACHABLE_CODE = YES; 332 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 333 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 334 | COPY_PHASE_STRIP = NO; 335 | DEBUG_INFORMATION_FORMAT = dwarf; 336 | ENABLE_STRICT_OBJC_MSGSEND = YES; 337 | ENABLE_TESTABILITY = YES; 338 | GCC_C_LANGUAGE_STANDARD = gnu99; 339 | GCC_DYNAMIC_NO_PIC = NO; 340 | GCC_NO_COMMON_BLOCKS = YES; 341 | GCC_OPTIMIZATION_LEVEL = 0; 342 | GCC_PREPROCESSOR_DEFINITIONS = ( 343 | "DEBUG=1", 344 | "$(inherited)", 345 | ); 346 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 347 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 348 | GCC_WARN_UNDECLARED_SELECTOR = YES; 349 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 350 | GCC_WARN_UNUSED_FUNCTION = YES; 351 | GCC_WARN_UNUSED_VARIABLE = YES; 352 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 353 | MTL_ENABLE_DEBUG_INFO = YES; 354 | ONLY_ACTIVE_ARCH = YES; 355 | SDKROOT = iphoneos; 356 | TARGETED_DEVICE_FAMILY = "1,2"; 357 | }; 358 | name = Debug; 359 | }; 360 | 97C147041CF9000F007C117D /* Release */ = { 361 | isa = XCBuildConfiguration; 362 | buildSettings = { 363 | ALWAYS_SEARCH_USER_PATHS = NO; 364 | CLANG_ANALYZER_NONNULL = YES; 365 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 366 | CLANG_CXX_LIBRARY = "libc++"; 367 | CLANG_ENABLE_MODULES = YES; 368 | CLANG_ENABLE_OBJC_ARC = YES; 369 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 370 | CLANG_WARN_BOOL_CONVERSION = YES; 371 | CLANG_WARN_COMMA = YES; 372 | CLANG_WARN_CONSTANT_CONVERSION = YES; 373 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 374 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 375 | CLANG_WARN_EMPTY_BODY = YES; 376 | CLANG_WARN_ENUM_CONVERSION = YES; 377 | CLANG_WARN_INFINITE_RECURSION = YES; 378 | CLANG_WARN_INT_CONVERSION = YES; 379 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 380 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 381 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 382 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 383 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 384 | CLANG_WARN_STRICT_PROTOTYPES = YES; 385 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 386 | CLANG_WARN_UNREACHABLE_CODE = YES; 387 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 388 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 389 | COPY_PHASE_STRIP = NO; 390 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 391 | ENABLE_NS_ASSERTIONS = NO; 392 | ENABLE_STRICT_OBJC_MSGSEND = YES; 393 | GCC_C_LANGUAGE_STANDARD = gnu99; 394 | GCC_NO_COMMON_BLOCKS = YES; 395 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 396 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 397 | GCC_WARN_UNDECLARED_SELECTOR = YES; 398 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 399 | GCC_WARN_UNUSED_FUNCTION = YES; 400 | GCC_WARN_UNUSED_VARIABLE = YES; 401 | IPHONEOS_DEPLOYMENT_TARGET = 9.0; 402 | MTL_ENABLE_DEBUG_INFO = NO; 403 | SDKROOT = iphoneos; 404 | SUPPORTED_PLATFORMS = iphoneos; 405 | SWIFT_COMPILATION_MODE = wholemodule; 406 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 407 | TARGETED_DEVICE_FAMILY = "1,2"; 408 | VALIDATE_PRODUCT = YES; 409 | }; 410 | name = Release; 411 | }; 412 | 97C147061CF9000F007C117D /* Debug */ = { 413 | isa = XCBuildConfiguration; 414 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 415 | buildSettings = { 416 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 417 | CLANG_ENABLE_MODULES = YES; 418 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 419 | ENABLE_BITCODE = NO; 420 | INFOPLIST_FILE = Runner/Info.plist; 421 | LD_RUNPATH_SEARCH_PATHS = ( 422 | "$(inherited)", 423 | "@executable_path/Frameworks", 424 | ); 425 | PRODUCT_BUNDLE_IDENTIFIER = com.example.legoStyle; 426 | PRODUCT_NAME = "$(TARGET_NAME)"; 427 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 428 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 429 | SWIFT_VERSION = 5.0; 430 | VERSIONING_SYSTEM = "apple-generic"; 431 | }; 432 | name = Debug; 433 | }; 434 | 97C147071CF9000F007C117D /* Release */ = { 435 | isa = XCBuildConfiguration; 436 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 437 | buildSettings = { 438 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 439 | CLANG_ENABLE_MODULES = YES; 440 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 441 | ENABLE_BITCODE = NO; 442 | INFOPLIST_FILE = Runner/Info.plist; 443 | LD_RUNPATH_SEARCH_PATHS = ( 444 | "$(inherited)", 445 | "@executable_path/Frameworks", 446 | ); 447 | PRODUCT_BUNDLE_IDENTIFIER = com.example.legoStyle; 448 | PRODUCT_NAME = "$(TARGET_NAME)"; 449 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 450 | SWIFT_VERSION = 5.0; 451 | VERSIONING_SYSTEM = "apple-generic"; 452 | }; 453 | name = Release; 454 | }; 455 | /* End XCBuildConfiguration section */ 456 | 457 | /* Begin XCConfigurationList section */ 458 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 459 | isa = XCConfigurationList; 460 | buildConfigurations = ( 461 | 97C147031CF9000F007C117D /* Debug */, 462 | 97C147041CF9000F007C117D /* Release */, 463 | 249021D3217E4FDB00AE95B9 /* Profile */, 464 | ); 465 | defaultConfigurationIsVisible = 0; 466 | defaultConfigurationName = Release; 467 | }; 468 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 469 | isa = XCConfigurationList; 470 | buildConfigurations = ( 471 | 97C147061CF9000F007C117D /* Debug */, 472 | 97C147071CF9000F007C117D /* Release */, 473 | 249021D4217E4FDB00AE95B9 /* Profile */, 474 | ); 475 | defaultConfigurationIsVisible = 0; 476 | defaultConfigurationName = Release; 477 | }; 478 | /* End XCConfigurationList section */ 479 | }; 480 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 481 | } 482 | --------------------------------------------------------------------------------