diff --git a/.fcheck b/.fcheck index 6448d7a..d97cf86 100644 --- a/.fcheck +++ b/.fcheck @@ -1,4 +1,5 @@ input: exclude: - - "**/firebase_options*.dart" - - "**/gen/l10n/app_localizations.dart" + - "**/firebase_options.dart" + - "**/firebase_options.example.dart" + - "lib/gen/l10n/app_localizations.dart" diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..0698cb7 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,19 @@ +{ + "cSpell.words": [ + "flutterfire", + "mocktail", + "Roboto" + ], + "files.exclude": { + "**/build": true + }, + "search.exclude": { + "**/build": true + }, + "files.watcherExclude": { + "**/build/**": true + }, + "dart.analysisExcludedFolders": [ + "build" + ] +} \ No newline at end of file diff --git a/analysis_options.yaml b/analysis_options.yaml index 7d4bbb6..5d8a804 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -2,9 +2,9 @@ include: package:flutter_lints/flutter.yaml analyzer: exclude: + - "**/build/**" - "**/*.g.dart" - "**/*.freezed.dart" - "**/*.graphql.dart" - "**/*.mocks.dart" - "**/generated/**" - diff --git a/fcheck_files.svg b/fcheck_files.svg index 5b54383..e20de14 100644 --- a/fcheck_files.svg +++ b/fcheck_files.svg @@ -1,5 +1,5 @@ - + @@ -243,30 +243,28 @@ 6 7 - -8 - -9 - -10 - -11 - -12 - -13 - -14 + +8 + +9 + +10 + +11 + +12 + +13 + +14 File: /Users/jp/src/github/vteam/fCards/lib/main.dart File: /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart File: /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart File: /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart File: /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart File: /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/game/golf_score_model.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/game/golf_score_model.dart File: /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart File: /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart File: /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart File: /Users/jp/src/github/vteam/fCards/lib/utils/browser_utils.dart @@ -281,299 +279,297 @@ File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart File: /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart File: /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/app/locale_controller.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/dialog.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/player/status_picker.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/date_importance.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart -File: /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/card/card_dimensions.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/game/game_history.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/app/auth_service.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/player/player_status.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/card/hand_model.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/card/card_model_french.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wiggle_widget.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/game/game_constants.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/app/constants_animation.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart -File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart -File: /Users/jp/src/github/vteam/fCards/lib/models/app/constants_card_value.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/app/locale_controller.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/dialog.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/player/status_picker.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/date_importance.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart +File: /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/card/card_dimensions.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/game/game_history.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/app/auth_service.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/player/player_status.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/card/hand_model.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/card/card_model_french.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wiggle_widget.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/game/game_constants.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/app/constants_animation.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart +File: /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart +File: /Users/jp/src/github/vteam/fCards/lib/models/app/constants_card_value.dart - + - - /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header.dart - - - - /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart - - - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + /Users/jp/src/github/vteam/fCards/lib/utils/browser_utils.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/browser_utils_web.dart - + /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - - - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/dialog.dart + + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header.dart - + /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_constants.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_dimensions.dart - - /Users/jp/src/github/vteam/fCards/lib/utils/browser_utils.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/browser_utils_web.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_dimensions.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/locale_controller.dart - - - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart - - /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart + + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart + + /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart + + /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_card_value.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/golf_score_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_card_value.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/dialog.dart + + + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart /Users/jp/src/github/vteam/fCards/lib/utils/browser_utils.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/browser_utils_stub.dart - - /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/locale_controller.dart + + + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart - - /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/player/player_status.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart - - /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/status_picker.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/browser_utils.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/browser_utils.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/status_picker.dart + + /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/player/player_status.dart /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart - + /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/player/player_status.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/golf_score_model.dart + + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart + + + + /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_history.dart + + + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/players_in_room_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/hand_model.dart + + /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart - - /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/date_importance.dart - + /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/hand_model.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart + + /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/auth_service.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_history.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart + + /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart + + + + /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/hand_model.dart - + /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/date_importance.dart + + /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wizard_footer.dart - + /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model_french.dart - + /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/auth_service.dart - - - + /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wiggle_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_animation.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wiggle_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_animation.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wiggle_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_dimensions.dart - - - + /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_french_widget.dart @@ -581,71 +577,83 @@ /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart + + /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/status_picker.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/player/player_status.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/dialog.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/status_picker.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/player/player_status.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart + + + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_dimensions.dart + + + + /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart - + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart + + + /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_history.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button.dart - + /Users/jp/src/github/vteam/fCards/lib/models/card/hand_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - + /Users/jp/src/github/vteam/fCards/lib/models/card/hand_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_card_value.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_face_skyjo_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wiggle_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart @@ -653,443 +661,455 @@ /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_card_value.dart + + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_card_value.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - + /Users/jp/src/github/vteam/fCards/lib/models/player/player_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/player/players_in_room_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart + + /Users/jp/src/github/vteam/fCards/lib/models/game/deck_model.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - - - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart - + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart + + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + + /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/status_picker.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wizard_footer.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/date_importance.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_pile_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wizard_footer.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/status_picker.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/date_importance.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart - + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_card_value.dart + + + + /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_dimensions.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_card_value.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wizard_footer.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_animation.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wizard_footer.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_cta_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_model.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/edit_box.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart - - - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/cards/card_widget.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/player/players_in_room_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/screen.dart - + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_over_dialog.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + + /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_history.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_zone_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/players_in_room_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/table_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/players_in_room_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/my_text.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_dimensions.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/table_name_flow_helpers.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart - + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_dimensions.dart + + + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/player/players_in_room_widget.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/wizard_footer.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model_french.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_constants.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/locale_controller.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/join_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/locale_controller.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_history.dart + + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_history.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - - + /Users/jp/src/github/vteam/fCards/lib/screens/game/game_style.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - - /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart - + + /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_rectangle.dart + + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/buttons/my_button_round.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_styles.dart - + + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/backend_model.dart + + + /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/auth_service.dart - + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/utils/logger.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_constants.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/create_table_name_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/game/game_constants.dart - + /Users/jp/src/github/vteam/fCards/lib/widgets/player/player_header.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/widgets/helpers/input_keyboard.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - - + /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart - + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/auth_service.dart - + /Users/jp/src/github/vteam/fCards/lib/main.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/app_theme.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart - - /Users/jp/src/github/vteam/fCards/lib/screens/game/start_game_wizard_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/card/card_model.dart + + /Users/jp/src/github/vteam/fCards/lib/screens/keepscore/golf_score_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart - + /Users/jp/src/github/vteam/fCards/lib/screens/welcome/welcome_screen.dart ▶ /Users/jp/src/github/vteam/fCards/lib/models/app/constants_layout.dart @@ -1124,14 +1144,15 @@ 11. main.dart - 81. app_theme.dart + 91. app_theme.dart 2. constants_layout.dart 3. game_constants.dart 4. golf_score_model.dart 5. input_keyboard.dart -6. my_button_round.dart -7. player_header.dart -8. screen.dartgolf_score_screen.dart +6. my_button_rectangle.dart +7. my_button_round.dart +8. player_header.dart +9. screen.dartgolf_score_screen.dart 11. main.dart @@ -1164,13 +1185,7 @@ 3. my_button_rectangle.dartplayer_header.dart - 11. golf_score_screen.dart - - 21. constants_layout.dart -2. my_button_round.dartinput_keyboard.dart - - - 11. golf_score_screen.dartgolf_score_model.dart + 11. golf_score_screen.dartgolf_score_model.dart 21. create_table_name_screen.dart @@ -1191,13 +1206,6 @@ 13. screen.dart 14. table_name_flow_helpers.dart 15. table_widget.dartstart_game_screen.dart - - - 21. golf_score_screen.dart -2. input_keyboard.dart - - 21. constants_layout.dart -2. my_button.dartmy_button_round.dart 21. create_table_name_screen.dart @@ -1309,17 +1317,19 @@ 4. start_game_screen.dart 5. table_widget.dart - 21. app_theme.dart -2. constants_layout.dartedit_box.dart + 31. app_theme.dart +2. constants_layout.dart +3. input_keyboard.dartedit_box.dart 11. game_screen.dart - 51. backend_model.dart + 61. backend_model.dart 2. constants_layout.dart 3. dialog.dart 4. game_model.dart -5. my_text.dartgame_over_dialog.dart +5. my_button_rectangle.dart +6. my_text.dartgame_over_dialog.dart 11. game_screen.dart @@ -1330,30 +1340,38 @@ 4. player_header_widget.dart 5. player_zone_cta_widget.dartplayer_zone_widget.dart - - 21. main.dart -2. screen.dartlocale_controller.dart + + 21. edit_box.dart +2. golf_score_screen.dart + + 31. constants_layout.dart +2. my_button_rectangle.dart +3. my_button_round.dartinput_keyboard.dart + + + 21. main.dart +2. screen.dartlocale_controller.dart - - 11. player_zone_widget.dart - - 71. constants_card_value.dart + + 11. player_zone_widget.dart + + 71. constants_card_value.dart 2. constants_layout.dart 3. date_importance.dart 4. dialog.dart 5. game_model.dart 6. my_text.dart -7. status_picker.dartplayer_header_widget.dart +7. status_picker.dartplayer_header_widget.dart - - 11. player_zone_widget.dart - - 31. card_pile_widget.dart + <path d="M 2910.0,325.0 L 2898.0,318.0 Q 2895.0,318.0 2895.0,321.0 L 2895.0,329.0 Q 2895.0,332.0 2898.0,332.0 Z" fill="#3b82f6"/> + <text x="2899.68" y="326.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">1</text><title>1. player_zone_widget.dart + + 31. card_pile_widget.dart 2. constants_layout.dart -3. game_model.dartplayer_zone_cta_widget.dart +3. game_model.dartplayer_zone_cta_widget.dart - - 81. game_over_dialog.dart + <path d="M 3328.0,115.0 L 3316.0,108.0 Q 3313.0,108.0 3313.0,111.0 L 3313.0,119.0 Q 3313.0,122.0 3316.0,122.0 Z" fill="#3b82f6"/> + <text x="3317.68" y="116.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">8</text><title>1. game_over_dialog.dart 2. game_screen.dart 3. game_style.dart 4. join_game_screen.dart @@ -1361,43 +1379,68 @@ 6. player_zone_cta_widget.dart 7. player_zone_widget.dart 8. start_game_screen.dart - - 71. backend_model.dart + <path d="M 3542.0,115.0 L 3530.0,108.0 Q 3527.0,108.0 3527.0,111.0 L 3527.0,119.0 Q 3527.0,122.0 3530.0,122.0 Z" fill="#10b981"/> + <text x="3531.68" y="116.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">7</text><title>1. backend_model.dart 2. deck_model.dart 3. game_history.dart 4. game_styles.dart -5. player_model.dartgame_model.dart +5. player_model.dartgame_model.dart - - 21. game_over_dialog.dart + <path d="M 3328.0,185.0 L 3316.0,178.0 Q 3313.0,178.0 3313.0,181.0 L 3313.0,189.0 Q 3313.0,192.0 3316.0,192.0 Z" fill="#3b82f6"/> + <text x="3317.68" y="186.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">2</text><title>1. game_over_dialog.dart 2. player_header_widget.dart - - 21. constants_layout.dart -2. my_button_rectangle.dartdialog.dart + + 21. constants_layout.dart +2. my_button_rectangle.dartdialog.dart - - 11. player_zone_cta_widget.dart - - 41. card_dimensions.dart + <path d="M 3328.0,255.0 L 3316.0,248.0 Q 3313.0,248.0 3313.0,251.0 L 3313.0,259.0 Q 3313.0,262.0 3316.0,262.0 Z" fill="#3b82f6"/> + <text x="3317.68" y="256.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">2</text><title>1. golf_score_screen.dart +2. input_keyboard.dart + + 21. constants_layout.dart +2. my_button.dartmy_button_round.dart + + + 11. player_zone_cta_widget.dart + + 41. card_dimensions.dart 2. card_model.dart 3. card_widget.dart -4. constants_layout.dartcard_pile_widget.dart +4. constants_layout.dartcard_pile_widget.dart - - 11. player_header_widget.dart - - 31. constants_layout.dart + <path d="M 3328.0,395.0 L 3316.0,388.0 Q 3313.0,388.0 3313.0,391.0 L 3313.0,399.0 Q 3313.0,402.0 3316.0,402.0 Z" fill="#3b82f6"/> + <text x="3317.68" y="396.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">1</text><title>1. player_header_widget.dart + + 31. constants_layout.dart 2. my_text.dart -3. player_status.dartstatus_picker.dart +3. player_status.dartstatus_picker.dart - - 11. player_header_widget.dart - - 21. constants_layout.dart -2. my_text.dartdate_importance.dart + + 11. player_header_widget.dart + + 21. constants_layout.dart +2. my_text.dartdate_importance.dart - - 91. game_model.dart + <path d="M 3758.0,115.0 L 3742.0,107.4 Q 3739.0,107.4 3739.0,110.4 L 3739.0,119.6 Q 3739.0,122.6 3742.0,122.6 Z" fill="#3b82f6"/> + <text x="3744.72" y="116.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold" textLength="10.120000000000001" lengthAdjust="spacingAndGlyphs">12</text><title>1. create_table_name_screen.dart +2. dialog.dart +3. game_over_dialog.dart +4. golf_score_screen.dart +5. input_keyboard.dart +6. join_game_screen.dart +7. player_header.dart +8. screen.dart +9. start_game_screen.dart +10. start_game_wizard_screen.dart +11. welcome_screen.dart +12. wizard_footer.dart + + 31. app_theme.dart +2. constants_layout.dart +3. my_button.dartmy_button_rectangle.dart + + + 91. game_model.dart 2. game_over_dialog.dart 3. game_screen.dart 4. join_game_screen.dart @@ -1406,56 +1449,42 @@ 7. start_game_wizard_screen.dart 8. table_name_flow_helpers.dart 9. welcome_screen.dart - - 31. auth_service.dart + <path d="M 3970.0,185.0 L 3958.0,178.0 Q 3955.0,178.0 3955.0,181.0 L 3955.0,189.0 Q 3955.0,192.0 3958.0,192.0 Z" fill="#10b981"/> + <text x="3959.68" y="186.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">3</text><title>1. auth_service.dart 2. game_history.dart -3. logger.dartbackend_model.dart - - - 91. create_table_name_screen.dart -2. dialog.dart -3. join_game_screen.dart -4. player_header.dart -5. screen.dart -6. start_game_screen.dart -7. start_game_wizard_screen.dart -8. welcome_screen.dart -9. wizard_footer.dart - - 21. constants_layout.dart -2. my_button.dartmy_button_rectangle.dart +3. logger.dartbackend_model.dart - - 41. card_pile_widget.dart + <path d="M 3756.0,255.0 L 3744.0,248.0 Q 3741.0,248.0 3741.0,251.0 L 3741.0,259.0 Q 3741.0,262.0 3744.0,262.0 Z" fill="#3b82f6"/> + <text x="3745.68" y="256.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">4</text><title>1. card_pile_widget.dart 2. game_screen.dart 3. game_style.dart 4. player_zone_widget.dart - - 61. card_dimensions.dart + <path d="M 3970.0,255.0 L 3958.0,248.0 Q 3955.0,248.0 3955.0,251.0 L 3955.0,259.0 Q 3955.0,262.0 3958.0,262.0 Z" fill="#10b981"/> + <text x="3959.68" y="256.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">6</text><title>1. card_dimensions.dart 2. card_face_french_widget.dart 3. card_face_skyjo_widget.dart 4. card_model.dart 5. constants_layout.dart -6. wiggle_widget.dartcard_widget.dart +6. wiggle_widget.dartcard_widget.dart - - 21. game_model.dart - - 61. card_model.dart + <path d="M 3756.0,325.0 L 3744.0,318.0 Q 3741.0,318.0 3741.0,321.0 L 3741.0,329.0 Q 3741.0,332.0 3744.0,332.0 Z" fill="#3b82f6"/> + <text x="3745.68" y="326.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">2</text><title>1. game_model.dart + + 61. card_model.dart 2. hand_model.dart 3. logger.dart -4. player_status.dartplayer_model.dart +4. player_status.dartplayer_model.dart - - 21. game_model.dart - - 51. card_model.dart + <path d="M 3756.0,395.0 L 3744.0,388.0 Q 3741.0,388.0 3741.0,391.0 L 3741.0,399.0 Q 3741.0,402.0 3744.0,402.0 Z" fill="#3b82f6"/> + <text x="3745.68" y="396.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">2</text><title>1. game_model.dart + + 51. card_model.dart 2. card_model_french.dart 3. constants_card_value.dart -4. game_styles.dartdeck_model.dart +4. game_styles.dartdeck_model.dart - - 101. backend_model.dart + <path d="M 4174.0,115.0 L 4158.0,107.4 Q 4155.0,107.4 4155.0,110.4 L 4155.0,119.6 Q 4155.0,122.6 4158.0,122.6 Z" fill="#3b82f6"/> + <text x="4160.72" y="116.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold" textLength="10.120000000000001" lengthAdjust="spacingAndGlyphs">10</text><title>1. backend_model.dart 2. create_table_name_screen.dart 3. game_style.dart 4. join_game_screen.dart @@ -1464,10 +1493,10 @@ 7. screen.dart 8. start_game_screen.dart 9. start_game_wizard_screen.dart -10. welcome_screen.dartlogger.dart +10. welcome_screen.dartlogger.dart - - 81. create_table_name_screen.dart + <path d="M 4172.0,185.0 L 4160.0,178.0 Q 4157.0,178.0 4157.0,181.0 L 4157.0,189.0 Q 4157.0,192.0 4160.0,192.0 Z" fill="#3b82f6"/> + <text x="4161.68" y="186.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">8</text><title>1. create_table_name_screen.dart 2. deck_model.dart 3. game_model.dart 4. game_style.dart @@ -1475,94 +1504,95 @@ 6. start_game_screen.dart 7. start_game_wizard_screen.dart 8. table_name_flow_helpers.dart - - 21. card_model.dart -2. game_constants.dartgame_styles.dart + + 21. card_model.dart +2. game_constants.dartgame_styles.dart - - 41. card_pile_widget.dart + <path d="M 4172.0,255.0 L 4160.0,248.0 Q 4157.0,248.0 4157.0,251.0 L 4157.0,259.0 Q 4157.0,262.0 4160.0,262.0 Z" fill="#3b82f6"/> + <text x="4161.68" y="256.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">4</text><title>1. card_pile_widget.dart 2. card_widget.dart 3. game_screen.dart -4. game_style.dartcard_dimensions.dart +4. game_style.dartcard_dimensions.dart - - 41. backend_model.dart + <path d="M 4172.0,325.0 L 4160.0,318.0 Q 4157.0,318.0 4157.0,321.0 L 4157.0,329.0 Q 4157.0,332.0 4160.0,332.0 Z" fill="#3b82f6"/> + <text x="4161.68" y="326.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">4</text><title>1. backend_model.dart 2. game_model.dart 3. join_game_screen.dart -4. start_game_screen.dartgame_history.dart +4. start_game_screen.dartgame_history.dart - - 31. backend_model.dart + <path d="M 4172.0,395.0 L 4160.0,388.0 Q 4157.0,388.0 4157.0,391.0 L 4157.0,399.0 Q 4157.0,402.0 4160.0,402.0 Z" fill="#3b82f6"/> + <text x="4161.68" y="396.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">3</text><title>1. backend_model.dart 2. main.dart -3. welcome_screen.dartauth_service.dart +3. welcome_screen.dartauth_service.dart - - 31. player_model.dart -2. status_picker.dartplayer_status.dart + + 31. player_model.dart +2. status_picker.dartplayer_status.dart - - 21. player_model.dart - - 21. card_model.darthand_model.dart + + 21. player_model.dart + + 21. card_model.darthand_model.dart - - 21. my_button_rectangle.dart + <path d="M 4172.0,605.0 L 4160.0,598.0 Q 4157.0,598.0 4157.0,601.0 L 4157.0,609.0 Q 4157.0,612.0 4160.0,612.0 Z" fill="#3b82f6"/> + <text x="4161.68" y="606.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">2</text><title>1. my_button_rectangle.dart 2. my_button_round.dart - - 21. app_theme.dart -2. constants_layout.dartmy_button.dart + + 21. app_theme.dart +2. constants_layout.dartmy_button.dart - - 21. deck_model.dart -2. game_style.dartcard_model_french.dart + + 21. deck_model.dart +2. game_style.dartcard_model_french.dart - - 11. card_widget.dart - - 51. card_face_french_widget.dart + <path d="M 4172.0,745.0 L 4160.0,738.0 Q 4157.0,738.0 4157.0,741.0 L 4157.0,749.0 Q 4157.0,752.0 4160.0,752.0 Z" fill="#3b82f6"/> + <text x="4161.68" y="746.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">1</text><title>1. card_widget.dart + + 51. card_face_french_widget.dart 2. card_model.dart 3. constants_card_value.dart 4. constants_layout.dart -5. my_text.dartcard_face_skyjo_widget.dart +5. my_text.dartcard_face_skyjo_widget.dart - - 11. card_widget.dart - - 21. constants_animation.dart -2. constants_layout.dartwiggle_widget.dart + + 11. card_widget.dart + + 21. constants_animation.dart +2. constants_layout.dartwiggle_widget.dart - - 71. edit_box.dart + <path d="M 4534.0,115.0 L 4522.0,108.0 Q 4519.0,108.0 4519.0,111.0 L 4519.0,119.0 Q 4519.0,122.0 4522.0,122.0 Z" fill="#3b82f6"/> + <text x="4523.68" y="116.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">8</text><title>1. edit_box.dart 2. golf_score_screen.dart 3. main.dart 4. my_button.dart -5. players_in_room_widget.dart -6. table_widget.dart -7. welcome_screen.dart - - 11. constants_layout.dartapp_theme.dart +5. my_button_rectangle.dart +6. players_in_room_widget.dart +7. table_widget.dart +8. welcome_screen.dart + + 11. constants_layout.dartapp_theme.dart - - 41. game_style.dart + <path d="M 4534.0,185.0 L 4522.0,178.0 Q 4519.0,178.0 4519.0,181.0 L 4519.0,189.0 Q 4519.0,192.0 4522.0,192.0 Z" fill="#3b82f6"/> + <text x="4523.68" y="186.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">4</text><title>1. game_style.dart 2. game_styles.dart 3. golf_score_screen.dart -4. start_game_wizard_screen.dartgame_constants.dart +4. start_game_wizard_screen.dartgame_constants.dart - - 21. card_face_skyjo_widget.dart + <path d="M 4534.0,255.0 L 4522.0,248.0 Q 4519.0,248.0 4519.0,251.0 L 4519.0,259.0 Q 4519.0,262.0 4522.0,262.0 Z" fill="#3b82f6"/> + <text x="4523.68" y="256.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">2</text><title>1. card_face_skyjo_widget.dart 2. card_widget.dart - - 41. card_model.dart + <path d="M 4748.0,255.0 L 4736.0,248.0 Q 4733.0,248.0 4733.0,251.0 L 4733.0,259.0 Q 4733.0,262.0 4736.0,262.0 Z" fill="#10b981"/> + <text x="4737.68" y="256.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">4</text><title>1. card_model.dart 2. constants_card_value.dart 3. constants_layout.dart -4. my_text.dartcard_face_french_widget.dart +4. my_text.dartcard_face_french_widget.dart - - 21. screen.dart -2. wiggle_widget.dartconstants_animation.dart + + 21. screen.dart +2. wiggle_widget.dartconstants_animation.dart - - 311. app_theme.dart + <path d="M 4876.0,115.0 L 4860.0,107.4 Q 4857.0,107.4 4857.0,110.4 L 4857.0,119.6 Q 4857.0,122.6 4860.0,122.6 Z" fill="#3b82f6"/> + <text x="4862.72" y="116.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold" textLength="10.120000000000001" lengthAdjust="spacingAndGlyphs">31</text><title>1. app_theme.dart 2. card_face_french_widget.dart 3. card_face_skyjo_widget.dart 4. card_pile_widget.dart @@ -1592,10 +1622,10 @@ 28. table_widget.dart 29. welcome_screen.dart 30. wiggle_widget.dart -31. wizard_footer.dartconstants_layout.dart +31. wizard_footer.dartconstants_layout.dart - - 111. card_face_french_widget.dart + <path d="M 4876.0,185.0 L 4860.0,177.4 Q 4857.0,177.4 4857.0,180.4 L 4857.0,189.6 Q 4857.0,192.6 4860.0,192.6 Z" fill="#3b82f6"/> + <text x="4862.72" y="186.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold" textLength="10.120000000000001" lengthAdjust="spacingAndGlyphs">11</text><title>1. card_face_french_widget.dart 2. card_face_skyjo_widget.dart 3. card_pile_widget.dart 4. card_widget.dart @@ -1603,20 +1633,20 @@ 6. game_styles.dart 7. hand_model.dart 8. player_model.dart -9. start_game_wizard_screen.dartcard_model.dart +9. start_game_wizard_screen.dartcard_model.dart - - 71. card_face_french_widget.dart + <path d="M 4874.0,255.0 L 4862.0,248.0 Q 4859.0,248.0 4859.0,251.0 L 4859.0,259.0 Q 4859.0,262.0 4862.0,262.0 Z" fill="#3b82f6"/> + <text x="4863.68" y="256.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">7</text><title>1. card_face_french_widget.dart 2. card_face_skyjo_widget.dart 3. date_importance.dart 4. game_over_dialog.dart 5. player_header_widget.dart 6. players_in_room_widget.dart -7. status_picker.dartmy_text.dart +7. status_picker.dartmy_text.dart - - 41. card_face_french_widget.dart + <path d="M 4874.0,325.0 L 4862.0,318.0 Q 4859.0,318.0 4859.0,321.0 L 4859.0,329.0 Q 4859.0,332.0 4862.0,332.0 Z" fill="#3b82f6"/> + <text x="4863.68" y="326.0" text-anchor="middle" fill="white" font-size="8.0" font-weight="bold">4</text><title>1. card_face_french_widget.dart 2. card_face_skyjo_widget.dart 3. deck_model.dart -4. player_header_widget.dartconstants_card_value.dart +4. player_header_widget.dartconstants_card_value.dart diff --git a/fcheck_folders.svg b/fcheck_folders.svg index ffc1f4c..d1309fe 100644 --- a/fcheck_folders.svg +++ b/fcheck_folders.svg @@ -1,5 +1,5 @@ - + @@ -505,17 +505,17 @@ File: screens/game/game_over_dialog.dart File: screens/welcome/welcome_screen.dart File: screens/keepscore/golf_score_screen.dart -File: widgets/buttons/my_button_round.dart -File: widgets/buttons/my_button_rectangle.dart +File: widgets/buttons/my_button_rectangle.dart +File: widgets/buttons/my_button_round.dart File: widgets/buttons/my_button.dart File: widgets/helpers/screen.dart File: widgets/helpers/table_widget.dart -File: widgets/helpers/date_importance.dart +File: widgets/helpers/edit_box.dart File: widgets/helpers/input_keyboard.dart -File: widgets/helpers/wiggle_widget.dart -File: widgets/helpers/dialog.dart -File: widgets/helpers/wizard_footer.dart -File: widgets/helpers/edit_box.dart +File: widgets/helpers/date_importance.dart +File: widgets/helpers/wiggle_widget.dart +File: widgets/helpers/dialog.dart +File: widgets/helpers/wizard_footer.dart File: widgets/helpers/my_text.dart File: widgets/player/player_zone_widget.dart File: widgets/player/player_header_widget.dart @@ -527,10 +527,6 @@ File: widgets/cards/card_widget.dart File: widgets/cards/card_face_skyjo_widget.dart File: widgets/cards/card_face_french_widget.dart - - - widgets/helpers/date_importance.dart ▶ widgets/helpers/my_text.dart - main.dart ▶ screens/game/start_game_wizard_screen.dart @@ -539,6 +535,10 @@ models/app/app_theme.dart ▶ models/app/constants_layout.dart + + + widgets/helpers/date_importance.dart ▶ widgets/helpers/my_text.dart + widgets/player/player_header_widget.dart ▶ widgets/player/status_picker.dart @@ -581,7 +581,7 @@ - widgets/buttons/my_button_rectangle.dart ▶ widgets/buttons/my_button.dart + widgets/buttons/my_button_round.dart ▶ widgets/buttons/my_button.dart @@ -595,6 +595,14 @@ widgets/cards/card_widget.dart ▶ widgets/cards/card_face_skyjo_widget.dart + + + widgets/helpers/edit_box.dart ▶ widgets/helpers/input_keyboard.dart + + + + widgets/helpers/table_widget.dart ▶ widgets/helpers/edit_box.dart + widgets/player/player_zone_widget.dart ▶ widgets/player/player_header_widget.dart @@ -607,14 +615,14 @@ main.dart ▶ screens/game/start_game_screen.dart - - - widgets/helpers/table_widget.dart ▶ widgets/helpers/edit_box.dart - widgets/player/player_zone_cta_widget.dart ▶ widgets/cards/card_pile_widget.dart + + + widgets/helpers/wizard_footer.dart ▶ widgets/buttons/my_button_rectangle.dart + models/game/backend_model.dart ▶ models/game/game_history.dart @@ -641,7 +649,7 @@ - widgets/buttons/my_button_round.dart ▶ widgets/buttons/my_button.dart + widgets/buttons/my_button_rectangle.dart ▶ widgets/buttons/my_button.dart @@ -668,7 +676,7 @@ models/game/backend_model.dart ▶ models/app/auth_service.dart - + widgets/cards/card_widget.dart ▶ widgets/helpers/wiggle_widget.dart @@ -676,8 +684,8 @@ screens/keepscore/golf_score_screen.dart ▶ widgets/player/player_header.dart - - widgets/helpers/wizard_footer.dart ▶ widgets/buttons/my_button_rectangle.dart + + widgets/helpers/dialog.dart ▶ widgets/buttons/my_button_rectangle.dart @@ -692,8 +700,8 @@ widgets/player/player_zone_widget.dart ▶ widgets/cards/card_widget.dart - - widgets/helpers/dialog.dart ▶ widgets/buttons/my_button_rectangle.dart + + widgets/helpers/input_keyboard.dart ▶ widgets/buttons/my_button_rectangle.dart @@ -712,11 +720,11 @@ models/game/game_model.dart ▶ models/game/game_styles.dart - - widgets/player/player_header_widget.dart ▶ widgets/helpers/date_importance.dart + + widgets/player/player_header.dart ▶ widgets/helpers/edit_box.dart - + widgets/helpers/input_keyboard.dart ▶ widgets/buttons/my_button_round.dart @@ -751,6 +759,10 @@ main.dart ▶ screens/game/join_game_screen.dart + + + screens/keepscore/golf_score_screen.dart ▶ widgets/helpers/screen.dart + widgets/buttons/my_button.dart ▶ models/app/app_theme.dart @@ -760,24 +772,16 @@ main.dart ▶ screens/welcome/welcome_screen.dart - - widgets/cards/card_face_skyjo_widget.dart ▶ widgets/helpers/my_text.dart - - - - screens/keepscore/golf_score_screen.dart ▶ widgets/helpers/screen.dart + + widgets/helpers/screen.dart ▶ widgets/buttons/my_button_rectangle.dart main.dart ▶ screens/keepscore/golf_score_screen.dart - - widgets/helpers/screen.dart ▶ widgets/buttons/my_button_rectangle.dart - - - - screens/game/start_game_screen.dart ▶ widgets/player/players_in_room_widget.dart + + widgets/cards/card_face_skyjo_widget.dart ▶ widgets/helpers/my_text.dart @@ -788,36 +792,40 @@ models/game/game_model.dart ▶ models/player/player_model.dart - - widgets/player/players_in_room_widget.dart ▶ widgets/helpers/my_text.dart + + widgets/player/player_header_widget.dart ▶ widgets/helpers/date_importance.dart - - widgets/buttons/my_button.dart ▶ models/app/constants_layout.dart + + screens/game/start_game_screen.dart ▶ widgets/player/players_in_room_widget.dart - - widgets/player/player_header_widget.dart ▶ widgets/helpers/dialog.dart + + widgets/buttons/my_button_rectangle.dart ▶ models/app/app_theme.dart - - widgets/buttons/my_button_rectangle.dart ▶ models/app/constants_layout.dart + + widgets/player/players_in_room_widget.dart ▶ widgets/helpers/my_text.dart + + + + widgets/buttons/my_button.dart ▶ models/app/constants_layout.dart widgets/player/status_picker.dart ▶ widgets/helpers/my_text.dart - - models/game/deck_model.dart ▶ models/card/card_model_french.dart + + widgets/buttons/my_button_round.dart ▶ models/app/constants_layout.dart - - widgets/player/player_header.dart ▶ widgets/helpers/edit_box.dart + + widgets/player/player_header_widget.dart ▶ widgets/helpers/dialog.dart - - models/game/game_styles.dart ▶ models/card/card_model.dart + + models/game/deck_model.dart ▶ models/card/card_model_french.dart @@ -828,24 +836,24 @@ screens/game/game_screen.dart ▶ widgets/cards/card_widget.dart - - widgets/helpers/edit_box.dart ▶ models/app/app_theme.dart + + models/game/game_styles.dart ▶ models/card/card_model.dart - - screens/keepscore/golf_score_screen.dart ▶ widgets/helpers/input_keyboard.dart + + widgets/player/player_header.dart ▶ widgets/buttons/my_button_rectangle.dart - widgets/buttons/my_button_round.dart ▶ models/app/constants_layout.dart + widgets/buttons/my_button_rectangle.dart ▶ models/app/constants_layout.dart - - screens/welcome/welcome_screen.dart ▶ widgets/helpers/screen.dart + + screens/keepscore/golf_score_screen.dart ▶ widgets/helpers/input_keyboard.dart - - widgets/player/player_header.dart ▶ widgets/buttons/my_button_rectangle.dart + + screens/welcome/welcome_screen.dart ▶ widgets/helpers/screen.dart @@ -860,7 +868,7 @@ screens/game/game_style.dart ▶ widgets/cards/card_widget.dart - + widgets/helpers/wiggle_widget.dart ▶ models/app/constants_animation.dart @@ -868,16 +876,16 @@ screens/game/game_screen.dart ▶ widgets/helpers/screen.dart - - widgets/helpers/edit_box.dart ▶ models/app/constants_layout.dart + + widgets/helpers/edit_box.dart ▶ models/app/app_theme.dart screens/game/join_game_screen.dart ▶ widgets/helpers/screen.dart - - widgets/helpers/table_widget.dart ▶ models/app/app_theme.dart + + widgets/helpers/wizard_footer.dart ▶ models/app/constants_layout.dart @@ -885,23 +893,23 @@ - widgets/helpers/wizard_footer.dart ▶ models/app/constants_layout.dart + widgets/helpers/dialog.dart ▶ models/app/constants_layout.dart - - screens/game/game_over_dialog.dart ▶ widgets/helpers/dialog.dart + + screens/game/start_game_screen.dart ▶ widgets/helpers/screen.dart - - widgets/helpers/dialog.dart ▶ models/app/constants_layout.dart + + widgets/helpers/table_widget.dart ▶ models/app/app_theme.dart - - screens/game/start_game_screen.dart ▶ widgets/helpers/screen.dart + + screens/game/join_game_screen.dart ▶ widgets/helpers/edit_box.dart - - widgets/helpers/screen.dart ▶ models/app/constants_animation.dart + + widgets/helpers/wiggle_widget.dart ▶ models/app/constants_layout.dart @@ -909,398 +917,410 @@ - widgets/helpers/wiggle_widget.dart ▶ models/app/constants_layout.dart + widgets/helpers/date_importance.dart ▶ models/app/constants_layout.dart - - screens/game/start_game_screen.dart ▶ widgets/helpers/table_widget.dart + + screens/game/start_game_wizard_screen.dart ▶ widgets/helpers/screen.dart - - widgets/helpers/input_keyboard.dart ▶ models/app/constants_layout.dart + + widgets/helpers/screen.dart ▶ models/app/constants_animation.dart - - screens/game/start_game_wizard_screen.dart ▶ widgets/helpers/screen.dart + + screens/game/start_game_screen.dart ▶ widgets/helpers/table_widget.dart + + + + widgets/helpers/input_keyboard.dart ▶ models/app/constants_layout.dart - + widgets/helpers/screen.dart ▶ models/app/locale_controller.dart - + widgets/player/player_zone_cta_widget.dart ▶ models/game/game_model.dart - + models/game/backend_model.dart ▶ utils/logger.dart - - screens/game/start_game_wizard_screen.dart ▶ widgets/helpers/table_widget.dart + + screens/game/start_game_screen.dart ▶ widgets/helpers/edit_box.dart - - widgets/helpers/date_importance.dart ▶ models/app/constants_layout.dart + + widgets/helpers/edit_box.dart ▶ models/app/constants_layout.dart - - screens/keepscore/golf_score_screen.dart ▶ widgets/buttons/my_button_round.dart + + screens/keepscore/golf_score_screen.dart ▶ widgets/buttons/my_button_rectangle.dart + + + + screens/game/start_game_wizard_screen.dart ▶ widgets/helpers/table_widget.dart - + widgets/helpers/table_widget.dart ▶ models/app/constants_layout.dart - + + screens/keepscore/golf_score_screen.dart ▶ widgets/buttons/my_button_round.dart + + + widgets/player/player_header_widget.dart ▶ models/game/game_model.dart - + widgets/helpers/screen.dart ▶ models/app/constants_layout.dart - + + screens/game/game_over_dialog.dart ▶ widgets/helpers/dialog.dart + + + widgets/player/player_zone_widget.dart ▶ models/game/game_model.dart - - screens/game/game_over_dialog.dart ▶ widgets/helpers/my_text.dart + + screens/game/create_table_name_screen.dart ▶ widgets/helpers/edit_box.dart - - screens/game/join_game_screen.dart ▶ widgets/helpers/wizard_footer.dart + + screens/game/game_over_dialog.dart ▶ widgets/helpers/my_text.dart - - widgets/cards/card_face_french_widget.dart ▶ models/app/constants_card_value.dart + + screens/welcome/welcome_screen.dart ▶ widgets/buttons/my_button_rectangle.dart - - screens/game/join_game_screen.dart ▶ widgets/helpers/edit_box.dart + + widgets/cards/card_face_french_widget.dart ▶ models/app/constants_card_value.dart - - screens/welcome/welcome_screen.dart ▶ widgets/buttons/my_button_rectangle.dart + + screens/game/join_game_screen.dart ▶ widgets/helpers/wizard_footer.dart - + widgets/cards/card_face_french_widget.dart ▶ models/app/constants_layout.dart - + widgets/cards/card_face_skyjo_widget.dart ▶ models/app/constants_card_value.dart - + widgets/cards/card_face_skyjo_widget.dart ▶ models/app/constants_layout.dart - + widgets/player/players_in_room_widget.dart ▶ models/app/app_theme.dart - + widgets/cards/card_widget.dart ▶ models/app/constants_layout.dart - - screens/game/start_game_screen.dart ▶ widgets/helpers/edit_box.dart + + screens/game/game_over_dialog.dart ▶ widgets/buttons/my_button_rectangle.dart - + widgets/cards/card_pile_widget.dart ▶ models/app/constants_layout.dart - - screens/game/create_table_name_screen.dart ▶ widgets/helpers/edit_box.dart + + screens/game/join_game_screen.dart ▶ widgets/buttons/my_button_rectangle.dart - + screens/game/start_game_wizard_screen.dart ▶ widgets/helpers/wizard_footer.dart - - screens/game/join_game_screen.dart ▶ widgets/buttons/my_button_rectangle.dart + + widgets/player/players_in_room_widget.dart ▶ models/app/constants_layout.dart - - widgets/player/players_in_room_widget.dart ▶ models/app/constants_layout.dart + + screens/game/start_game_screen.dart ▶ widgets/buttons/my_button_rectangle.dart - + widgets/player/status_picker.dart ▶ models/app/constants_layout.dart - + screens/keepscore/golf_score_screen.dart ▶ models/game/golf_score_model.dart - - screens/game/start_game_screen.dart ▶ widgets/buttons/my_button_rectangle.dart + + screens/game/create_table_name_screen.dart ▶ widgets/buttons/my_button_rectangle.dart - + widgets/player/player_zone_cta_widget.dart ▶ models/app/constants_layout.dart - + screens/keepscore/golf_score_screen.dart ▶ models/game/game_constants.dart - - screens/game/create_table_name_screen.dart ▶ widgets/buttons/my_button_rectangle.dart + + screens/game/start_game_wizard_screen.dart ▶ widgets/buttons/my_button_rectangle.dart - + screens/welcome/welcome_screen.dart ▶ models/game/backend_model.dart - + widgets/player/player_header.dart ▶ models/app/constants_layout.dart - + widgets/player/player_header_widget.dart ▶ models/app/constants_card_value.dart - - screens/game/start_game_wizard_screen.dart ▶ widgets/buttons/my_button_rectangle.dart - - - + widgets/player/player_header_widget.dart ▶ models/app/constants_layout.dart - + screens/game/game_over_dialog.dart ▶ models/game/game_model.dart - + widgets/cards/card_face_french_widget.dart ▶ models/card/card_model.dart - + widgets/player/player_zone_widget.dart ▶ models/app/constants_layout.dart - + screens/game/game_screen.dart ▶ models/game/game_model.dart - + widgets/cards/card_face_skyjo_widget.dart ▶ models/card/card_model.dart - + widgets/cards/card_widget.dart ▶ models/card/card_dimensions.dart - + widgets/player/status_picker.dart ▶ models/player/player_status.dart - + screens/game/game_over_dialog.dart ▶ models/game/backend_model.dart - + screens/game/join_game_screen.dart ▶ models/game/game_model.dart - + widgets/cards/card_pile_widget.dart ▶ models/card/card_dimensions.dart - + widgets/cards/card_widget.dart ▶ models/card/card_model.dart - + screens/keepscore/golf_score_screen.dart ▶ models/app/app_theme.dart - + screens/game/game_screen.dart ▶ models/game/backend_model.dart - + widgets/cards/card_pile_widget.dart ▶ models/card/card_model.dart - + screens/game/game_style.dart ▶ models/game/game_model.dart - + screens/game/join_game_screen.dart ▶ models/game/backend_model.dart - + widgets/helpers/screen.dart ▶ utils/logger.dart - + screens/game/join_game_screen.dart ▶ models/game/game_styles.dart - + screens/game/start_game_screen.dart ▶ models/game/game_model.dart - + screens/game/table_name_flow_helpers.dart ▶ models/game/backend_model.dart - + screens/game/table_name_flow_helpers.dart ▶ models/game/game_styles.dart - + screens/welcome/welcome_screen.dart ▶ models/app/app_theme.dart - + screens/game/game_style.dart ▶ models/game/game_styles.dart - + screens/game/start_game_screen.dart ▶ models/game/backend_model.dart - + screens/keepscore/golf_score_screen.dart ▶ models/app/constants_layout.dart - + screens/game/join_game_screen.dart ▶ models/game/game_history.dart - + screens/game/start_game_screen.dart ▶ models/game/game_styles.dart - + screens/game/create_table_name_screen.dart ▶ models/game/game_styles.dart - + screens/game/game_style.dart ▶ models/game/game_constants.dart - + screens/game/start_game_wizard_screen.dart ▶ models/game/backend_model.dart - + screens/welcome/welcome_screen.dart ▶ models/app/auth_service.dart - + screens/game/start_game_wizard_screen.dart ▶ models/game/game_styles.dart - + screens/game/start_game_screen.dart ▶ models/game/game_history.dart - + screens/welcome/welcome_screen.dart ▶ models/app/constants_layout.dart - + screens/game/start_game_wizard_screen.dart ▶ models/game/game_constants.dart - + main.dart ▶ models/game/backend_model.dart - + screens/game/game_over_dialog.dart ▶ models/app/constants_layout.dart - + screens/game/game_screen.dart ▶ models/app/constants_layout.dart - + screens/game/join_game_screen.dart ▶ models/app/constants_layout.dart - + screens/game/game_style.dart ▶ models/app/constants_layout.dart - + screens/game/start_game_screen.dart ▶ models/app/constants_layout.dart - + screens/game/create_table_name_screen.dart ▶ models/app/constants_layout.dart - + screens/game/start_game_wizard_screen.dart ▶ models/app/constants_layout.dart - + main.dart ▶ models/app/app_theme.dart - + main.dart ▶ models/app/locale_controller.dart - + main.dart ▶ models/app/auth_service.dart - + screens/game/game_screen.dart ▶ models/card/card_dimensions.dart - + screens/game/game_style.dart ▶ models/card/card_model_french.dart - + screens/game/game_style.dart ▶ models/card/card_dimensions.dart - + screens/welcome/welcome_screen.dart ▶ utils/logger.dart - + screens/game/start_game_wizard_screen.dart ▶ models/card/card_model.dart - + screens/game/join_game_screen.dart ▶ utils/logger.dart - + screens/game/start_game_screen.dart ▶ utils/browser_utils.dart - + screens/game/game_style.dart ▶ utils/logger.dart - + screens/game/start_game_screen.dart ▶ utils/logger.dart - + screens/game/create_table_name_screen.dart ▶ utils/logger.dart - + screens/game/start_game_wizard_screen.dart ▶ utils/logger.dart - + main.dart ▶ utils/logger.dart @@ -1367,13 +1387,14 @@ 9. widgets/cards/card_widget.dartcard_model.dart - 71. main.dart + 81. main.dart 2. screens/keepscore/golf_score_screen.dart 3. screens/welcome/welcome_screen.dart 4. widgets/buttons/my_button.dart -5. widgets/helpers/edit_box.dart -6. widgets/helpers/table_widget.dart -7. widgets/player/players_in_room_widget.dart +5. widgets/buttons/my_button_rectangle.dart +6. widgets/helpers/edit_box.dart +7. widgets/helpers/table_widget.dart +8. widgets/player/players_in_room_widget.dart 11. models/app/constants_layout.dartapp_theme.dart @@ -1611,11 +1632,12 @@ 11. screens/game/game_screen.dart - 51. models/app/constants_layout.dart + 61. models/app/constants_layout.dart 2. models/game/backend_model.dart 3. models/game/game_model.dart -4. widgets/helpers/dialog.dart -5. widgets/helpers/my_text.dartgame_over_dialog.dart +4. widgets/buttons/my_button_rectangle.dart +5. widgets/helpers/dialog.dart +6. widgets/helpers/my_text.dartgame_over_dialog.dart 11. main.dart @@ -1631,35 +1653,40 @@ 11. main.dart - 81. models/app/app_theme.dart + 91. models/app/app_theme.dart 2. models/app/constants_layout.dart 3. models/game/game_constants.dart 4. models/game/golf_score_model.dart -5. widgets/buttons/my_button_round.dart -6. widgets/helpers/input_keyboard.dart -7. widgets/helpers/screen.dart -8. widgets/player/player_header.dartgolf_score_screen.dart +5. widgets/buttons/my_button_rectangle.dart +6. widgets/buttons/my_button_round.dart +7. widgets/helpers/input_keyboard.dart +8. widgets/helpers/screen.dart +9. widgets/player/player_header.dartgolf_score_screen.dart - - 21. screens/keepscore/golf_score_screen.dart -2. widgets/helpers/input_keyboard.dart + + 121. screens/game/create_table_name_screen.dart +2. screens/game/game_over_dialog.dart +3. screens/game/join_game_screen.dart +4. screens/game/start_game_screen.dart +5. screens/game/start_game_wizard_screen.dart +6. screens/keepscore/golf_score_screen.dart +7. screens/welcome/welcome_screen.dart +8. widgets/helpers/dialog.dart +9. widgets/helpers/input_keyboard.dart +10. widgets/helpers/screen.dart +11. widgets/helpers/wizard_footer.dart +12. widgets/player/player_header.dart - 21. models/app/constants_layout.dart -2. widgets/buttons/my_button.dartmy_button_round.dart + 31. models/app/app_theme.dart +2. models/app/constants_layout.dart +3. widgets/buttons/my_button.dartmy_button_rectangle.dart - 91. screens/game/create_table_name_screen.dart -2. screens/game/join_game_screen.dart -3. screens/game/start_game_screen.dart -4. screens/game/start_game_wizard_screen.dart -5. screens/welcome/welcome_screen.dart -6. widgets/helpers/dialog.dart -7. widgets/helpers/screen.dart -8. widgets/helpers/wizard_footer.dart -9. widgets/player/player_header.dart + 21. screens/keepscore/golf_score_screen.dart +2. widgets/helpers/input_keyboard.dart 21. models/app/constants_layout.dart -2. widgets/buttons/my_button.dartmy_button_rectangle.dart +2. widgets/buttons/my_button.dartmy_button_round.dart 21. widgets/buttons/my_button_rectangle.dart @@ -1693,46 +1720,49 @@ 3. widgets/helpers/edit_box.darttable_widget.dart - 11. widgets/player/player_header_widget.dart + 51. screens/game/create_table_name_screen.dart +2. screens/game/join_game_screen.dart +3. screens/game/start_game_screen.dart +4. widgets/helpers/table_widget.dart +5. widgets/player/player_header.dart - 21. models/app/constants_layout.dart -2. widgets/helpers/my_text.dartdate_importance.dart + 31. models/app/app_theme.dart +2. models/app/constants_layout.dart +3. widgets/helpers/input_keyboard.dartedit_box.dart - 11. screens/keepscore/golf_score_screen.dart + 21. screens/keepscore/golf_score_screen.dart +2. widgets/helpers/edit_box.dart - 21. models/app/constants_layout.dart -2. widgets/buttons/my_button_round.dartinput_keyboard.dart + 31. models/app/constants_layout.dart +2. widgets/buttons/my_button_rectangle.dart +3. widgets/buttons/my_button_round.dartinput_keyboard.dart - 11. widgets/cards/card_widget.dart + 11. widgets/player/player_header_widget.dart - 21. models/app/constants_animation.dart -2. models/app/constants_layout.dartwiggle_widget.dart + 21. models/app/constants_layout.dart +2. widgets/helpers/my_text.dartdate_importance.dart - 21. screens/game/game_over_dialog.dart -2. widgets/player/player_header_widget.dart + 11. widgets/cards/card_widget.dart - 21. models/app/constants_layout.dart -2. widgets/buttons/my_button_rectangle.dartdialog.dart + 21. models/app/constants_animation.dart +2. models/app/constants_layout.dartwiggle_widget.dart - 21. screens/game/join_game_screen.dart -2. screens/game/start_game_wizard_screen.dart + 21. screens/game/game_over_dialog.dart +2. widgets/player/player_header_widget.dart 21. models/app/constants_layout.dart -2. widgets/buttons/my_button_rectangle.dartwizard_footer.dart +2. widgets/buttons/my_button_rectangle.dartdialog.dart - 51. screens/game/create_table_name_screen.dart -2. screens/game/join_game_screen.dart -3. screens/game/start_game_screen.dart -4. widgets/helpers/table_widget.dart -5. widgets/player/player_header.dart + 21. screens/game/join_game_screen.dart +2. screens/game/start_game_wizard_screen.dart - 21. models/app/app_theme.dart -2. models/app/constants_layout.dartedit_box.dart + 21. models/app/constants_layout.dart +2. widgets/buttons/my_button_rectangle.dartwizard_footer.dart 71. screens/game/game_over_dialog.dart diff --git a/fcheck_loc.svg b/fcheck_loc.svg index feb875f..cf8fd60 100644 --- a/fcheck_loc.svg +++ b/fcheck_loc.svg @@ -54,7 +54,7 @@ cards 1.11.7 -8,874 LOC +9,100 LOC 16 Folders > @@ -62,2071 +62,2071 @@ 56 Files > -80 Classes +82 Classes > -377 Functions/Methods +392 Functions/Methods - 8,874 LOC Folder: lib + 9,100 LOC Folder: lib lib - 8,874 LOC + 9,100 LOC - - - - - 3,362 LOC Folder: lib/screens + + + + + 3,374 LOC Folder: lib/screens screens - 3,362 LOC + 3,374 LOC - - - - - 2,622 LOC Folder: lib/screens/game + + + + + 2,626 LOC Folder: lib/screens/game game - 2,622 LOC + 2,626 LOC - - - - + + + + 840 LOC File: lib/screens/game/start_game_screen.dart start_game_screen.dart - 840 LOC + 840 LOC - - - - + + + + 792 LOC in Class: StartScreenState File: lib/screens/game/start_game_screen.dart StartScreenState - 792 LOC + 792 LOC - - - - + + + + 23 LOC in Method: StartScreenState.initState() File: lib/screens/game/start_game_screen.dart - - initState - 23 + + initState + 23 - - - - + + + + 9 LOC in Method: StartScreenState.dispose() File: lib/screens/game/start_game_screen.dart - - dispose - 9 + + dispose + 9 - - - - + + + + 252 LOC in Method: StartScreenState.build() File: lib/screens/game/start_game_screen.dart - - build - 252 + + build + 252 - - - - + + + + 51 LOC in Method: StartScreenState.actionButton() File: lib/screens/game/start_game_screen.dart - - actionButton - 51 + + actionButton + 51 - - - - + + + + 24 LOC in Method: StartScreenState.joinGame() File: lib/screens/game/start_game_screen.dart - - joinGame - 24 + + joinGame + 24 - - - - + + + + 68 LOC in Method: StartScreenState.prepareBackEndForRoom() File: lib/screens/game/start_game_screen.dart - - prepareBackEndForRoom - 68 + + prepareBackEndForRoom + 68 - - - - + + + + 15 LOC in Method: StartScreenState.removePlayer() File: lib/screens/game/start_game_screen.dart - - removePlayer - 15 + + removePlayer + 15 - - - - + + + + 2 LOC in Method: StartScreenState.roomName() File: lib/screens/game/start_game_screen.dart - - roomName - 2 + + roomName + 2 - - - - + + + + 35 LOC in Method: StartScreenState.startGame() File: lib/screens/game/start_game_screen.dart - - startGame - 35 + + startGame + 35 - - - - + + + + 16 LOC in Method: StartScreenState._continueCreateWithNewTableName() File: lib/screens/game/start_game_screen.dart - - _continueCreateWithNewTableName - 16 + + _continueCreateWithNewTableName + 16 - - - - + + + + 29 LOC in Method: StartScreenState._gameInstructionsWidget() File: lib/screens/game/start_game_screen.dart - - _gameInstructionsWidget - 29 + + _gameInstructionsWidget + 29 - - - - + + + + 29 LOC in Method: StartScreenState._gameMode() File: lib/screens/game/start_game_screen.dart - - _gameMode - 29 + + _gameMode + 29 - - - - + + + + 8 LOC in Method: StartScreenState._getAppVersion() File: lib/screens/game/start_game_screen.dart - - _getAppVersion - 8 + + _getAppVersion + 8 - - - - + + + + 15 LOC in Method: StartScreenState._getUrlToGame() File: lib/screens/game/start_game_screen.dart - - _getUrlToGame - 15 + + _getUrlToGame + 15 - - - - + + + + 38 LOC in Method: StartScreenState._lookupCreateTableName() File: lib/screens/game/start_game_screen.dart - - _lookupCreateTableName - 38 + + _lookupCreateTableName + 38 - - - - + + + + 31 LOC in Method: StartScreenState._onRoomNameChanged() File: lib/screens/game/start_game_screen.dart - - _onRoomNameChanged - 31 + + _onRoomNameChanged + 31 - - - - + + + + 2 LOC in Method: StartScreenState._playerName() File: lib/screens/game/start_game_screen.dart - - _playerName - 2 + + _playerName + 2 - - - - + + + + 78 LOC in Method: StartScreenState._processUrlArguments() File: lib/screens/game/start_game_screen.dart - - _processUrlArguments - 78 + + _processUrlArguments + 78 - - - - + + + + 12 LOC in Method: StartScreenState._updateUrlWithoutReload() File: lib/screens/game/start_game_screen.dart - - _updateUrlWithoutReload - 12 + + _updateUrlWithoutReload + 12 - - - - + + + + 48 LOC in Class: StartScreen File: lib/screens/game/start_game_screen.dart - StartScreen - 48 LOC + StartScreen + 48 LOC - - - - + + + + 11 LOC in Method: StartScreen.StartScreen() File: lib/screens/game/start_game_screen.dart - - StartScreen - 11 + + StartScreen + 11 - - - - + + + + 2 LOC in Method: StartScreen.createState() File: lib/screens/game/start_game_screen.dart - - createState - 2 + + createState + 2 - - - - + + + + 434 LOC File: lib/screens/game/game_screen.dart - game_screen.dart - 434 LOC + game_screen.dart + 434 LOC - - - - + + + + 416 LOC in Class: GameScreenState File: lib/screens/game/game_screen.dart - GameScreenState - 416 LOC + GameScreenState + 416 LOC - - - - + + + + 14 LOC in Method: GameScreenState.initState() File: lib/screens/game/game_screen.dart - - initState - 14 + + initState + 14 - - - - + + + + 10 LOC in Method: GameScreenState.dispose() File: lib/screens/game/game_screen.dart - - dispose - 10 + + dispose + 10 - - - - + + + + 31 LOC in Method: GameScreenState.build() File: lib/screens/game/game_screen.dart - - build - 31 + + build + 31 - - - - + + + + 11 LOC in Method: GameScreenState.fakeData() File: lib/screens/game/game_screen.dart - - fakeData - 11 + + fakeData + 11 - - - - + + + + 21 LOC in Method: GameScreenState._adaptiveLayout() File: lib/screens/game/game_screen.dart - - _adaptiveLayout - 21 + + _adaptiveLayout + 21 - - - - + + + + 28 LOC in Method: GameScreenState._buildDiscardedCardFlip() File: lib/screens/game/game_screen.dart - - _buildDiscardedCardFlip - 28 + + _buildDiscardedCardFlip + 28 - - - - + + + + 57 LOC in Method: GameScreenState._buildLayoutWithSwapAnimation() File: lib/screens/game/game_screen.dart - - _buildLayoutWithSwapAnimation - 57 + + _buildLayoutWithSwapAnimation + 57 - - - - + + + + 17 LOC in Method: GameScreenState._buildPlayersWrapLayout() File: lib/screens/game/game_screen.dart - - _buildPlayersWrapLayout - 17 + + _buildPlayersWrapLayout + 17 - - - - + + + + 6 LOC in Method: GameScreenState._createGlobalKeyForPlayers() File: lib/screens/game/game_screen.dart - - _createGlobalKeyForPlayers - 6 + + _createGlobalKeyForPlayers + 6 - - - - + + + + 13 LOC in Method: GameScreenState._dataSnapshotToGameModel() File: lib/screens/game/game_screen.dart - - _dataSnapshotToGameModel - 13 + + _dataSnapshotToGameModel + 13 - - - - + + + + 11 LOC in Method: GameScreenState._getFirebaseData() File: lib/screens/game/game_screen.dart - - _getFirebaseData - 11 + + _getFirebaseData + 11 - - - - + + + + 4 LOC in Method: GameScreenState._getFirebaseRef() File: lib/screens/game/game_screen.dart - - _getFirebaseRef - 4 + + _getFirebaseRef + 4 - - - - + + + + 13 LOC in Method: GameScreenState._initializeFirebaseListener() File: lib/screens/game/game_screen.dart - - _initializeFirebaseListener - 13 + + _initializeFirebaseListener + 13 - - - - + + + + 12 LOC in Method: GameScreenState._jsonToGameModel() File: lib/screens/game/game_screen.dart - - _jsonToGameModel - 12 + + _jsonToGameModel + 12 - - - - + + + + 12 LOC in Method: GameScreenState._layoutForDesktop() File: lib/screens/game/game_screen.dart - - _layoutForDesktop - 12 + + _layoutForDesktop + 12 - - - - + + + + 22 LOC in Method: GameScreenState._layoutForPhone() File: lib/screens/game/game_screen.dart - - _layoutForPhone - 22 + + _layoutForPhone + 22 - - - - + + + + 31 LOC in Method: GameScreenState._onGameModelUpdated() File: lib/screens/game/game_screen.dart - - _onGameModelUpdated - 31 + + _onGameModelUpdated + 31 - - - - + + + + 9 LOC in Method: GameScreenState._onRefresh() File: lib/screens/game/game_screen.dart - - _onRefresh - 9 + + _onRefresh + 9 - - - - + + + + 37 LOC in Method: GameScreenState._setupScrollToActivePlayer() File: lib/screens/game/game_screen.dart - - _setupScrollToActivePlayer - 37 + + _setupScrollToActivePlayer + 37 - - - - + + + + 18 LOC in Class: GameScreen File: lib/screens/game/game_screen.dart - GameScreen - 18 LOC + GameScreen + 18 LOC - - - - + + + + 4 LOC in Method: GameScreen.GameScreen() File: lib/screens/game/game_screen.dart - - GameScreen - 4 + + GameScreen + 4 - - - - + + + + 2 LOC in Method: GameScreen.createState() File: lib/screens/game/game_screen.dart - - createState - 2 + + createState + 2 - - - - + + + + 427 LOC File: lib/screens/game/start_game_wizard_screen.dart - start_game_wizard_screen.dart - 427 LOC + start_game_wizard_screen.dart + 427 LOC - - - - + + + + 404 LOC in Class: _StartGameWizardScreenState File: lib/screens/game/start_game_wizard_screen.dart - _StartGameWizardScreenState - 404 LOC + _StartGameWizardScreenState + 404 LOC - - - - + + + + 6 LOC in Method: _StartGameWizardScreenState.initState() File: lib/screens/game/start_game_wizard_screen.dart - - initState - 6 + + initState + 6 - - - - + + + + 21 LOC in Method: _StartGameWizardScreenState.build() File: lib/screens/game/start_game_wizard_screen.dart - - build - 21 + + build + 21 - - - - + + + + 24 LOC in Method: _StartGameWizardScreenState._buildActions() File: lib/screens/game/start_game_wizard_screen.dart - - _buildActions - 24 + + _buildActions + 24 - - - - + + + + 67 LOC in Method: _StartGameWizardScreenState._buildChoosePathStep() File: lib/screens/game/start_game_wizard_screen.dart - - _buildChoosePathStep - 67 + + _buildChoosePathStep + 67 - - - - + + + + 63 LOC in Method: _StartGameWizardScreenState._buildGameStyleOption() File: lib/screens/game/start_game_wizard_screen.dart - - _buildGameStyleOption - 63 + + _buildGameStyleOption + 63 - - - - + + + + 30 LOC in Method: _StartGameWizardScreenState._buildGameTypeStep() File: lib/screens/game/start_game_wizard_screen.dart - - _buildGameTypeStep - 30 + + _buildGameTypeStep + 30 - - - - + + + + 57 LOC in Method: _StartGameWizardScreenState._buildJoinExistingTableStep() File: lib/screens/game/start_game_wizard_screen.dart - - _buildJoinExistingTableStep - 57 + + _buildJoinExistingTableStep + 57 - - - - + + + + 12 LOC in Method: _StartGameWizardScreenState._buildMiniCard() File: lib/screens/game/start_game_wizard_screen.dart - - _buildMiniCard - 12 + + _buildMiniCard + 12 - - - - + + + + 32 LOC in Method: _StartGameWizardScreenState._buildMiniLayoutPreview() File: lib/screens/game/start_game_wizard_screen.dart - - _buildMiniLayoutPreview - 32 + + _buildMiniLayoutPreview + 32 - - - - + + + + 13 LOC in Method: _StartGameWizardScreenState._buildStepContent() File: lib/screens/game/start_game_wizard_screen.dart - - _buildStepContent - 13 + + _buildStepContent + 13 - - - - + + + + 30 LOC in Method: _StartGameWizardScreenState._fetchAllRooms() File: lib/screens/game/start_game_wizard_screen.dart - - _fetchAllRooms - 30 + + _fetchAllRooms + 30 - - - - + + + + 13 LOC in Method: _StartGameWizardScreenState._getLocalizedLabel() File: lib/screens/game/start_game_wizard_screen.dart - - _getLocalizedLabel - 13 + + _getLocalizedLabel + 13 - - - - + + + + 10 LOC in Method: _StartGameWizardScreenState._navigateToCreateNewGame() File: lib/screens/game/start_game_wizard_screen.dart - - _navigateToCreateNewGame - 10 + + _navigateToCreateNewGame + 10 - - - - + + + + 10 LOC in Method: _StartGameWizardScreenState._navigateToJoinExistingRoom() File: lib/screens/game/start_game_wizard_screen.dart - - _navigateToJoinExistingRoom - 10 + + _navigateToJoinExistingRoom + 10 - - - - + + + + 8 LOC in Method: _StartGameWizardScreenState._onNextPressed() File: lib/screens/game/start_game_wizard_screen.dart - - _onNextPressed - 8 + + _onNextPressed + 8 - - - - + + + + 12 LOC in Class: _GameTypeOption File: lib/screens/game/start_game_wizard_screen.dart - _GameTypeOption - 12 LOC + _GameTypeOption + 12 LOC - - - - + + + + 6 LOC in Method: _GameTypeOption._GameTypeOption() File: lib/screens/game/start_game_wizard_screen.dart - - _GameTypeOption - 6 + + _GameTypeOption + 6 - - - - + + + + 11 LOC in Class: StartGameWizardScreen File: lib/screens/game/start_game_wizard_screen.dart - StartGameWizardScreen - 11 LOC + StartGameWizardScreen + 11 LOC - - - - + + + + 2 LOC in Method: StartGameWizardScreen.StartGameWizardScreen() File: lib/screens/game/start_game_wizard_screen.dart - - StartGameWizardScreen - 2 + + StartGameWizardScreen + 2 - - - - + + + + 2 LOC in Method: StartGameWizardScreen.createState() File: lib/screens/game/start_game_wizard_screen.dart - - createState - 2 + + createState + 2 - - - - + + + + 380 LOC File: lib/screens/game/join_game_screen.dart - join_game_screen.dart - 380 LOC + join_game_screen.dart + 380 LOC - - - - + + + + 365 LOC in Class: JoinGameScreenState File: lib/screens/game/join_game_screen.dart - JoinGameScreenState - 365 LOC + JoinGameScreenState + 365 LOC - - - - + + + + 13 LOC in Method: JoinGameScreenState.initState() File: lib/screens/game/join_game_screen.dart - - initState - 13 + + initState + 13 - - - - + + + + 6 LOC in Method: JoinGameScreenState.dispose() File: lib/screens/game/join_game_screen.dart - - dispose - 6 + + dispose + 6 - - - - + + + + 39 LOC in Method: JoinGameScreenState.build() File: lib/screens/game/join_game_screen.dart - - build - 39 + + build + 39 - - - - + + + + 46 LOC in Method: JoinGameScreenState._buildNameEntryStep() File: lib/screens/game/join_game_screen.dart - - _buildNameEntryStep - 46 + + _buildNameEntryStep + 46 - - - - + + + + 47 LOC in Method: JoinGameScreenState._buildRoomSelectionStep() File: lib/screens/game/join_game_screen.dart - - _buildRoomSelectionStep - 47 + + _buildRoomSelectionStep + 47 - - - - + + + + 13 LOC in Method: JoinGameScreenState._buildStepContent() File: lib/screens/game/join_game_screen.dart - - _buildStepContent - 13 + + _buildStepContent + 13 - - - - + + + + 48 LOC in Method: JoinGameScreenState._buildWaitingStep() File: lib/screens/game/join_game_screen.dart - - _buildWaitingStep - 48 + + _buildWaitingStep + 48 - - - - + + + + 13 LOC in Method: JoinGameScreenState._canProceed() File: lib/screens/game/join_game_screen.dart - - _canProceed - 13 + + _canProceed + 13 - - - - + + + + 19 LOC in Method: JoinGameScreenState._fetchAllRooms() File: lib/screens/game/join_game_screen.dart - - _fetchAllRooms - 19 + + _fetchAllRooms + 19 - - - - + + + + 6 LOC in Method: JoinGameScreenState._getAppVersion() File: lib/screens/game/join_game_screen.dart - - _getAppVersion - 6 + + _getAppVersion + 6 - - - - + + + + 1 LOC in Method: JoinGameScreenState._isSingleCtaStep() File: lib/screens/game/join_game_screen.dart - - _isSingleCtaStep - 1 + + _isSingleCtaStep + 1 - - - - + + + + 11 LOC in Method: JoinGameScreenState._joinGame() File: lib/screens/game/join_game_screen.dart - - _joinGame - 11 + + _joinGame + 11 - - - - + + + + 12 LOC in Method: JoinGameScreenState._joinGameAndContinue() File: lib/screens/game/join_game_screen.dart - - _joinGameAndContinue - 12 + + _joinGameAndContinue + 12 - - - - + + + + 27 LOC in Method: JoinGameScreenState._prepareForRoom() File: lib/screens/game/join_game_screen.dart - - _prepareForRoom - 27 + + _prepareForRoom + 27 - - - - + + + + 13 LOC in Method: JoinGameScreenState._prepareForSelectedRoomIfNeeded() File: lib/screens/game/join_game_screen.dart - - _prepareForSelectedRoomIfNeeded - 13 + + _prepareForSelectedRoomIfNeeded + 13 - - - - + + + + 8 LOC in Method: JoinGameScreenState._removePlayer() File: lib/screens/game/join_game_screen.dart - - _removePlayer - 8 + + _removePlayer + 8 - - - - + + + + 26 LOC in Method: JoinGameScreenState._startGame() File: lib/screens/game/join_game_screen.dart - - _startGame - 26 + + _startGame + 26 - - - - + + + + 15 LOC in Class: JoinGameScreen File: lib/screens/game/join_game_screen.dart - JoinGameScreen - 15 LOC + JoinGameScreen + 15 LOC - - - - + + + + 234 LOC File: lib/screens/game/create_table_name_screen.dart - create_table_name_screen.dart - 234 LOC + create_table_name_screen.dart + 234 LOC - - - - + + + + 226 LOC in Class: _CreateTableNameScreenState File: lib/screens/game/create_table_name_screen.dart - _CreateTableNameScreenState - 226 LOC + _CreateTableNameScreenState + 226 LOC - - - - + + + + 6 LOC in Method: _CreateTableNameScreenState.dispose() File: lib/screens/game/create_table_name_screen.dart - - dispose - 6 + + dispose + 6 - - - - + + + + 128 LOC in Method: _CreateTableNameScreenState.build() File: lib/screens/game/create_table_name_screen.dart - - build - 128 + + build + 128 - - - - + + + + 2 LOC in Method: _CreateTableNameScreenState.tableName() File: lib/screens/game/create_table_name_screen.dart - - tableName - 2 + + tableName + 2 - - - - + + + + 23 LOC in Method: _CreateTableNameScreenState._continueToCreateTable() File: lib/screens/game/create_table_name_screen.dart - - _continueToCreateTable - 23 + + _continueToCreateTable + 23 - - - - + + + + 32 LOC in Method: _CreateTableNameScreenState._lookupTableName() File: lib/screens/game/create_table_name_screen.dart - - _lookupTableName - 32 + + _lookupTableName + 32 - - - - + + + + 23 LOC in Method: _CreateTableNameScreenState._onTableNameChanged() File: lib/screens/game/create_table_name_screen.dart - - _onTableNameChanged - 23 + + _onTableNameChanged + 23 - - - - + + + + 8 LOC in Class: CreateTableNameScreen File: lib/screens/game/create_table_name_screen.dart - CreateTableNameScreen - 8 LOC + CreateTableNameScreen + 8 LOC - - - - + + + + 163 LOC File: lib/screens/game/game_style.dart - game_style.dart - 163 LOC + game_style.dart + 163 LOC - - - - + + + + 133 LOC in Class: GameStyle File: lib/screens/game/game_style.dart - GameStyle - 133 LOC + GameStyle + 133 LOC - - - - + + + + 4 LOC in Method: GameStyle.GameStyle() File: lib/screens/game/game_style.dart - - GameStyle - 4 + + GameStyle + 4 - - - - + + + + 25 LOC in Method: GameStyle.build() File: lib/screens/game/game_style.dart - - build - 25 + + build + 25 - - - - + + + + 39 LOC in Method: GameStyle.getAllFrenchCards() File: lib/screens/game/game_style.dart - - getAllFrenchCards - 39 + + getAllFrenchCards + 39 - - - - + + + + 23 LOC in Method: GameStyle.getAllSkyjoCards() File: lib/screens/game/game_style.dart - - getAllSkyjoCards - 23 + + getAllSkyjoCards + 23 - - - - + + + + 30 LOC in Method: GameStyle.showAllCards() File: lib/screens/game/game_style.dart - - showAllCards - 30 + + showAllCards + 30 - - - - + + + + 30 LOC in Class: <...> File: lib/screens/game/game_style.dart - <...> - 30 LOC + <...> + 30 LOC - - - - + + + + 14 LOC in Function: intToGameStyles() File: lib/screens/game/game_style.dart - - intToGameStyles - 14 + + intToGameStyles + 14 - - - - + + + + 16 LOC in Function: gameInstructions() File: lib/screens/game/game_style.dart - - gameInstructions - 16 + + gameInstructions + 16 - - - - - 104 LOC File: lib/screens/game/game_over_dialog.dart + + + + + 108 LOC File: lib/screens/game/game_over_dialog.dart - game_over_dialog.dart - 104 LOC + game_over_dialog.dart + 108 LOC - - - - - 104 LOC in Class: <...> + <rect x="802.7627575883577" y="1299.997141967663" width="255.06060724841268" height="195.17772465948556" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.45"/> + <rect x="802.7627575883577" y="1299.997141967663" width="255.06060724841268" height="195.17772465948556" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="802.7627575883577" y="1299.997141967663" width="255.06060724841268" height="195.17772465948556" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8" stroke-dasharray="6,4"/> + <rect x="802.7627575883577" y="1299.997141967663" width="255.06060724841268" height="195.17772465948556" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>108 LOC in Class: <...> File: lib/screens/game/game_over_dialog.dart - <...> - 104 LOC + <...> + 108 LOC - - - - - 104 LOC in Function: showGameOverDialog() + <rect x="810.7627575883577" y="1323.997141967663" width="239.06060724841268" height="163.17772465948556" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="810.7627575883577" y="1323.997141967663" width="239.06060724841268" height="163.17772465948556" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="810.7627575883577" y="1323.997141967663" width="239.06060724841268" height="163.17772465948556" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="810.7627575883577" y="1323.997141967663" width="239.06060724841268" height="163.17772465948556" fill="transparent" pointer-events="all"> + <title>108 LOC in Function: showGameOverDialog() File: lib/screens/game/game_over_dialog.dart - - showGameOverDialog - 104 + + showGameOverDialog + 108 - - - - + + + + 40 LOC File: lib/screens/game/table_name_flow_helpers.dart - table_name_flow_helpers.dart - 40 LOC + table_name_flow_helpers.dart + 40 LOC - - - - + + + + 31 LOC in Class: <...> File: lib/screens/game/table_name_flow_helpers.dart - <...> - 31 LOC + <...> + 31 LOC - - - - + + + + 14 LOC in Function: lookupTableNameAvailability() File: lib/screens/game/table_name_flow_helpers.dart - - lookupTableNameAvailability - 14 + + lookupTableNameAvailability + 14 - - - - + + + + 17 LOC in Function: openJoinFlowForTable() File: lib/screens/game/table_name_flow_helpers.dart - - openJoinFlowForTable - 17 + + openJoinFlowForTable + 17 - - - - + + + + 9 LOC in Class: TableNameLookupResult File: lib/screens/game/table_name_flow_helpers.dart - TableNameLookupResult - 9 LOC + TableNameLookupResult + 9 LOC - - - - + + + + 2 LOC in Method: TableNameLookupResult.TableNameLookupResult() File: lib/screens/game/table_name_flow_helpers.dart - - TableNameLookupResult - 2 + + TableNameLookupResult + 2 - - - - - 465 LOC Folder: lib/screens/keepscore + + + + + 473 LOC Folder: lib/screens/keepscore - keepscore - 465 LOC + keepscore + 473 LOC - - - - - 465 LOC File: lib/screens/keepscore/golf_score_screen.dart + + + + + 473 LOC File: lib/screens/keepscore/golf_score_screen.dart - golf_score_screen.dart - 465 LOC + golf_score_screen.dart + 473 LOC - - - - - 458 LOC in Class: _GolfScoreScreenState + <rect x="64.0" y="1569.1748666271487" width="666.2152351888878" height="326.82513337285127" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="64.0" y="1569.1748666271487" width="666.2152351888878" height="326.82513337285127" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="64.0" y="1569.1748666271487" width="666.2152351888878" height="326.82513337285127" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="64.0" y="1569.1748666271487" width="666.2152351888878" height="326.82513337285127" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>466 LOC in Class: _GolfScoreScreenState File: lib/screens/keepscore/golf_score_screen.dart - _GolfScoreScreenState - 458 LOC + _GolfScoreScreenState + 466 LOC - - - - + + + + 11 LOC in Method: _GolfScoreScreenState.initState() File: lib/screens/keepscore/golf_score_screen.dart - - initState - 11 + + initState + 11 - - - - + + + + 6 LOC in Method: _GolfScoreScreenState.dispose() File: lib/screens/keepscore/golf_score_screen.dart - - dispose - 6 + + dispose + 6 - - - - + + + + 84 LOC in Method: _GolfScoreScreenState.build() File: lib/screens/keepscore/golf_score_screen.dart - - build - 84 + + build + 84 - - - - - 26 LOC in Method: _GolfScoreScreenState.confirmDeleteRound() + <rect x="424.1999190606476" y="1809.727840697473" width="161.12789819373756" height="78.27215930252689" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="424.1999190606476" y="1809.727840697473" width="161.12789819373756" height="78.27215930252689" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="424.1999190606476" y="1809.727840697473" width="161.12789819373756" height="78.27215930252689" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="424.1999190606476" y="1809.727840697473" width="161.12789819373756" height="78.27215930252689" fill="transparent" pointer-events="all"> + <title>30 LOC in Method: _GolfScoreScreenState.confirmDeleteRound() File: lib/screens/keepscore/golf_score_screen.dart - - confirmDeleteRound - 26 + + confirmDeleteRound + 30 - - - - - 26 LOC in Method: _GolfScoreScreenState.confirmNewGame() + <rect x="585.3278172543851" y="1593.1748666271487" width="136.8874179345027" height="92.13285417901602" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="585.3278172543851" y="1593.1748666271487" width="136.8874179345027" height="92.13285417901602" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="585.3278172543851" y="1593.1748666271487" width="136.8874179345027" height="92.13285417901602" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="585.3278172543851" y="1593.1748666271487" width="136.8874179345027" height="92.13285417901602" fill="transparent" pointer-events="all"> + <title>30 LOC in Method: _GolfScoreScreenState.confirmNewGame() File: lib/screens/keepscore/golf_score_screen.dart - - confirmNewGame - 26 + + confirmNewGame + 30 - - - - + + + + 7 LOC in Method: _GolfScoreScreenState._addPlayer() File: lib/screens/keepscore/golf_score_screen.dart - - _addPlayer - 7 + + _addPlayer + 7 - - - - + + + + 68 LOC in Method: _GolfScoreScreenState._buildAddOrRemoveRow() File: lib/screens/keepscore/golf_score_screen.dart - - _buildAddOrRemoveRow - 68 + + _buildAddOrRemoveRow + 68 - - - - + + + + 40 LOC in Method: _GolfScoreScreenState._buildPlayersHeader() File: lib/screens/keepscore/golf_score_screen.dart - - _buildPlayersHeader - 40 + + _buildPlayersHeader + 40 - - - - + + + + 95 LOC in Method: _GolfScoreScreenState._buildRounds() File: lib/screens/keepscore/golf_score_screen.dart - - _buildRounds - 95 + + _buildRounds + 95 - - - - + + + + 5 LOC in Method: _GolfScoreScreenState._clearScores() File: lib/screens/keepscore/golf_score_screen.dart - - _clearScores - 5 + + _clearScores + 5 - - - - + + + + 10 LOC in Method: _GolfScoreScreenState._getScoreColor() File: lib/screens/keepscore/golf_score_screen.dart - - _getScoreColor - 10 + + _getScoreColor + 10 - - - - + + + + 27 LOC in Method: _GolfScoreScreenState._handleKeyEvent() File: lib/screens/keepscore/golf_score_screen.dart - - _handleKeyEvent - 27 + + _handleKeyEvent + 27 - - - - + + + + 43 LOC in Method: _GolfScoreScreenState._handleKeyPress() File: lib/screens/keepscore/golf_score_screen.dart - - _handleKeyPress - 43 + + _handleKeyPress + 43 - - - - + + + + 7 LOC in Class: GolfScoreScreen File: lib/screens/keepscore/golf_score_screen.dart - GolfScoreScreen - 7 LOC + GolfScoreScreen + 7 LOC - - - - + + + + 275 LOC Folder: lib/screens/welcome - welcome - 275 LOC + welcome + 275 LOC - - - - + + + + 275 LOC File: lib/screens/welcome/welcome_screen.dart - welcome_screen.dart - 275 LOC + welcome_screen.dart + 275 LOC - - - - + + + + 222 LOC in Class: _WelcomeScreenState File: lib/screens/welcome/welcome_screen.dart - _WelcomeScreenState - 222 LOC + _WelcomeScreenState + 222 LOC - - - - + + + + 8 LOC in Method: _WelcomeScreenState.initState() File: lib/screens/welcome/welcome_screen.dart - - initState - 8 + + initState + 8 - - - - + + + + 45 LOC in Method: _WelcomeScreenState.build() File: lib/screens/welcome/welcome_screen.dart - - build - 45 + + build + 45 - - - - + + + + 106 LOC in Method: _WelcomeScreenState._authSection() File: lib/screens/welcome/welcome_screen.dart - - _authSection - 106 + + _authSection + 106 - - - - + + + + 16 LOC in Method: _WelcomeScreenState._checkForUrlParameters() File: lib/screens/welcome/welcome_screen.dart - - _checkForUrlParameters - 16 + + _checkForUrlParameters + 16 - - - - + + + + 6 LOC in Method: _WelcomeScreenState._handleGoogleSignIn() File: lib/screens/welcome/welcome_screen.dart - - _handleGoogleSignIn - 6 + + _handleGoogleSignIn + 6 - - - - + + + + 6 LOC in Method: _WelcomeScreenState._handleSignOut() File: lib/screens/welcome/welcome_screen.dart - - _handleSignOut - 6 + + _handleSignOut + 6 - - - - + + + + 22 LOC in Method: _WelcomeScreenState._performAuthAction() File: lib/screens/welcome/welcome_screen.dart - - _performAuthAction - 22 + + _performAuthAction + 22 - - - - + + + + 10 LOC in Method: _WelcomeScreenState._showAuthError() File: lib/screens/welcome/welcome_screen.dart - - _showAuthError - 10 + + _showAuthError + 10 - - - - + + + + 46 LOC in Class: MenuButton File: lib/screens/welcome/welcome_screen.dart - MenuButton - 46 LOC + MenuButton + 46 LOC - - - - + + + + 7 LOC in Method: MenuButton.MenuButton() File: lib/screens/welcome/welcome_screen.dart - - MenuButton - 7 + + MenuButton + 7 - - - - + + + + 30 LOC in Method: MenuButton.build() File: lib/screens/welcome/welcome_screen.dart - - build - 30 + + build + 30 - - - - + + + + 7 LOC in Class: WelcomeScreen File: lib/screens/welcome/welcome_screen.dart - WelcomeScreen - 7 LOC + WelcomeScreen + 7 LOC - - - - + + + + 2 LOC in Method: WelcomeScreen.WelcomeScreen() File: lib/screens/welcome/welcome_screen.dart - - WelcomeScreen - 2 + + WelcomeScreen + 2 - - - - + + + + 2 LOC in Method: WelcomeScreen.createState() File: lib/screens/welcome/welcome_screen.dart - - createState - 2 + + createState + 2 @@ -2134,2013 +2134,2219 @@ File: lib/screens/welcome/welcome_screen.dart - - - - - 2,753 LOC Folder: lib/widgets + + + + + 2,934 LOC Folder: lib/widgets - widgets - 2,753 LOC + widgets + 2,934 LOC - - - - - 1,023 LOC Folder: lib/widgets/player + + + + + 1,161 LOC Folder: lib/widgets/helpers - player - 1,023 LOC + helpers + 1,161 LOC - - - - - 356 LOC File: lib/widgets/player/player_header.dart + + + + + 381 LOC File: lib/widgets/helpers/screen.dart - player_header.dart - 356 LOC + screen.dart + 381 LOC - - - - - 287 LOC in Class: _PlayerHeaderState + <rect x="1228.9569230769232" y="162.0" width="412.88802708446974" height="406.65232372468273" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1228.9569230769232" y="162.0" width="412.88802708446974" height="406.65232372468273" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1228.9569230769232" y="162.0" width="412.88802708446974" height="406.65232372468273" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1228.9569230769232" y="162.0" width="412.88802708446974" height="406.65232372468273" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>338 LOC in Class: _ScreenState -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - _PlayerHeaderState - 287 LOC + _ScreenState + 338 LOC - - - - - 77 LOC in Method: _PlayerHeaderState.build() + <rect x="1484.1207243750362" y="483.34311406720855" width="63.34486475576636" height="77.3092096574742" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1484.1207243750362" y="483.34311406720855" width="63.34486475576636" height="77.3092096574742" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1484.1207243750362" y="483.34311406720855" width="63.34486475576636" height="77.3092096574742" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1484.1207243750362" y="483.34311406720855" width="63.34486475576636" height="77.3092096574742" fill="transparent" pointer-events="all"> + <title>11 LOC in Method: _ScreenState.initState() -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - - build - 77 + + initState + 11 - - - - - 29 LOC in Method: _PlayerHeaderState._buildWiningPosition() + <rect x="1605.0518298178629" y="483.34311406720855" width="28.793120343530163" height="77.3092096574742" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1605.0518298178629" y="483.34311406720855" width="28.793120343530163" height="77.3092096574742" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1605.0518298178629" y="483.34311406720855" width="28.793120343530163" height="77.3092096574742" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1605.0518298178629" y="483.34311406720855" width="28.793120343530163" height="77.3092096574742" fill="transparent" pointer-events="all"> + <title>5 LOC in Method: _ScreenState.dispose() -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - - _buildWiningPosition - 29 + + dispose + 5 - - - - - 10 LOC in Method: _PlayerHeaderState._getScoreColor() + <rect x="1236.9569230769232" y="186.0" width="247.1638012981129" height="185.5249487675112" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1236.9569230769232" y="186.0" width="247.1638012981129" height="185.5249487675112" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1236.9569230769232" y="186.0" width="247.1638012981129" height="185.5249487675112" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1236.9569230769232" y="186.0" width="247.1638012981129" height="185.5249487675112" fill="transparent" pointer-events="all"> + <title>103 LOC in Method: _ScreenState.build() -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - - _getScoreColor - 10 + + build + 103 - - - - - 131 LOC in Method: _PlayerHeaderState._showEditPlayerDialog() + <rect x="1484.1207243750362" y="296.01695220486715" width="149.72422578635684" height="95.14979650150673" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1484.1207243750362" y="296.01695220486715" width="149.72422578635684" height="95.14979650150673" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1484.1207243750362" y="296.01695220486715" width="149.72422578635684" height="95.14979650150673" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1484.1207243750362" y="296.01695220486715" width="149.72422578635684" height="95.14979650150673" fill="transparent" pointer-events="all"> + <title>32 LOC in Method: _ScreenState._buildAmbientCircle() -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - - _showEditPlayerDialog - 131 + + _buildAmbientCircle + 32 - - - - - 38 LOC in Method: _PlayerHeaderState._showRemoveConfirmationDialog() + <rect x="1484.1207243750362" y="186.0" width="149.72422578635684" height="110.01695220486718" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1484.1207243750362" y="186.0" width="149.72422578635684" height="110.01695220486718" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1484.1207243750362" y="186.0" width="149.72422578635684" height="110.01695220486718" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1484.1207243750362" y="186.0" width="149.72422578635684" height="110.01695220486718" fill="transparent" pointer-events="all"> + <title>37 LOC in Method: _ScreenState._buildAvatar() -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - - _showRemoveConfirmationDialog - 38 + + _buildAvatar + 37 - - - - - - 36 LOC in Class: PlayerHeader + <rect x="1236.9569230769232" y="477.7965213624933" width="247.1638012981129" height="82.85580236218942" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1236.9569230769232" y="477.7965213624933" width="247.1638012981129" height="82.85580236218942" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1236.9569230769232" y="477.7965213624933" width="247.1638012981129" height="82.85580236218942" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1236.9569230769232" y="477.7965213624933" width="247.1638012981129" height="82.85580236218942" fill="transparent" pointer-events="all"> + <title>46 LOC in Method: _ScreenState._buildTableTopAmbientOverlay() -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - PlayerHeader - 36 LOC + + _buildTableTopAmbientOverlay + 46 + + - - - - - 12 LOC in Method: PlayerHeader.PlayerHeader() + <rect x="1547.4655891308025" y="483.34311406720855" width="57.58624068706032" height="77.3092096574742" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1547.4655891308025" y="483.34311406720855" width="57.58624068706032" height="77.3092096574742" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1547.4655891308025" y="483.34311406720855" width="57.58624068706032" height="77.3092096574742" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1547.4655891308025" y="483.34311406720855" width="57.58624068706032" height="77.3092096574742" fill="transparent" pointer-events="all"> + <title>10 LOC in Method: _ScreenState._displayWaiting() -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - - PlayerHeader - 12 + + _displayWaiting + 10 - - - - - 2 LOC in Method: PlayerHeader.createState() + <rect x="1484.1207243750362" y="391.16674870637394" width="86.93664723078786" height="92.17636536083462" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1484.1207243750362" y="391.16674870637394" width="86.93664723078786" height="92.17636536083462" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1484.1207243750362" y="391.16674870637394" width="86.93664723078786" height="92.17636536083462" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1484.1207243750362" y="391.16674870637394" width="86.93664723078786" height="92.17636536083462" fill="transparent" pointer-events="all"> + <title>18 LOC in Method: _ScreenState._getAppVersion() -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - - createState - 2 + + _getAppVersion + 18 + + + + + + 13 LOC in Method: _ScreenState._orbitAlignment() + +File: lib/widgets/helpers/screen.dart + + + _orbitAlignment + 13 + - - - - - 33 LOC in Class: PlayerHeaderConstants + <rect x="1236.9569230769232" y="371.5249487675112" width="247.1638012981129" height="106.2715725949821" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1236.9569230769232" y="371.5249487675112" width="247.1638012981129" height="106.2715725949821" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1236.9569230769232" y="371.5249487675112" width="247.1638012981129" height="106.2715725949821" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1236.9569230769232" y="371.5249487675112" width="247.1638012981129" height="106.2715725949821" fill="transparent" pointer-events="all"> + <title>59 LOC in Method: _ScreenState._showLanguagePicker() -File: lib/widgets/player/player_header.dart +File: lib/widgets/helpers/screen.dart - PlayerHeaderConstants - 33 LOC + + _showLanguagePicker + 59 + - - - - - 248 LOC File: lib/widgets/player/player_zone_cta_widget.dart + + + + + 34 LOC in Class: Screen + +File: lib/widgets/helpers/screen.dart - player_zone_cta_widget.dart - 248 LOC + Screen + 34 LOC - - - - - 234 LOC in Class: PlayerZoneCtaWidget + <rect x="1649.844950161393" y="186.0" width="36.527175043290526" height="259.0612522801305" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1649.844950161393" y="186.0" width="36.527175043290526" height="259.0612522801305" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1649.844950161393" y="186.0" width="36.527175043290526" height="259.0612522801305" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1649.844950161393" y="186.0" width="36.527175043290526" height="259.0612522801305" fill="transparent" pointer-events="all"> + <title>17 LOC in Method: Screen.Screen() -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/screen.dart - PlayerZoneCtaWidget - 234 LOC + + Screen + 17 + + - - - - - 9 LOC in Method: PlayerZoneCtaWidget.PlayerZoneCtaWidget() + <rect x="1649.844950161393" y="445.0612522801305" width="36.527175043290526" height="30.47779438589771" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1649.844950161393" y="445.0612522801305" width="36.527175043290526" height="30.47779438589771" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1649.844950161393" y="445.0612522801305" width="36.527175043290526" height="30.47779438589771" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1649.844950161393" y="445.0612522801305" width="36.527175043290526" height="30.47779438589771" fill="transparent" pointer-events="all"> + <title>2 LOC in Method: Screen.createState() -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/screen.dart - - PlayerZoneCtaWidget - 9 + + createState + 2 + - - - - - 4 LOC in Method: PlayerZoneCtaWidget.build() + <rect x="1641.844950161393" y="483.5390466660282" width="52.527175043290526" height="85.11327705865455" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1641.844950161393" y="483.5390466660282" width="52.527175043290526" height="85.11327705865455" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1641.844950161393" y="483.5390466660282" width="52.527175043290526" height="85.11327705865455" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1641.844950161393" y="483.5390466660282" width="52.527175043290526" height="85.11327705865455" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>9 LOC in Class: ResponsiveBreakpoints -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/screen.dart - - build - 4 - + ResponsiveBreakpoints + 9 LOC + - - - - - 33 LOC in Method: PlayerZoneCtaWidget.buildContent() + <rect x="1220.9569230769232" y="578.6523237246827" width="481.41520212776027" height="232.78325909740312" fill="#1f6f8b" fill-opacity="0.54"/> + <rect x="1220.9569230769232" y="578.6523237246827" width="481.41520212776027" height="232.78325909740312" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1220.9569230769232" y="578.6523237246827" width="481.41520212776027" height="232.78325909740312" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1220.9569230769232" y="578.6523237246827" width="481.41520212776027" height="232.78325909740312" fill="transparent" pointer-events="all"> + <title>203 LOC File: lib/widgets/helpers/table_widget.dart + + table_widget.dart + 203 LOC + + + + + + 176 LOC in Class: _TableWidgetState -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/table_widget.dart - - buildContent - 33 + _TableWidgetState + 176 LOC + + + + + + 6 LOC in Method: _TableWidgetState.initState() + +File: lib/widgets/helpers/table_widget.dart + + + initState + 6 - - - - - 11 LOC in Method: PlayerZoneCtaWidget.buildWaitingForTurnContent() + <rect x="1599.123577292715" y="720.4208010010177" width="25.346033343251392" height="75.01478182106804" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1599.123577292715" y="720.4208010010177" width="25.346033343251392" height="75.01478182106804" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1599.123577292715" y="720.4208010010177" width="25.346033343251392" height="75.01478182106804" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1599.123577292715" y="720.4208010010177" width="25.346033343251392" height="75.01478182106804" fill="transparent" pointer-events="all"> + <title>5 LOC in Method: _TableWidgetState.dispose() -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/table_widget.dart - - buildWaitingForTurnContent - 11 + + dispose + 5 - - - - - 9 LOC in Method: PlayerZoneCtaWidget.ctaFlipOneOfYourHiddenCards() + <rect x="1236.9569230769232" y="626.6523237246827" width="166.72057488005353" height="168.78325909740312" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1236.9569230769232" y="626.6523237246827" width="166.72057488005353" height="168.78325909740312" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1236.9569230769232" y="626.6523237246827" width="166.72057488005353" height="168.78325909740312" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1236.9569230769232" y="626.6523237246827" width="166.72057488005353" height="168.78325909740312" fill="transparent" pointer-events="all"> + <title>74 LOC in Method: _TableWidgetState.build() -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/table_widget.dart - - ctaFlipOneOfYourHiddenCards - 9 + + build + 74 - - - - - 57 LOC in Method: PlayerZoneCtaWidget.ctaPickCardFromPiles() + <rect x="1523.085477262961" y="626.6523237246827" width="101.38413337300557" height="93.76847727633508" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1523.085477262961" y="626.6523237246827" width="101.38413337300557" height="93.76847727633508" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1523.085477262961" y="626.6523237246827" width="101.38413337300557" height="93.76847727633508" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1523.085477262961" y="626.6523237246827" width="101.38413337300557" height="93.76847727633508" fill="transparent" pointer-events="all"> + <title>25 LOC in Method: _TableWidgetState._buildEmptyState() -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/table_widget.dart - - ctaPickCardFromPiles - 57 + + _buildEmptyState + 25 - - - - - 46 LOC in Method: PlayerZoneCtaWidget.ctaSwapDiscardedCardWithAnyCardsInHand() + <rect x="1403.6774979569768" y="626.6523237246827" width="119.4079793059843" height="168.78325909740312" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1403.6774979569768" y="626.6523237246827" width="119.4079793059843" height="168.78325909740312" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1403.6774979569768" y="626.6523237246827" width="119.4079793059843" height="168.78325909740312" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1403.6774979569768" y="626.6523237246827" width="119.4079793059843" height="168.78325909740312" fill="transparent" pointer-events="all"> + <title>53 LOC in Method: _TableWidgetState._buildRoomItem() -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/table_widget.dart - - ctaSwapDiscardedCardWithAnyCardsInHand - 46 + + _buildRoomItem + 53 - - - - - 58 LOC in Method: PlayerZoneCtaWidget.ctaSwapTopDeckCardWithAnyCardsInHandOrDiscard() + <rect x="1523.085477262961" y="720.4208010010177" width="45.6228600178525" height="75.01478182106804" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1523.085477262961" y="720.4208010010177" width="45.6228600178525" height="75.01478182106804" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1523.085477262961" y="720.4208010010177" width="45.6228600178525" height="75.01478182106804" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1523.085477262961" y="720.4208010010177" width="45.6228600178525" height="75.01478182106804" fill="transparent" pointer-events="all"> + <title>9 LOC in Method: _TableWidgetState._getFilteredRooms() -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/table_widget.dart - - ctaSwapTopDeckCardWithAnyCardsInHandOrDiscard - 58 + + _getFilteredRooms + 9 - - - - - 14 LOC in Class: <...> + <rect x="1632.4696106359665" y="602.6523237246827" width="61.90251456871687" height="200.78325909740312" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1632.4696106359665" y="602.6523237246827" width="61.90251456871687" height="200.78325909740312" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1632.4696106359665" y="602.6523237246827" width="61.90251456871687" height="200.78325909740312" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1632.4696106359665" y="602.6523237246827" width="61.90251456871687" height="200.78325909740312" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>27 LOC in Class: TableWidget -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/table_widget.dart - <...> - 14 LOC + TableWidget + 27 LOC - - - - - 14 LOC in Function: buildMiniInstructions() + <rect x="1640.4696106359665" y="626.6523237246827" width="45.90251456871687" height="140.6527159145026" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1640.4696106359665" y="626.6523237246827" width="45.90251456871687" height="140.6527159145026" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1640.4696106359665" y="626.6523237246827" width="45.90251456871687" height="140.6527159145026" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1640.4696106359665" y="626.6523237246827" width="45.90251456871687" height="140.6527159145026" fill="transparent" pointer-events="all"> + <title>10 LOC in Method: TableWidget.TableWidget() -File: lib/widgets/player/player_zone_cta_widget.dart +File: lib/widgets/helpers/table_widget.dart - - buildMiniInstructions - 14 + + TableWidget + 10 + + + + + + + + 2 LOC in Method: TableWidget.createState() + +File: lib/widgets/helpers/table_widget.dart + + + createState + 2 - - - - - 183 LOC File: lib/widgets/player/player_zone_widget.dart + + + + + 155 LOC File: lib/widgets/helpers/input_keyboard.dart - player_zone_widget.dart - 183 LOC + input_keyboard.dart + 155 LOC - - - - - 183 LOC in Class: PlayerZoneWidget + <rect x="1712.3721252046835" y="162.0" width="221.58327017276363" height="306.57216177496014" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1712.3721252046835" y="162.0" width="221.58327017276363" height="306.57216177496014" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1712.3721252046835" y="162.0" width="221.58327017276363" height="306.57216177496014" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1712.3721252046835" y="162.0" width="221.58327017276363" height="306.57216177496014" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>145 LOC in Class: InputKeyboard -File: lib/widgets/player/player_zone_widget.dart +File: lib/widgets/helpers/input_keyboard.dart - PlayerZoneWidget - 183 LOC + InputKeyboard + 145 LOC - - - - - 15 LOC in Method: PlayerZoneWidget.PlayerZoneWidget() + <rect x="1883.784468162521" y="401.08152672371875" width="42.170927214925875" height="29.745317525620678" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1883.784468162521" y="401.08152672371875" width="42.170927214925875" height="29.745317525620678" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1883.784468162521" y="401.08152672371875" width="42.170927214925875" height="29.745317525620678" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1883.784468162521" y="401.08152672371875" width="42.170927214925875" height="29.745317525620678" fill="transparent" pointer-events="all"> + <title>3 LOC in Method: InputKeyboard.InputKeyboard() -File: lib/widgets/player/player_zone_widget.dart +File: lib/widgets/helpers/input_keyboard.dart - - PlayerZoneWidget - 15 + + InputKeyboard + 3 - - - - - 29 LOC in Method: PlayerZoneWidget.build() + <rect x="1883.784468162521" y="430.82684424933944" width="42.170927214925875" height="29.745317525620678" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1883.784468162521" y="430.82684424933944" width="42.170927214925875" height="29.745317525620678" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1883.784468162521" y="430.82684424933944" width="42.170927214925875" height="29.745317525620678" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1883.784468162521" y="430.82684424933944" width="42.170927214925875" height="29.745317525620678" fill="transparent" pointer-events="all"> + <title>3 LOC in Method: InputKeyboard.InputKeyboard.alpha() -File: lib/widgets/player/player_zone_widget.dart +File: lib/widgets/helpers/input_keyboard.dart - - build - 29 + + InputKeyboard.alpha + 3 - - - - - 38 LOC in Method: PlayerZoneWidget._buildContent() + <rect x="1720.3721252046835" y="332.43848627997875" width="114.21292787375758" height="69.55828098298988" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1720.3721252046835" y="332.43848627997875" width="114.21292787375758" height="69.55828098298988" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1720.3721252046835" y="332.43848627997875" width="114.21292787375758" height="69.55828098298988" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1720.3721252046835" y="332.43848627997875" width="114.21292787375758" height="69.55828098298988" fill="transparent" pointer-events="all"> + <title>19 LOC in Method: InputKeyboard.build() -File: lib/widgets/player/player_zone_widget.dart +File: lib/widgets/helpers/input_keyboard.dart - - _buildContent - 38 + + build + 19 - - - - - 45 LOC in Method: PlayerZoneWidget._buildPlayerCardButton() + <rect x="1720.3721252046835" y="186.0" width="128.48954385797728" height="146.43848627997875" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1720.3721252046835" y="186.0" width="128.48954385797728" height="146.43848627997875" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1720.3721252046835" y="186.0" width="128.48954385797728" height="146.43848627997875" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1720.3721252046835" y="186.0" width="128.48954385797728" height="146.43848627997875" fill="transparent" pointer-events="all"> + <title>45 LOC in Method: InputKeyboard._buildAlphaLayout() -File: lib/widgets/player/player_zone_widget.dart +File: lib/widgets/helpers/input_keyboard.dart - - _buildPlayerCardButton - 45 + + _buildAlphaLayout + 45 - - - - - 21 LOC in Method: PlayerZoneWidget._buildPlayerHand() + <rect x="1834.585053078441" y="332.43848627997875" width="91.37034229900605" height="68.64304044374003" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1834.585053078441" y="332.43848627997875" width="91.37034229900605" height="68.64304044374003" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1834.585053078441" y="332.43848627997875" width="91.37034229900605" height="68.64304044374003" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1834.585053078441" y="332.43848627997875" width="91.37034229900605" height="68.64304044374003" fill="transparent" pointer-events="all"> + <title>15 LOC in Method: InputKeyboard._buildButton() -File: lib/widgets/player/player_zone_widget.dart +File: lib/widgets/helpers/input_keyboard.dart - - _buildPlayerHand - 21 + + _buildButton + 15 - - - - - 22 LOC in Method: PlayerZoneWidget._containerBorder() + <rect x="1848.8616690626607" y="186.0" width="77.09372631478635" height="146.43848627997875" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1848.8616690626607" y="186.0" width="77.09372631478635" height="146.43848627997875" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1848.8616690626607" y="186.0" width="77.09372631478635" height="146.43848627997875" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1848.8616690626607" y="186.0" width="77.09372631478635" height="146.43848627997875" fill="transparent" pointer-events="all"> + <title>27 LOC in Method: InputKeyboard._buildNumericLayout() -File: lib/widgets/player/player_zone_widget.dart +File: lib/widgets/helpers/input_keyboard.dart + + + _buildNumericLayout + 27 + + + + + + + + 7 LOC in Method: InputKeyboard._buildRow() + +File: lib/widgets/helpers/input_keyboard.dart + + + _buildRow + 7 + + + + + + + + 16 LOC in Method: InputKeyboard._buildSpaceButton() + +File: lib/widgets/helpers/input_keyboard.dart - - _containerBorder - 22 + + _buildSpaceButton + 16 + + + + + + 10 LOC in Class: _InputKeyboardConstants + +File: lib/widgets/helpers/input_keyboard.dart + + _InputKeyboardConstants + 10 LOC + - - - - - 83 LOC File: lib/widgets/player/status_picker.dart + + + + + 154 LOC File: lib/widgets/helpers/edit_box.dart - status_picker.dart - 83 LOC + edit_box.dart + 154 LOC - - - - - 68 LOC in Class: _StatusPickerState + <rect x="1951.955395377447" y="162.0" width="220.03757165551994" height="225.57011276142387" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1951.955395377447" y="162.0" width="220.03757165551994" height="225.57011276142387" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1951.955395377447" y="162.0" width="220.03757165551994" height="225.57011276142387" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1951.955395377447" y="162.0" width="220.03757165551994" height="225.57011276142387" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>106 LOC in Class: _EditBoxState -File: lib/widgets/player/status_picker.dart +File: lib/widgets/helpers/edit_box.dart - _StatusPickerState - 68 LOC + _EditBoxState + 106 LOC - - - - - 46 LOC in Method: _StatusPickerState.build() + <rect x="2094.6598116160426" y="324.26436625815995" width="34.66657770846213" height="55.30574650326395" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2094.6598116160426" y="324.26436625815995" width="34.66657770846213" height="55.30574650326395" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2094.6598116160426" y="324.26436625815995" width="34.66657770846213" height="55.30574650326395" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2094.6598116160426" y="324.26436625815995" width="34.66657770846213" height="55.30574650326395" fill="transparent" pointer-events="all"> + <title>5 LOC in Method: _EditBoxState.initState() -File: lib/widgets/player/status_picker.dart +File: lib/widgets/helpers/edit_box.dart - - build - 46 + + initState + 5 - - - - - 16 LOC in Method: _StatusPickerState._statusLabel() + <rect x="2129.326389324505" y="324.26436625815995" width="34.66657770846213" height="55.30574650326395" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2129.326389324505" y="324.26436625815995" width="34.66657770846213" height="55.30574650326395" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2129.326389324505" y="324.26436625815995" width="34.66657770846213" height="55.30574650326395" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2129.326389324505" y="324.26436625815995" width="34.66657770846213" height="55.30574650326395" fill="transparent" pointer-events="all"> + <title>5 LOC in Method: _EditBoxState.dispose() -File: lib/widgets/player/status_picker.dart +File: lib/widgets/helpers/edit_box.dart - - _statusLabel - 16 + + dispose + 5 + + + + + + 68 LOC in Method: _EditBoxState.build() + +File: lib/widgets/helpers/edit_box.dart + + + build + 68 + - - - - - 15 LOC in Class: StatusPicker + <rect x="2094.6598116160426" y="186.0" width="69.33315541692426" height="138.26436625815992" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2094.6598116160426" y="186.0" width="69.33315541692426" height="138.26436625815992" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2094.6598116160426" y="186.0" width="69.33315541692426" height="138.26436625815992" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2094.6598116160426" y="186.0" width="69.33315541692426" height="138.26436625815992" fill="transparent" pointer-events="all"> + <title>25 LOC in Method: _EditBoxState._handleVirtualKey() -File: lib/widgets/player/status_picker.dart +File: lib/widgets/helpers/edit_box.dart - StatusPicker - 15 LOC + + _handleVirtualKey + 25 + + + - - - - - 6 LOC in Method: StatusPicker.StatusPicker() + <rect x="1951.955395377447" y="387.57011276142384" width="220.03757165551994" height="102.1449567221542" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1951.955395377447" y="387.57011276142384" width="220.03757165551994" height="102.1449567221542" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1951.955395377447" y="387.57011276142384" width="220.03757165551994" height="102.1449567221542" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1951.955395377447" y="387.57011276142384" width="220.03757165551994" height="102.1449567221542" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>48 LOC in Class: EditBox -File: lib/widgets/player/status_picker.dart +File: lib/widgets/helpers/edit_box.dart + + EditBox + 48 LOC + + + + + + 20 LOC in Method: EditBox.EditBox() + +File: lib/widgets/helpers/edit_box.dart - - StatusPicker - 6 + + EditBox + 20 - - - - - 2 LOC in Method: StatusPicker.createState() + <rect x="2145.444096882465" y="411.57011276142384" width="18.548870150501813" height="70.1449567221542" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2145.444096882465" y="411.57011276142384" width="18.548870150501813" height="70.1449567221542" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2145.444096882465" y="411.57011276142384" width="18.548870150501813" height="70.1449567221542" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2145.444096882465" y="411.57011276142384" width="18.548870150501813" height="70.1449567221542" fill="transparent" pointer-events="all"> + <title>2 LOC in Method: EditBox.createState() -File: lib/widgets/player/status_picker.dart +File: lib/widgets/helpers/edit_box.dart - - createState - 2 + + createState + 2 - - - - - 77 LOC File: lib/widgets/player/players_in_room_widget.dart + + + + + 70 LOC File: lib/widgets/helpers/dialog.dart - players_in_room_widget.dart - 77 LOC + dialog.dart + 70 LOC - - - - - 77 LOC in Class: PlayersInRoomWidget + <rect x="1712.3721252046835" y="523.7150694835781" width="213.68175163312262" height="134.92643025919648" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.45"/> + <rect x="1712.3721252046835" y="523.7150694835781" width="213.68175163312262" height="134.92643025919648" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1712.3721252046835" y="523.7150694835781" width="213.68175163312262" height="134.92643025919648" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8" stroke-dasharray="6,4"/> + <rect x="1712.3721252046835" y="523.7150694835781" width="213.68175163312262" height="134.92643025919648" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>70 LOC in Class: <...> -File: lib/widgets/player/players_in_room_widget.dart +File: lib/widgets/helpers/dialog.dart - PlayersInRoomWidget - 77 LOC + <...> + 70 LOC - - - - - 13 LOC in Method: PlayersInRoomWidget.PlayersInRoomWidget() + <rect x="1720.3721252046835" y="547.7150694835781" width="197.68175163312262" height="102.92643025919648" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1720.3721252046835" y="547.7150694835781" width="197.68175163312262" height="102.92643025919648" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1720.3721252046835" y="547.7150694835781" width="197.68175163312262" height="102.92643025919648" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1720.3721252046835" y="547.7150694835781" width="197.68175163312262" height="102.92643025919648" fill="transparent" pointer-events="all"> + <title>70 LOC in Function: myDialog() -File: lib/widgets/player/players_in_room_widget.dart +File: lib/widgets/helpers/dialog.dart - - PlayersInRoomWidget - 13 + + myDialog + 70 + + - - - - - 51 LOC in Method: PlayersInRoomWidget.build() + <rect x="1704.3721252046835" y="668.6414997427746" width="229.68175163312262" height="142.7940830793113" fill="#1f6f8b" fill-opacity="0.54"/> + <rect x="1704.3721252046835" y="668.6414997427746" width="229.68175163312262" height="142.7940830793113" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1704.3721252046835" y="668.6414997427746" width="229.68175163312262" height="142.7940830793113" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1704.3721252046835" y="668.6414997427746" width="229.68175163312262" height="142.7940830793113" fill="transparent" pointer-events="all"> + <title>60 LOC File: lib/widgets/helpers/wiggle_widget.dart + + wiggle_widget.dart + 60 LOC + + + + + + 49 LOC in Class: WiggleWidgetState -File: lib/widgets/player/players_in_room_widget.dart +File: lib/widgets/helpers/wiggle_widget.dart + + WiggleWidgetState + 49 LOC + + + + + + 18 LOC in Method: WiggleWidgetState.initState() + +File: lib/widgets/helpers/wiggle_widget.dart - - build - 51 + + initState + 18 - + + + + + + 6 LOC in Method: WiggleWidgetState.dispose() + +File: lib/widgets/helpers/wiggle_widget.dart + + + dispose + 6 + - - - - - 76 LOC File: lib/widgets/player/player_header_widget.dart + + + + + 18 LOC in Method: WiggleWidgetState.build() + +File: lib/widgets/helpers/wiggle_widget.dart - player_header_widget.dart - 76 LOC + + build + 18 + + + - - - - - 76 LOC in Class: PlayerHeaderWidget + <rect x="1886.8788890384003" y="692.6414997427746" width="39.17498779940581" height="110.79408307931129" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1886.8788890384003" y="692.6414997427746" width="39.17498779940581" height="110.79408307931129" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1886.8788890384003" y="692.6414997427746" width="39.17498779940581" height="110.79408307931129" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1886.8788890384003" y="692.6414997427746" width="39.17498779940581" height="110.79408307931129" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>11 LOC in Class: WiggleWidget -File: lib/widgets/player/player_header_widget.dart +File: lib/widgets/helpers/wiggle_widget.dart - PlayerHeaderWidget - 76 LOC + WiggleWidget + 11 LOC - - - - - 8 LOC in Method: PlayerHeaderWidget.PlayerHeaderWidget() + <rect x="1894.8788890384003" y="716.6414997427746" width="23.174987799405812" height="39.397041539655646" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1894.8788890384003" y="716.6414997427746" width="23.174987799405812" height="39.397041539655646" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1894.8788890384003" y="716.6414997427746" width="23.174987799405812" height="39.397041539655646" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1894.8788890384003" y="716.6414997427746" width="23.174987799405812" height="39.397041539655646" fill="transparent" pointer-events="all"> + <title>2 LOC in Method: WiggleWidget.WiggleWidget() -File: lib/widgets/player/player_header_widget.dart +File: lib/widgets/helpers/wiggle_widget.dart - - PlayerHeaderWidget - 8 + + WiggleWidget + 2 - - - - - 36 LOC in Method: PlayerHeaderWidget.build() + <rect x="1894.8788890384003" y="756.0385412824303" width="23.174987799405812" height="39.397041539655646" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1894.8788890384003" y="756.0385412824303" width="23.174987799405812" height="39.397041539655646" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1894.8788890384003" y="756.0385412824303" width="23.174987799405812" height="39.397041539655646" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1894.8788890384003" y="756.0385412824303" width="23.174987799405812" height="39.397041539655646" fill="transparent" pointer-events="all"> + <title>2 LOC in Method: WiggleWidget.createState() -File: lib/widgets/player/player_header_widget.dart +File: lib/widgets/helpers/wiggle_widget.dart - - build - 36 + + createState + 2 + + - - - - - 21 LOC in Method: PlayerHeaderWidget.showHistory() + <rect x="1936.053876837806" y="499.7150694835781" width="103.14787189503258" height="311.72051333850777" fill="#1f6f8b" fill-opacity="0.54"/> + <rect x="1936.053876837806" y="499.7150694835781" width="103.14787189503258" height="311.72051333850777" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1936.053876837806" y="499.7150694835781" width="103.14787189503258" height="311.72051333850777" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1936.053876837806" y="499.7150694835781" width="103.14787189503258" height="311.72051333850777" fill="transparent" pointer-events="all"> + <title>59 LOC File: lib/widgets/helpers/my_text.dart + + my_text.dart + 59 LOC + + + + + + 59 LOC in Class: MyText -File: lib/widgets/player/player_header_widget.dart +File: lib/widgets/helpers/my_text.dart - - showHistory - 21 + MyText + 59 LOC + + + + + + 9 LOC in Method: MyText.MyText() + +File: lib/widgets/helpers/my_text.dart + + + MyText + 9 + + + + + + 13 LOC in Method: MyText.build() + +File: lib/widgets/helpers/my_text.dart + + + build + 13 + - - - - - 1,020 LOC Folder: lib/widgets/helpers + + + + + 42 LOC File: lib/widgets/helpers/wizard_footer.dart - helpers - 1,020 LOC + wizard_footer.dart + 42 LOC - - - - - 381 LOC File: lib/widgets/helpers/screen.dart + + + + + 42 LOC in Class: WizardFooter + +File: lib/widgets/helpers/wizard_footer.dart - screen.dart - 381 LOC + WizardFooter + 42 LOC - - - - - 338 LOC in Class: _ScreenState + <rect x="2138.865621550584" y="547.7150694835781" width="25.12734548238315" height="100.78812101540919" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2138.865621550584" y="547.7150694835781" width="25.12734548238315" height="100.78812101540919" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2138.865621550584" y="547.7150694835781" width="25.12734548238315" height="100.78812101540919" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2138.865621550584" y="547.7150694835781" width="25.12734548238315" height="100.78812101540919" fill="transparent" pointer-events="all"> + <title>8 LOC in Method: WizardFooter.WizardFooter() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/helpers/wizard_footer.dart - _ScreenState - 338 LOC + + WizardFooter + 8 + + - - - - - 11 LOC in Method: _ScreenState.initState() + <rect x="2057.2017487328385" y="547.7150694835781" width="81.66387281774523" height="100.78812101540919" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2057.2017487328385" y="547.7150694835781" width="81.66387281774523" height="100.78812101540919" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2057.2017487328385" y="547.7150694835781" width="81.66387281774523" height="100.78812101540919" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2057.2017487328385" y="547.7150694835781" width="81.66387281774523" height="100.78812101540919" fill="transparent" pointer-events="all"> + <title>26 LOC in Method: WizardFooter.build() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/helpers/wizard_footer.dart - - initState - 11 + + build + 26 + + - - - - - 5 LOC in Method: _ScreenState.dispose() + <rect x="2041.2017487328387" y="666.5031904989872" width="138.79121830012838" height="144.93239232309858" fill="#1f6f8b" fill-opacity="0.54"/> + <rect x="2041.2017487328387" y="666.5031904989872" width="138.79121830012838" height="144.93239232309858" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2041.2017487328387" y="666.5031904989872" width="138.79121830012838" height="144.93239232309858" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2041.2017487328387" y="666.5031904989872" width="138.79121830012838" height="144.93239232309858" fill="transparent" pointer-events="all"> + <title>37 LOC File: lib/widgets/helpers/date_importance.dart + + date_importance.dart + 37 LOC + + + + + + 37 LOC in Class: DateTimeWidget -File: lib/widgets/helpers/screen.dart +File: lib/widgets/helpers/date_importance.dart - - dispose - 5 + DateTimeWidget + 37 LOC + + + + + + 2 LOC in Method: DateTimeWidget.DateTimeWidget() + +File: lib/widgets/helpers/date_importance.dart + + + DateTimeWidget + 2 - - - - - 103 LOC in Method: _ScreenState.build() + <rect x="2057.2017487328385" y="714.5031904989872" width="67.23891522600675" height="80.93239232309858" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2057.2017487328385" y="714.5031904989872" width="67.23891522600675" height="80.93239232309858" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2057.2017487328385" y="714.5031904989872" width="67.23891522600675" height="80.93239232309858" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2057.2017487328385" y="714.5031904989872" width="67.23891522600675" height="80.93239232309858" fill="transparent" pointer-events="all"> + <title>17 LOC in Method: DateTimeWidget.build() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/helpers/date_importance.dart - - build - 103 + + build + 17 - - - - - 32 LOC in Method: _ScreenState._buildAmbientCircle() + <rect x="2124.440663958845" y="714.5031904989872" width="39.552303074121625" height="64.74591385847887" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2124.440663958845" y="714.5031904989872" width="39.552303074121625" height="64.74591385847887" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2124.440663958845" y="714.5031904989872" width="39.552303074121625" height="64.74591385847887" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2124.440663958845" y="714.5031904989872" width="39.552303074121625" height="64.74591385847887" fill="transparent" pointer-events="all"> + <title>8 LOC in Method: DateTimeWidget._buildText() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/helpers/date_importance.dart - - _buildAmbientCircle - 32 + + _buildText + 8 + + + - - - - - 37 LOC in Method: _ScreenState._buildAvatar() + <rect x="1209.9569230769232" y="828.4355828220858" width="981.0360439560438" height="613.9209270620314" rx="5.00" ry="5.00" fill="#8fa4ba" fill-opacity="0.62"/> + <rect x="1209.9569230769232" y="828.4355828220858" width="981.0360439560438" height="613.9209270620314" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1209.9569230769232" y="828.4355828220858" width="981.0360439560438" height="613.9209270620314" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1209.9569230769232" y="828.4355828220858" width="981.0360439560438" height="613.9209270620314" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>1,006 LOC Folder: lib/widgets/player + + player + 1,006 LOC + + + + + + 339 LOC File: lib/widgets/player/player_header.dart + + player_header.dart + 339 LOC + + + + + + 270 LOC in Class: _PlayerHeaderState -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - - _buildAvatar - 37 - - + _PlayerHeaderState + 270 LOC - - - - - 46 LOC in Method: _ScreenState._buildTableTopAmbientOverlay() + <rect x="1400.0554502348962" y="901.4355828220858" width="127.37218311384561" height="268.91174493020213" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1400.0554502348962" y="901.4355828220858" width="127.37218311384561" height="268.91174493020213" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1400.0554502348962" y="901.4355828220858" width="127.37218311384561" height="268.91174493020213" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1400.0554502348962" y="901.4355828220858" width="127.37218311384561" height="268.91174493020213" fill="transparent" pointer-events="all"> + <title>82 LOC in Method: _PlayerHeaderState.build() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - - _buildTableTopAmbientOverlay - 46 + + build + 82 - - - - - 10 LOC in Method: _ScreenState._displayWaiting() + <rect x="1527.427633348742" y="1040.871302415524" width="125.81886380757919" height="96.27704448118348" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1527.427633348742" y="1040.871302415524" width="125.81886380757919" height="96.27704448118348" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1527.427633348742" y="1040.871302415524" width="125.81886380757919" height="96.27704448118348" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1527.427633348742" y="1040.871302415524" width="125.81886380757919" height="96.27704448118348" fill="transparent" pointer-events="all"> + <title>29 LOC in Method: _PlayerHeaderState._buildWiningPosition() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - - _displayWaiting - 10 + + _buildWiningPosition + 29 - - - - - 18 LOC in Method: _ScreenState._getAppVersion() + <rect x="1527.427633348742" y="1137.1483468967076" width="125.81886380757919" height="33.198980855580515" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1527.427633348742" y="1137.1483468967076" width="125.81886380757919" height="33.198980855580515" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1527.427633348742" y="1137.1483468967076" width="125.81886380757919" height="33.198980855580515" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1527.427633348742" y="1137.1483468967076" width="125.81886380757919" height="33.198980855580515" fill="transparent" pointer-events="all"> + <title>10 LOC in Method: _PlayerHeaderState._getScoreColor() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - - _getAppVersion - 18 + + _getScoreColor + 10 - - - - - 13 LOC in Method: _ScreenState._orbitAlignment() + <rect x="1236.9569230769232" y="901.4355828220858" width="163.09852715797302" height="268.91174493020213" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1236.9569230769232" y="901.4355828220858" width="163.09852715797302" height="268.91174493020213" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1236.9569230769232" y="901.4355828220858" width="163.09852715797302" height="268.91174493020213" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1236.9569230769232" y="901.4355828220858" width="163.09852715797302" height="268.91174493020213" fill="transparent" pointer-events="all"> + <title>105 LOC in Method: _PlayerHeaderState._showEditPlayerDialog() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - - _orbitAlignment - 13 + + _showEditPlayerDialog + 105 - - - - - 59 LOC in Method: _ScreenState._showLanguagePicker() + <rect x="1527.427633348742" y="901.4355828220858" width="125.81886380757919" height="139.43571959343814" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1527.427633348742" y="901.4355828220858" width="125.81886380757919" height="139.43571959343814" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1527.427633348742" y="901.4355828220858" width="125.81886380757919" height="139.43571959343814" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1527.427633348742" y="901.4355828220858" width="125.81886380757919" height="139.43571959343814" fill="transparent" pointer-events="all"> + <title>42 LOC in Method: _PlayerHeaderState._showRemoveConfirmationDialog() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - - _showLanguagePicker - 59 + + _showRemoveConfirmationDialog + 42 - - - - - 34 LOC in Class: Screen + <rect x="1661.246497156321" y="877.4355828220858" width="110.47400226473502" height="156.99743213749676" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1661.246497156321" y="877.4355828220858" width="110.47400226473502" height="156.99743213749676" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1661.246497156321" y="877.4355828220858" width="110.47400226473502" height="156.99743213749676" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1661.246497156321" y="877.4355828220858" width="110.47400226473502" height="156.99743213749676" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>36 LOC in Class: PlayerHeader -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - Screen - 34 LOC + PlayerHeader + 36 LOC - - - - - 17 LOC in Method: Screen.Screen() + <rect x="1669.246497156321" y="901.4355828220858" width="94.47400226473502" height="107.14065611785436" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1669.246497156321" y="901.4355828220858" width="94.47400226473502" height="107.14065611785436" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1669.246497156321" y="901.4355828220858" width="94.47400226473502" height="107.14065611785436" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1669.246497156321" y="901.4355828220858" width="94.47400226473502" height="107.14065611785436" fill="transparent" pointer-events="all"> + <title>12 LOC in Method: PlayerHeader.PlayerHeader() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - - Screen - 17 + + PlayerHeader + 12 - - - - - 2 LOC in Method: Screen.createState() + <rect x="1669.246497156321" y="1008.5762389399403" width="94.47400226473502" height="17.856776019642396" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1669.246497156321" y="1008.5762389399403" width="94.47400226473502" height="17.856776019642396" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1669.246497156321" y="1008.5762389399403" width="94.47400226473502" height="17.856776019642396" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1669.246497156321" y="1008.5762389399403" width="94.47400226473502" height="17.856776019642396" fill="transparent" pointer-events="all"> + <title>2 LOC in Method: PlayerHeader.createState() -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - - createState - 2 + + createState + 2 - - - - - 9 LOC in Class: ResponsiveBreakpoints + <rect x="1661.246497156321" y="1034.4330149595826" width="110.47400226473502" height="143.91431279270537" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1661.246497156321" y="1034.4330149595826" width="110.47400226473502" height="143.91431279270537" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1661.246497156321" y="1034.4330149595826" width="110.47400226473502" height="143.91431279270537" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1661.246497156321" y="1034.4330149595826" width="110.47400226473502" height="143.91431279270537" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>33 LOC in Class: PlayerHeaderConstants -File: lib/widgets/helpers/screen.dart +File: lib/widgets/player/player_header.dart - ResponsiveBreakpoints - 9 LOC + PlayerHeaderConstants + 33 LOC - - - - - 202 LOC File: lib/widgets/helpers/table_widget.dart + + + + + 248 LOC File: lib/widgets/player/player_zone_cta_widget.dart - table_widget.dart - 202 LOC + player_zone_cta_widget.dart + 248 LOC - - - - - 175 LOC in Class: _TableWidgetState + <rect x="1228.9569230769232" y="1212.347327752288" width="512.1236970343834" height="211.00918213182928" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1228.9569230769232" y="1212.347327752288" width="512.1236970343834" height="211.00918213182928" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1228.9569230769232" y="1212.347327752288" width="512.1236970343834" height="211.00918213182928" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1228.9569230769232" y="1212.347327752288" width="512.1236970343834" height="211.00918213182928" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>234 LOC in Class: PlayerZoneCtaWidget -File: lib/widgets/helpers/table_widget.dart +File: lib/widgets/player/player_zone_cta_widget.dart - _TableWidgetState - 175 LOC + PlayerZoneCtaWidget + 234 LOC - - - - - 6 LOC in Method: _TableWidgetState.initState() + <rect x="1660.9569108508017" y="1296.0170551295644" width="72.12370926050505" height="48.820686035953436" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1660.9569108508017" y="1296.0170551295644" width="72.12370926050505" height="48.820686035953436" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1660.9569108508017" y="1296.0170551295644" width="72.12370926050505" height="48.820686035953436" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1660.9569108508017" y="1296.0170551295644" width="72.12370926050505" height="48.820686035953436" fill="transparent" pointer-events="all"> + <title>9 LOC in Method: PlayerZoneCtaWidget.PlayerZoneCtaWidget() -File: lib/widgets/helpers/table_widget.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - initState - 6 + + PlayerZoneCtaWidget + 9 - - - - - 5 LOC in Method: _TableWidgetState.dispose() + <rect x="1710.888709569613" y="1344.8377411655179" width="22.191910541693865" height="70.5187687185994" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1710.888709569613" y="1344.8377411655179" width="22.191910541693865" height="70.5187687185994" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1710.888709569613" y="1344.8377411655179" width="22.191910541693865" height="70.5187687185994" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1710.888709569613" y="1344.8377411655179" width="22.191910541693865" height="70.5187687185994" fill="transparent" pointer-events="all"> + <title>4 LOC in Method: PlayerZoneCtaWidget.build() -File: lib/widgets/helpers/table_widget.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - dispose - 5 + + build + 4 - - - - - 73 LOC in Method: _TableWidgetState.build() + <rect x="1488.297122015047" y="1340.5805224113278" width="172.6597888357546" height="74.77598747278945" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1488.297122015047" y="1340.5805224113278" width="172.6597888357546" height="74.77598747278945" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1488.297122015047" y="1340.5805224113278" width="172.6597888357546" height="74.77598747278945" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1488.297122015047" y="1340.5805224113278" width="172.6597888357546" height="74.77598747278945" fill="transparent" pointer-events="all"> + <title>33 LOC in Method: PlayerZoneCtaWidget.buildContent() -File: lib/widgets/helpers/table_widget.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - build - 73 + + buildContent + 33 - - - - - 25 LOC in Method: _TableWidgetState._buildEmptyState() + <rect x="1660.9569108508017" y="1236.347327752288" width="72.12370926050505" height="59.66972737727644" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1660.9569108508017" y="1236.347327752288" width="72.12370926050505" height="59.66972737727644" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1660.9569108508017" y="1236.347327752288" width="72.12370926050505" height="59.66972737727644" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1660.9569108508017" y="1236.347327752288" width="72.12370926050505" height="59.66972737727644" fill="transparent" pointer-events="all"> + <title>11 LOC in Method: PlayerZoneCtaWidget.buildWaitingForTurnContent() -File: lib/widgets/helpers/table_widget.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - _buildEmptyState - 25 + + buildWaitingForTurnContent + 11 - - - - - 53 LOC in Method: _TableWidgetState._buildRoomItem() + <rect x="1660.9569108508017" y="1344.8377411655179" width="49.93179871881119" height="70.5187687185994" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1660.9569108508017" y="1344.8377411655179" width="49.93179871881119" height="70.5187687185994" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1660.9569108508017" y="1344.8377411655179" width="49.93179871881119" height="70.5187687185994" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1660.9569108508017" y="1344.8377411655179" width="49.93179871881119" height="70.5187687185994" fill="transparent" pointer-events="all"> + <title>9 LOC in Method: PlayerZoneCtaWidget.ctaFlipOneOfYourHiddenCards() -File: lib/widgets/helpers/table_widget.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - _buildRoomItem - 53 + + ctaFlipOneOfYourHiddenCards + 9 - - - - - 9 LOC in Method: _TableWidgetState._getFilteredRooms() + <rect x="1363.719806019629" y="1236.347327752288" width="124.57731599541789" height="179.00918213182928" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1363.719806019629" y="1236.347327752288" width="124.57731599541789" height="179.00918213182928" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1363.719806019629" y="1236.347327752288" width="124.57731599541789" height="179.00918213182928" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1363.719806019629" y="1236.347327752288" width="124.57731599541789" height="179.00918213182928" fill="transparent" pointer-events="all"> + <title>57 LOC in Method: PlayerZoneCtaWidget.ctaPickCardFromPiles() -File: lib/widgets/helpers/table_widget.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - _getFilteredRooms - 9 + + ctaPickCardFromPiles + 57 - - - - - - - 27 LOC in Class: TableWidget - -File: lib/widgets/helpers/table_widget.dart - - TableWidget - 27 LOC - - - - - 10 LOC in Method: TableWidget.TableWidget() + <rect x="1488.297122015047" y="1236.347327752288" width="172.6597888357546" height="104.23319465903982" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1488.297122015047" y="1236.347327752288" width="172.6597888357546" height="104.23319465903982" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1488.297122015047" y="1236.347327752288" width="172.6597888357546" height="104.23319465903982" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1488.297122015047" y="1236.347327752288" width="172.6597888357546" height="104.23319465903982" fill="transparent" pointer-events="all"> + <title>46 LOC in Method: PlayerZoneCtaWidget.ctaSwapDiscardedCardWithAnyCardsInHand() -File: lib/widgets/helpers/table_widget.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - TableWidget - 10 + + ctaSwapDiscardedCardWithAnyCardsInHand + 46 - - - - - 2 LOC in Method: TableWidget.createState() + <rect x="1236.9569230769232" y="1236.347327752288" width="126.7628829427059" height="179.00918213182928" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1236.9569230769232" y="1236.347327752288" width="126.7628829427059" height="179.00918213182928" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1236.9569230769232" y="1236.347327752288" width="126.7628829427059" height="179.00918213182928" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1236.9569230769232" y="1236.347327752288" width="126.7628829427059" height="179.00918213182928" fill="transparent" pointer-events="all"> + <title>58 LOC in Method: PlayerZoneCtaWidget.ctaSwapTopDeckCardWithAnyCardsInHandOrDiscard() -File: lib/widgets/helpers/table_widget.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - createState - 2 + + ctaSwapTopDeckCardWithAnyCardsInHandOrDiscard + 58 - - - - - - - 95 LOC File: lib/widgets/helpers/edit_box.dart - - edit_box.dart - 95 LOC - - - - - - 95 LOC in Class: EditBox - -File: lib/widgets/helpers/edit_box.dart - - EditBox - 95 LOC - - - - - 19 LOC in Method: EditBox.EditBox() + <rect x="1741.0806201113066" y="1212.347327752288" width="30.639879309749404" height="211.00918213182928" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.45"/> + <rect x="1741.0806201113066" y="1212.347327752288" width="30.639879309749404" height="211.00918213182928" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1741.0806201113066" y="1212.347327752288" width="30.639879309749404" height="211.00918213182928" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8" stroke-dasharray="6,4"/> + <rect x="1741.0806201113066" y="1212.347327752288" width="30.639879309749404" height="211.00918213182928" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>14 LOC in Class: <...> -File: lib/widgets/helpers/edit_box.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - EditBox - 19 - - + <...> + 14 LOC - - - - - 56 LOC in Method: EditBox.build() + <rect x="1749.0806201113066" y="1236.347327752288" width="14.639879309749404" height="179.00918213182928" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1749.0806201113066" y="1236.347327752288" width="14.639879309749404" height="179.00918213182928" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1749.0806201113066" y="1236.347327752288" width="14.639879309749404" height="179.00918213182928" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1749.0806201113066" y="1236.347327752288" width="14.639879309749404" height="179.00918213182928" fill="transparent" pointer-events="all"> + <title>14 LOC in Function: buildMiniInstructions() -File: lib/widgets/helpers/edit_box.dart +File: lib/widgets/player/player_zone_cta_widget.dart - - build - 56 + + buildMiniInstructions + 14 - - - - - 74 LOC File: lib/widgets/helpers/input_keyboard.dart + + + + + 183 LOC File: lib/widgets/player/player_zone_widget.dart - input_keyboard.dart - 74 LOC + player_zone_widget.dart + 183 LOC - - - - - 74 LOC in Class: InputKeyboard + <rect x="1789.720499421056" y="877.4355828220858" width="257.3754194472922" height="334.15982481742327" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1789.720499421056" y="877.4355828220858" width="257.3754194472922" height="334.15982481742327" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1789.720499421056" y="877.4355828220858" width="257.3754194472922" height="334.15982481742327" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1789.720499421056" y="877.4355828220858" width="257.3754194472922" height="334.15982481742327" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>183 LOC in Class: PlayerZoneWidget -File: lib/widgets/helpers/input_keyboard.dart +File: lib/widgets/player/player_zone_widget.dart - InputKeyboard - 74 LOC + PlayerZoneWidget + 183 LOC - - - - - 2 LOC in Method: InputKeyboard.InputKeyboard() + <rect x="1976.671241425083" y="1100.5055850547412" width="62.42467744326521" height="103.08982258476794" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1976.671241425083" y="1100.5055850547412" width="62.42467744326521" height="103.08982258476794" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1976.671241425083" y="1100.5055850547412" width="62.42467744326521" height="103.08982258476794" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1976.671241425083" y="1100.5055850547412" width="62.42467744326521" height="103.08982258476794" fill="transparent" pointer-events="all"> + <title>15 LOC in Method: PlayerZoneWidget.PlayerZoneWidget() -File: lib/widgets/helpers/input_keyboard.dart +File: lib/widgets/player/player_zone_widget.dart - - InputKeyboard - 2 + + PlayerZoneWidget + 15 - - - - - 52 LOC in Method: InputKeyboard.build() + <rect x="1976.5969263328886" y="901.4355828220858" width="62.498992535459564" height="199.07000223265533" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1976.5969263328886" y="901.4355828220858" width="62.498992535459564" height="199.07000223265533" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1976.5969263328886" y="901.4355828220858" width="62.498992535459564" height="199.07000223265533" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1976.5969263328886" y="901.4355828220858" width="62.498992535459564" height="199.07000223265533" fill="transparent" pointer-events="all"> + <title>29 LOC in Method: PlayerZoneWidget.build() -File: lib/widgets/helpers/input_keyboard.dart +File: lib/widgets/player/player_zone_widget.dart - - build - 52 + + build + 29 - - - - - 15 LOC in Method: InputKeyboard._buildButton() + <rect x="1797.720499421056" y="1009.3651021048507" width="178.87642691183262" height="91.1404829498904" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1797.720499421056" y="1009.3651021048507" width="178.87642691183262" height="91.1404829498904" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1797.720499421056" y="1009.3651021048507" width="178.87642691183262" height="91.1404829498904" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1797.720499421056" y="1009.3651021048507" width="178.87642691183262" height="91.1404829498904" fill="transparent" pointer-events="all"> + <title>38 LOC in Method: PlayerZoneWidget._buildContent() -File: lib/widgets/helpers/input_keyboard.dart +File: lib/widgets/player/player_zone_widget.dart - - _buildButton - 15 + + _buildContent + 38 - - - - - - - - 70 LOC File: lib/widgets/helpers/dialog.dart - - dialog.dart - 70 LOC - - - - - - 70 LOC in Class: <...> - -File: lib/widgets/helpers/dialog.dart - - <...> - 70 LOC - - - - - 70 LOC in Function: myDialog() + <rect x="1797.720499421056" y="901.4355828220858" width="178.87642691183262" height="107.92951928276493" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1797.720499421056" y="901.4355828220858" width="178.87642691183262" height="107.92951928276493" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1797.720499421056" y="901.4355828220858" width="178.87642691183262" height="107.92951928276493" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1797.720499421056" y="901.4355828220858" width="178.87642691183262" height="107.92951928276493" fill="transparent" pointer-events="all"> + <title>45 LOC in Method: PlayerZoneWidget._buildPlayerCardButton() -File: lib/widgets/helpers/dialog.dart +File: lib/widgets/player/player_zone_widget.dart - - myDialog - 70 + + _buildPlayerCardButton + 45 - - - - - - - - 60 LOC File: lib/widgets/helpers/wiggle_widget.dart - - wiggle_widget.dart - 60 LOC - - - - - - 49 LOC in Class: WiggleWidgetState - -File: lib/widgets/helpers/wiggle_widget.dart - - WiggleWidgetState - 49 LOC - - - - - 18 LOC in Method: WiggleWidgetState.initState() + <rect x="1889.2766930045118" y="1100.5055850547412" width="87.39454842057131" height="103.08982258476794" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1889.2766930045118" y="1100.5055850547412" width="87.39454842057131" height="103.08982258476794" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1889.2766930045118" y="1100.5055850547412" width="87.39454842057131" height="103.08982258476794" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1889.2766930045118" y="1100.5055850547412" width="87.39454842057131" height="103.08982258476794" fill="transparent" pointer-events="all"> + <title>21 LOC in Method: PlayerZoneWidget._buildPlayerHand() -File: lib/widgets/helpers/wiggle_widget.dart +File: lib/widgets/player/player_zone_widget.dart - - initState - 18 + + _buildPlayerHand + 21 - - - - - 6 LOC in Method: WiggleWidgetState.dispose() + <rect x="1797.720499421056" y="1100.5055850547412" width="91.55619358345567" height="103.08982258476794" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1797.720499421056" y="1100.5055850547412" width="91.55619358345567" height="103.08982258476794" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1797.720499421056" y="1100.5055850547412" width="91.55619358345567" height="103.08982258476794" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1797.720499421056" y="1100.5055850547412" width="91.55619358345567" height="103.08982258476794" fill="transparent" pointer-events="all"> + <title>22 LOC in Method: PlayerZoneWidget._containerBorder() -File: lib/widgets/helpers/wiggle_widget.dart +File: lib/widgets/player/player_zone_widget.dart - - dispose - 6 + + _containerBorder + 22 - - - - - - 18 LOC in Method: WiggleWidgetState.build() - -File: lib/widgets/helpers/wiggle_widget.dart - - - build - 18 - - - - - - 11 LOC in Class: WiggleWidget + <rect x="2057.0959188683482" y="853.4355828220858" width="122.89704816461881" height="366.15982481742327" fill="#1f6f8b" fill-opacity="0.54"/> + <rect x="2057.0959188683482" y="853.4355828220858" width="122.89704816461881" height="366.15982481742327" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2057.0959188683482" y="853.4355828220858" width="122.89704816461881" height="366.15982481742327" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2057.0959188683482" y="853.4355828220858" width="122.89704816461881" height="366.15982481742327" fill="transparent" pointer-events="all"> + <title>83 LOC File: lib/widgets/player/status_picker.dart + + status_picker.dart + 83 LOC + + + + + + 68 LOC in Class: _StatusPickerState -File: lib/widgets/helpers/wiggle_widget.dart +File: lib/widgets/player/status_picker.dart - WiggleWidget - 11 LOC + _StatusPickerState + 68 LOC - - - - - 2 LOC in Method: WiggleWidget.WiggleWidget() + <rect x="2073.0959188683482" y="901.4355828220858" width="90.89704816461881" height="179.37736728116985" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2073.0959188683482" y="901.4355828220858" width="90.89704816461881" height="179.37736728116985" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2073.0959188683482" y="901.4355828220858" width="90.89704816461881" height="179.37736728116985" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2073.0959188683482" y="901.4355828220858" width="90.89704816461881" height="179.37736728116985" fill="transparent" pointer-events="all"> + <title>46 LOC in Method: _StatusPickerState.build() -File: lib/widgets/helpers/wiggle_widget.dart +File: lib/widgets/player/status_picker.dart - - WiggleWidget - 2 + + build + 46 - - - - - 2 LOC in Method: WiggleWidget.createState() + <rect x="2073.0959188683482" y="1080.8129501032556" width="90.89704816461881" height="62.392127749972104" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2073.0959188683482" y="1080.8129501032556" width="90.89704816461881" height="62.392127749972104" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2073.0959188683482" y="1080.8129501032556" width="90.89704816461881" height="62.392127749972104" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2073.0959188683482" y="1080.8129501032556" width="90.89704816461881" height="62.392127749972104" fill="transparent" pointer-events="all"> + <title>16 LOC in Method: _StatusPickerState._statusLabel() -File: lib/widgets/helpers/wiggle_widget.dart +File: lib/widgets/player/status_picker.dart - - createState - 2 + + _statusLabel + 16 - - - - - - - 59 LOC File: lib/widgets/helpers/my_text.dart - - my_text.dart - 59 LOC - - - - - 59 LOC in Class: MyText + <rect x="2065.0959188683482" y="1151.2050778532277" width="106.89704816461881" height="60.39032978628131" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="2065.0959188683482" y="1151.2050778532277" width="106.89704816461881" height="60.39032978628131" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2065.0959188683482" y="1151.2050778532277" width="106.89704816461881" height="60.39032978628131" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2065.0959188683482" y="1151.2050778532277" width="106.89704816461881" height="60.39032978628131" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>15 LOC in Class: StatusPicker -File: lib/widgets/helpers/my_text.dart +File: lib/widgets/player/status_picker.dart - MyText - 59 LOC + StatusPicker + 15 LOC - - - - - 9 LOC in Method: MyText.MyText() + <rect x="2073.0959188683482" y="1175.2050778532277" width="68.1727861234641" height="28.390329786281313" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2073.0959188683482" y="1175.2050778532277" width="68.1727861234641" height="28.390329786281313" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2073.0959188683482" y="1175.2050778532277" width="68.1727861234641" height="28.390329786281313" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2073.0959188683482" y="1175.2050778532277" width="68.1727861234641" height="28.390329786281313" fill="transparent" pointer-events="all"> + <title>6 LOC in Method: StatusPicker.StatusPicker() -File: lib/widgets/helpers/my_text.dart +File: lib/widgets/player/status_picker.dart - - MyText - 9 + + StatusPicker + 6 - - - - - 13 LOC in Method: MyText.build() + <rect x="2141.2687049918122" y="1175.2050778532277" width="22.724262041154702" height="28.390329786281313" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2141.2687049918122" y="1175.2050778532277" width="22.724262041154702" height="28.390329786281313" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2141.2687049918122" y="1175.2050778532277" width="22.724262041154702" height="28.390329786281313" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2141.2687049918122" y="1175.2050778532277" width="22.724262041154702" height="28.390329786281313" fill="transparent" pointer-events="all"> + <title>2 LOC in Method: StatusPicker.createState() -File: lib/widgets/helpers/my_text.dart +File: lib/widgets/player/status_picker.dart - - build - 13 + + createState + 2 - - - - - 42 LOC File: lib/widgets/helpers/wizard_footer.dart + + + + + 77 LOC File: lib/widgets/player/players_in_room_widget.dart - wizard_footer.dart - 42 LOC + players_in_room_widget.dart + 77 LOC - - - - - 42 LOC in Class: WizardFooter + <rect x="1789.720499421056" y="1245.5954076395092" width="183.44431376547155" height="177.76110224460814" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1789.720499421056" y="1245.5954076395092" width="183.44431376547155" height="177.76110224460814" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1789.720499421056" y="1245.5954076395092" width="183.44431376547155" height="177.76110224460814" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1789.720499421056" y="1245.5954076395092" width="183.44431376547155" height="177.76110224460814" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>77 LOC in Class: PlayersInRoomWidget -File: lib/widgets/helpers/wizard_footer.dart +File: lib/widgets/player/players_in_room_widget.dart - WizardFooter - 42 LOC + PlayersInRoomWidget + 77 LOC - - - - - 8 LOC in Method: WizardFooter.WizardFooter() + <rect x="1931.1526869529162" y="1269.5954076395092" width="34.01212623361141" height="145.76110224460814" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1931.1526869529162" y="1269.5954076395092" width="34.01212623361141" height="145.76110224460814" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1931.1526869529162" y="1269.5954076395092" width="34.01212623361141" height="145.76110224460814" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1931.1526869529162" y="1269.5954076395092" width="34.01212623361141" height="145.76110224460814" fill="transparent" pointer-events="all"> + <title>13 LOC in Method: PlayersInRoomWidget.PlayersInRoomWidget() -File: lib/widgets/helpers/wizard_footer.dart +File: lib/widgets/player/players_in_room_widget.dart - - WizardFooter - 8 + + PlayersInRoomWidget + 13 - - - - - 26 LOC in Method: WizardFooter.build() + <rect x="1797.720499421056" y="1269.5954076395092" width="133.43218753186014" height="145.76110224460814" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1797.720499421056" y="1269.5954076395092" width="133.43218753186014" height="145.76110224460814" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1797.720499421056" y="1269.5954076395092" width="133.43218753186014" height="145.76110224460814" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1797.720499421056" y="1269.5954076395092" width="133.43218753186014" height="145.76110224460814" fill="transparent" pointer-events="all"> + <title>51 LOC in Method: PlayersInRoomWidget.build() -File: lib/widgets/helpers/wizard_footer.dart +File: lib/widgets/player/players_in_room_widget.dart - - build - 26 + + build + 51 - - - - - 37 LOC File: lib/widgets/helpers/date_importance.dart + + + + + 76 LOC File: lib/widgets/player/player_header_widget.dart - date_importance.dart - 37 LOC + player_header_widget.dart + 76 LOC - - - - - 37 LOC in Class: DateTimeWidget + <rect x="1991.1648131865277" y="1245.5954076395092" width="180.82815384643945" height="177.76110224460814" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1991.1648131865277" y="1245.5954076395092" width="180.82815384643945" height="177.76110224460814" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1991.1648131865277" y="1245.5954076395092" width="180.82815384643945" height="177.76110224460814" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1991.1648131865277" y="1245.5954076395092" width="180.82815384643945" height="177.76110224460814" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>76 LOC in Class: PlayerHeaderWidget -File: lib/widgets/helpers/date_importance.dart +File: lib/widgets/player/player_header_widget.dart - DateTimeWidget - 37 LOC + PlayerHeaderWidget + 76 LOC - - - - - 2 LOC in Method: DateTimeWidget.DateTimeWidget() + <rect x="2090.45425223994" y="1375.1465506442255" width="73.53871479302683" height="40.2099592398919" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2090.45425223994" y="1375.1465506442255" width="73.53871479302683" height="40.2099592398919" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2090.45425223994" y="1375.1465506442255" width="73.53871479302683" height="40.2099592398919" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2090.45425223994" y="1375.1465506442255" width="73.53871479302683" height="40.2099592398919" fill="transparent" pointer-events="all"> + <title>8 LOC in Method: PlayerHeaderWidget.PlayerHeaderWidget() -File: lib/widgets/helpers/date_importance.dart +File: lib/widgets/player/player_header_widget.dart - - DateTimeWidget - 2 + + PlayerHeaderWidget + 8 - - - - - 17 LOC in Method: DateTimeWidget.build() + <rect x="1999.1648131865277" y="1269.5954076395092" width="91.28943905341262" height="145.76110224460814" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1999.1648131865277" y="1269.5954076395092" width="91.28943905341262" height="145.76110224460814" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1999.1648131865277" y="1269.5954076395092" width="91.28943905341262" height="145.76110224460814" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1999.1648131865277" y="1269.5954076395092" width="91.28943905341262" height="145.76110224460814" fill="transparent" pointer-events="all"> + <title>36 LOC in Method: PlayerHeaderWidget.build() -File: lib/widgets/helpers/date_importance.dart +File: lib/widgets/player/player_header_widget.dart - - build - 17 + + build + 36 - - - - - 8 LOC in Method: DateTimeWidget._buildText() + <rect x="2090.45425223994" y="1269.5954076395092" width="73.53871479302683" height="105.55114300471624" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2090.45425223994" y="1269.5954076395092" width="73.53871479302683" height="105.55114300471624" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2090.45425223994" y="1269.5954076395092" width="73.53871479302683" height="105.55114300471624" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2090.45425223994" y="1269.5954076395092" width="73.53871479302683" height="105.55114300471624" fill="transparent" pointer-events="all"> + <title>21 LOC in Method: PlayerHeaderWidget.showHistory() -File: lib/widgets/helpers/date_importance.dart +File: lib/widgets/player/player_header_widget.dart - - _buildText - 8 + + showHistory + 21 - - - - + + + + 555 LOC Folder: lib/widgets/cards - cards - 555 LOC + cards + 555 LOC - - - - + + + + 285 LOC File: lib/widgets/cards/card_face_french_widget.dart - card_face_french_widget.dart - 285 LOC + card_face_french_widget.dart + 285 LOC - - - - + + + + 285 LOC in Class: CardFaceFrenchWidget File: lib/widgets/cards/card_face_french_widget.dart - CardFaceFrenchWidget - 285 LOC + CardFaceFrenchWidget + 285 LOC - - - - + + + + 2 LOC in Method: CardFaceFrenchWidget.CardFaceFrenchWidget() File: lib/widgets/cards/card_face_french_widget.dart - - CardFaceFrenchWidget - 2 + + CardFaceFrenchWidget + 2 - - - - + + + + 4 LOC in Method: CardFaceFrenchWidget.build() File: lib/widgets/cards/card_face_french_widget.dart - - build - 4 + + build + 4 - - - - + + + + 11 LOC in Method: CardFaceFrenchWidget.buildFaceDown() File: lib/widgets/cards/card_face_french_widget.dart - - buildFaceDown - 11 + + buildFaceDown + 11 - - - - + + + + 12 LOC in Method: CardFaceFrenchWidget.buildFaceUp() File: lib/widgets/cards/card_face_french_widget.dart - - buildFaceUp - 12 + + buildFaceUp + 12 - - - - + + + + 49 LOC in Method: CardFaceFrenchWidget.buildRank() File: lib/widgets/cards/card_face_french_widget.dart - - buildRank - 49 + + buildRank + 49 - - - - + + + + 11 LOC in Method: CardFaceFrenchWidget.buildSuitSymbol() File: lib/widgets/cards/card_face_french_widget.dart - - buildSuitSymbol - 11 + + buildSuitSymbol + 11 - - - - + + + + 142 LOC in Method: CardFaceFrenchWidget.buildSuitSymbols() File: lib/widgets/cards/card_face_french_widget.dart - - buildSuitSymbols - 142 + + buildSuitSymbols + 142 - - - - + + + + 15 LOC in Method: CardFaceFrenchWidget.buildValue() File: lib/widgets/cards/card_face_french_widget.dart - - buildValue - 15 + + buildValue + 15 - - - - + + + + 17 LOC in Method: CardFaceFrenchWidget.figureCards() File: lib/widgets/cards/card_face_french_widget.dart - - figureCards - 17 + + figureCards + 17 - - - - + + + + 13 LOC in Method: CardFaceFrenchWidget.getSuitColor() File: lib/widgets/cards/card_face_french_widget.dart - - getSuitColor - 13 + + getSuitColor + 13 - - - - + + + + 112 LOC File: lib/widgets/cards/card_face_skyjo_widget.dart - card_face_skyjo_widget.dart - 112 LOC + card_face_skyjo_widget.dart + 112 LOC - - - - + + + + 112 LOC in Class: CardFaceSkyjoWidget File: lib/widgets/cards/card_face_skyjo_widget.dart - CardFaceSkyjoWidget - 112 LOC + CardFaceSkyjoWidget + 112 LOC - - - - + + + + 2 LOC in Method: CardFaceSkyjoWidget.CardFaceSkyjoWidget() File: lib/widgets/cards/card_face_skyjo_widget.dart - - CardFaceSkyjoWidget - 2 + + CardFaceSkyjoWidget + 2 - - - - + + + + 4 LOC in Method: CardFaceSkyjoWidget.build() File: lib/widgets/cards/card_face_skyjo_widget.dart - - build - 4 + + build + 4 - - - - + + + + 40 LOC in Method: CardFaceSkyjoWidget.buildFaceUp() File: lib/widgets/cards/card_face_skyjo_widget.dart - - buildFaceUp - 40 + + buildFaceUp + 40 - - - - + + + + 14 LOC in Method: CardFaceSkyjoWidget._buildSmallText() File: lib/widgets/cards/card_face_skyjo_widget.dart - - _buildSmallText - 14 + + _buildSmallText + 14 - - - - + + + + 31 LOC in Method: CardFaceSkyjoWidget._buildMainText() File: lib/widgets/cards/card_face_skyjo_widget.dart - - _buildMainText - 31 + + _buildMainText + 31 - - - - + + + + 14 LOC in Method: CardFaceSkyjoWidget.getBackColor() File: lib/widgets/cards/card_face_skyjo_widget.dart - - getBackColor - 14 + + getBackColor + 14 - - - - + + + + 84 LOC File: lib/widgets/cards/card_pile_widget.dart - card_pile_widget.dart - 84 LOC + card_pile_widget.dart + 84 LOC - - - - + + + + 84 LOC in Class: CardPileWidget File: lib/widgets/cards/card_pile_widget.dart - CardPileWidget - 84 LOC + CardPileWidget + 84 LOC - - - - + + + + 13 LOC in Method: CardPileWidget.CardPileWidget() File: lib/widgets/cards/card_pile_widget.dart - - CardPileWidget - 13 + + CardPileWidget + 13 - - - - + + + + 10 LOC in Method: CardPileWidget.build() File: lib/widgets/cards/card_pile_widget.dart - - build - 10 + + build + 10 - - - - + + + + 39 LOC in Method: CardPileWidget._buildPileUnplayedCards() File: lib/widgets/cards/card_pile_widget.dart - - _buildPileUnplayedCards - 39 + + _buildPileUnplayedCards + 39 - - - - + + + + 74 LOC File: lib/widgets/cards/card_widget.dart - card_widget.dart - 74 LOC + card_widget.dart + 74 LOC - - - - + + + + 62 LOC in Class: CardWidget File: lib/widgets/cards/card_widget.dart - CardWidget - 62 LOC + CardWidget + 62 LOC - - - - + + + + 3 LOC in Method: CardWidget.CardWidget() File: lib/widgets/cards/card_widget.dart - - CardWidget - 3 + + CardWidget + 3 - - - - + + + + 19 LOC in Method: CardWidget.build() File: lib/widgets/cards/card_widget.dart - - build - 19 + + build + 19 - - - - + + + + 25 LOC in Method: CardWidget.buildCard() File: lib/widgets/cards/card_widget.dart - - buildCard - 25 + + buildCard + 25 - - - - + + + + 12 LOC in Class: <...> File: lib/widgets/cards/card_widget.dart - <...> - 12 LOC + <...> + 12 LOC - - - - + + + + 12 LOC in Function: dragSource() File: lib/widgets/cards/card_widget.dart - - dragSource - 12 + + dragSource + 12 - - - - - 155 LOC Folder: lib/widgets/buttons + + + + + 212 LOC Folder: lib/widgets/buttons - buttons - 155 LOC + buttons + 212 LOC - - - - - 102 LOC File: lib/widgets/buttons/my_button.dart + + + + + 111 LOC File: lib/widgets/buttons/my_button.dart - my_button.dart - 102 LOC + my_button.dart + 111 LOC - - - - - 102 LOC in Class: MyButton + <rect x="1943.1746602289495" y="1497.3565098841173" width="228.81830680401742" height="192.5256009569009" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1943.1746602289495" y="1497.3565098841173" width="228.81830680401742" height="192.5256009569009" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1943.1746602289495" y="1497.3565098841173" width="228.81830680401742" height="192.5256009569009" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1943.1746602289495" y="1497.3565098841173" width="228.81830680401742" height="192.5256009569009" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>111 LOC in Class: MyButton File: lib/widgets/buttons/my_button.dart - MyButton - 102 LOC + MyButton + 111 LOC - - - - - 12 LOC in Method: MyButton.MyButton() + <rect x="2098.6964410817345" y="1521.3565098841173" width="65.29652595123261" height="83.23549679246712" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2098.6964410817345" y="1521.3565098841173" width="65.29652595123261" height="83.23549679246712" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2098.6964410817345" y="1521.3565098841173" width="65.29652595123261" height="83.23549679246712" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2098.6964410817345" y="1521.3565098841173" width="65.29652595123261" height="83.23549679246712" fill="transparent" pointer-events="all"> + <title>14 LOC in Method: MyButton.MyButton() File: lib/widgets/buttons/my_button.dart - - MyButton - 12 + + MyButton + 14 - - - - - 11 LOC in Method: MyButton.MyButton.action() + <rect x="2098.6964410817345" y="1604.5920066765843" width="65.29652595123261" height="77.29010416443377" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2098.6964410817345" y="1604.5920066765843" width="65.29652595123261" height="77.29010416443377" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2098.6964410817345" y="1604.5920066765843" width="65.29652595123261" height="77.29010416443377" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2098.6964410817345" y="1604.5920066765843" width="65.29652595123261" height="77.29010416443377" fill="transparent" pointer-events="all"> + <title>13 LOC in Method: MyButton.MyButton.action() File: lib/widgets/buttons/my_button.dart - - MyButton.action - 11 + + MyButton.action + 13 - - - - - 60 LOC in Method: MyButton.build() + <rect x="1951.1746602289495" y="1521.3565098841173" width="147.52178085278481" height="160.5256009569009" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="1951.1746602289495" y="1521.3565098841173" width="147.52178085278481" height="160.5256009569009" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1951.1746602289495" y="1521.3565098841173" width="147.52178085278481" height="160.5256009569009" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1951.1746602289495" y="1521.3565098841173" width="147.52178085278481" height="160.5256009569009" fill="transparent" pointer-events="all"> + <title>61 LOC in Method: MyButton.build() File: lib/widgets/buttons/my_button.dart - - build - 60 + + build + 61 - - - - - 33 LOC File: lib/widgets/buttons/my_button_rectangle.dart + + + + + 81 LOC File: lib/widgets/buttons/my_button_rectangle.dart - my_button_rectangle.dart - 33 LOC + my_button_rectangle.dart + 81 LOC - - - - - 33 LOC in Class: MyButtonRectangle + <rect x="1943.1746602289495" y="1723.8821108410182" width="179.94339456559814" height="172.11788915898185" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="1943.1746602289495" y="1723.8821108410182" width="179.94339456559814" height="172.11788915898185" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="1943.1746602289495" y="1723.8821108410182" width="179.94339456559814" height="172.11788915898185" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="1943.1746602289495" y="1723.8821108410182" width="179.94339456559814" height="172.11788915898185" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>81 LOC in Class: MyButtonRectangle File: lib/widgets/buttons/my_button_rectangle.dart - MyButtonRectangle - 33 LOC + MyButtonRectangle + 81 LOC - - - - + + + + 17 LOC in Method: MyButtonRectangle.MyButtonRectangle() File: lib/widgets/buttons/my_button_rectangle.dart - - MyButtonRectangle - 17 + + MyButtonRectangle + 17 - - - - + + + + 9 LOC in Method: MyButtonRectangle.MyButtonRectangle.action() File: lib/widgets/buttons/my_button_rectangle.dart - - MyButtonRectangle.action - 9 + + MyButtonRectangle.action + 9 + + + + + + + + 12 LOC in Method: MyButtonRectangle.MyButtonRectangle.primary() + +File: lib/widgets/buttons/my_button_rectangle.dart + + + MyButtonRectangle.primary + 12 + + + + + + + + 12 LOC in Method: MyButtonRectangle.MyButtonRectangle.secondary() + +File: lib/widgets/buttons/my_button_rectangle.dart + + + MyButtonRectangle.secondary + 12 + + + + + + + + 12 LOC in Method: MyButtonRectangle.MyButtonRectangle.warning() + +File: lib/widgets/buttons/my_button_rectangle.dart + + + MyButtonRectangle.warning + 12 + + + + + + + + 12 LOC in Method: MyButtonRectangle.MyButtonRectangle.danger() + +File: lib/widgets/buttons/my_button_rectangle.dart + + + MyButtonRectangle.danger + 12 - - - - + + + + 20 LOC File: lib/widgets/buttons/my_button_round.dart - my_button_round.dart - 20 LOC + my_button_round.dart + 20 LOC - - - - + + + + 20 LOC in Class: MyButtonRound File: lib/widgets/buttons/my_button_round.dart - MyButtonRound - 20 LOC + MyButtonRound + 20 LOC - - - - + + + + 13 LOC in Method: MyButtonRound.MyButtonRound() File: lib/widgets/buttons/my_button_round.dart - - MyButtonRound - 13 + + MyButtonRound + 13 @@ -4148,2449 +4354,2477 @@ File: lib/widgets/buttons/my_button_round.dart - - - - - 2,620 LOC Folder: lib/models + + + + + 2,653 LOC Folder: lib/models - models - 2,620 LOC + models + 2,653 LOC - - - - - 1,395 LOC Folder: lib/models/game + + + + + 1,391 LOC Folder: lib/models/game - game - 1,395 LOC + game + 1,391 LOC - - - - + + + + 759 LOC File: lib/models/game/game_model.dart - game_model.dart - 759 LOC + game_model.dart + 759 LOC - - - - + + + + 738 LOC in Class: GameModel File: lib/models/game/game_model.dart - GameModel - 738 LOC + GameModel + 738 LOC - - - - + + + + 26 LOC in Method: GameModel.GameModel() File: lib/models/game/game_model.dart - - GameModel - 26 + + GameModel + 26 - - - - + + + + 2 LOC in Method: GameModel.isFinalTurn() File: lib/models/game/game_model.dart - - isFinalTurn - 2 + + isFinalTurn + 2 - - - - + + + + 2 LOC in Method: GameModel.gameState() File: lib/models/game/game_model.dart - - gameState - 2 + + gameState + 2 - - - - + + + + 2 LOC in Method: GameModel.swapAnimationEventId() File: lib/models/game/game_model.dart - - swapAnimationEventId - 2 + + swapAnimationEventId + 2 - - - - + + + + 3 LOC in Method: GameModel.lastSwapAnimationEvent() File: lib/models/game/game_model.dart - - lastSwapAnimationEvent - 3 + + lastSwapAnimationEvent + 3 - - - - + + + + 28 LOC in Method: GameModel.addPlayer() File: lib/models/game/game_model.dart - - addPlayer - 28 + + addPlayer + 28 - - - - + + + + 11 LOC in Method: GameModel.gameState() File: lib/models/game/game_model.dart - - gameState - 11 + + gameState + 11 - - - - + + + + 13 LOC in Method: GameModel.pushGameModelToBackend() File: lib/models/game/game_model.dart - - pushGameModelToBackend - 13 + + pushGameModelToBackend + 13 - - - - + + + + 2 LOC in Method: GameModel.numPlayers() File: lib/models/game/game_model.dart - - numPlayers - 2 + + numPlayers + 2 - - - - + + + + 10 LOC in Method: GameModel.==() File: lib/models/game/game_model.dart - - == - 10 + + == + 10 - - - - + + + + 3 LOC in Method: GameModel.hashCode() File: lib/models/game/game_model.dart - - hashCode - 3 + + hashCode + 3 - - - - + + + + 16 LOC in Method: GameModel._loadGameState() File: lib/models/game/game_model.dart - - _loadGameState - 16 + + _loadGameState + 16 - - - - + + + + 11 LOC in Method: GameModel.loadDeck() File: lib/models/game/game_model.dart - - loadDeck - 11 + + loadDeck + 11 - - - - + + + + 38 LOC in Method: GameModel.loadPlayer() File: lib/models/game/game_model.dart - - loadPlayer - 38 + + loadPlayer + 38 - - - - + + + + 12 LOC in Method: GameModel.fromJson() File: lib/models/game/game_model.dart - - fromJson - 12 + + fromJson + 12 - - - - + + + + 14 LOC in Method: GameModel._loadPlayers() File: lib/models/game/game_model.dart - - _loadPlayers - 14 + + _loadPlayers + 14 - - - - + + + + 11 LOC in Method: GameModel.setActivePlayer() File: lib/models/game/game_model.dart - - setActivePlayer - 11 + + setActivePlayer + 11 - - - - + + + + 19 LOC in Method: GameModel.toJson() File: lib/models/game/game_model.dart - - toJson - 19 + + toJson + 19 - - - - + + + + 4 LOC in Method: GameModel.toString() File: lib/models/game/game_model.dart - - toString - 4 + + toString + 4 - - - - + + + + 7 LOC in Method: GameModel.getPlayerName() File: lib/models/game/game_model.dart - - getPlayerName - 7 + + getPlayerName + 7 - - - - + + + + 4 LOC in Method: GameModel.getPlayersNames() File: lib/models/game/game_model.dart - - getPlayersNames - 4 + + getPlayersNames + 4 - - - - + + + + 21 LOC in Method: GameModel.initializeGame() File: lib/models/game/game_model.dart - - initializeGame - 21 + + initializeGame + 21 - - - - + + + + 13 LOC in Method: GameModel.getWinsForPlayerName() File: lib/models/game/game_model.dart - - getWinsForPlayerName - 13 + + getWinsForPlayerName + 13 - - - - + + + + 8 LOC in Method: GameModel.dealCards() File: lib/models/game/game_model.dart - - dealCards - 8 + + dealCards + 8 - - - - + + + + 27 LOC in Method: GameModel.selectTopCardOfDeck() File: lib/models/game/game_model.dart - - selectTopCardOfDeck - 27 + + selectTopCardOfDeck + 27 - - - - + + + + 48 LOC in Method: GameModel.onDropCardOnCard() File: lib/models/game/game_model.dart - - onDropCardOnCard - 48 + + onDropCardOnCard + 48 - - - - + + + + 24 LOC in Method: GameModel.swapDragCardOnPlayersTargetCard() File: lib/models/game/game_model.dart - - swapDragCardOnPlayersTargetCard - 24 + + swapDragCardOnPlayersTargetCard + 24 - - - - + + + + 45 LOC in Method: GameModel.swapCardWithTopPile() File: lib/models/game/game_model.dart - - swapCardWithTopPile - 45 + + swapCardWithTopPile + 45 - - - - + + + + 7 LOC in Method: GameModel.revealAllRemainingCardsFor() File: lib/models/game/game_model.dart - - revealAllRemainingCardsFor - 7 + + revealAllRemainingCardsFor + 7 - - - - + + + + 40 LOC in Method: GameModel.revealCard() File: lib/models/game/game_model.dart - - revealCard - 40 + + revealCard + 40 - - - - + + + + 10 LOC in Method: GameModel.handleFlipOneCardState() File: lib/models/game/game_model.dart - - handleFlipOneCardState - 10 + + handleFlipOneCardState + 10 - - - - + + + + 13 LOC in Method: GameModel.handleFlipAndSwapState() File: lib/models/game/game_model.dart - - handleFlipAndSwapState - 13 + + handleFlipAndSwapState + 13 - - - - + + + + 9 LOC in Method: GameModel.notifyCardUnavailable() File: lib/models/game/game_model.dart - - notifyCardUnavailable - 9 + + notifyCardUnavailable + 9 - - - - + + + + 4 LOC in Method: GameModel.areAllCardRevealed() File: lib/models/game/game_model.dart - - areAllCardRevealed - 4 + + areAllCardRevealed + 4 - - - - + + + + 9 LOC in Method: GameModel.areAllCardsFromHandsRevealed() File: lib/models/game/game_model.dart - - areAllCardsFromHandsRevealed - 9 + + areAllCardsFromHandsRevealed + 9 - - - - + + + + 26 LOC in Method: GameModel.evaluateHand() File: lib/models/game/game_model.dart - - evaluateHand - 26 + + evaluateHand + 26 - - - - + + + + 34 LOC in Method: GameModel.evaluateHandSkyjo() File: lib/models/game/game_model.dart - - evaluateHandSkyjo - 34 + + evaluateHandSkyjo + 34 - - - - + + + + 20 LOC in Method: GameModel.moveToNextPlayer() File: lib/models/game/game_model.dart - - moveToNextPlayer - 20 + + moveToNextPlayer + 20 - - - - + + + + 16 LOC in Method: GameModel.updatePlayerStatus() File: lib/models/game/game_model.dart - - updatePlayerStatus - 16 + + updatePlayerStatus + 16 - - - - + + + + 25 LOC in Method: GameModel.getGameStateAsStringLocalized() File: lib/models/game/game_model.dart - - getGameStateAsStringLocalized - 25 + + getGameStateAsStringLocalized + 25 - - - - + + + + 18 LOC in Method: GameModel.getGameStateAsString() File: lib/models/game/game_model.dart - - getGameStateAsString - 18 + + getGameStateAsString + 18 - - - - + + + + 16 LOC in Method: GameModel.getLinkToGameFromInput() File: lib/models/game/game_model.dart - - getLinkToGameFromInput - 16 + + getLinkToGameFromInput + 16 - - - - + + + + 14 LOC in Method: GameModel.linkUri() File: lib/models/game/game_model.dart - - linkUri - 14 + + linkUri + 14 - - - - + + + + 15 LOC in Method: GameModel.getLinkToGame() File: lib/models/game/game_model.dart - - getLinkToGame - 15 + + getLinkToGame + 15 - - - - + + + + 21 LOC in Class: <...> File: lib/models/game/game_model.dart - <...> - 21 LOC + <...> + 21 LOC - - - - + + + + 219 LOC File: lib/models/game/backend_model.dart - backend_model.dart + backend_model.dart 219 LOC - - - - + + + + 219 LOC in Class: <...> File: lib/models/game/backend_model.dart - <...> + <...> 219 LOC - - - - + + + + 6 LOC in Function: backendReady() File: lib/models/game/backend_model.dart - - backendReady - 6 + + backendReady + 6 - - - - + + + + 4 LOC in Function: backendReady() File: lib/models/game/backend_model.dart - - backendReady - 4 + + backendReady + 4 - - - - + + + + 34 LOC in Function: useFirebase() File: lib/models/game/backend_model.dart - - useFirebase - 34 + + useFirebase + 34 - - - - + + + + 22 LOC in Function: getPlayersInRoom() File: lib/models/game/backend_model.dart - - getPlayersInRoom - 22 + + getPlayersInRoom + 22 - - - - + + + + 18 LOC in Function: setPlayersInRoom() File: lib/models/game/backend_model.dart - - setPlayersInRoom - 18 + + setPlayersInRoom + 18 - - - - + + + + 31 LOC in Function: getGameHistory() File: lib/models/game/backend_model.dart - - getGameHistory - 31 + + getGameHistory + 31 - - - - + + + + 32 LOC in Function: recordPlayerWin() File: lib/models/game/backend_model.dart - - recordPlayerWin - 32 + + recordPlayerWin + 32 - - - - + + + + 20 LOC in Function: onBackendInviteesUpdated() File: lib/models/game/backend_model.dart - - onBackendInviteesUpdated - 20 + + onBackendInviteesUpdated + 20 - - - - + + + + 28 LOC in Function: getInviteesFromDataSnapshot() File: lib/models/game/backend_model.dart - - getInviteesFromDataSnapshot - 28 + + getInviteesFromDataSnapshot + 28 - - - - + + + + 24 LOC in Function: getAllRooms() File: lib/models/game/backend_model.dart - - getAllRooms - 24 + + getAllRooms + 24 - - - - - 161 LOC File: lib/models/game/golf_score_model.dart + + + + + 157 LOC File: lib/models/game/golf_score_model.dart - golf_score_model.dart - 161 LOC + golf_score_model.dart + 157 LOC - - - - - 161 LOC in Class: GolfScoreModel + <rect x="2739.6301618726347" y="459.90863170040114" width="396.369838127365" height="179.56920172129213" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="2739.6301618726347" y="459.90863170040114" width="396.369838127365" height="179.56920172129213" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2739.6301618726347" y="459.90863170040114" width="396.369838127365" height="179.56920172129213" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2739.6301618726347" y="459.90863170040114" width="396.369838127365" height="179.56920172129213" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>157 LOC in Class: GolfScoreModel File: lib/models/game/golf_score_model.dart - GolfScoreModel - 161 LOC + GolfScoreModel + 157 LOC - - - - + + + + 7 LOC in Method: GolfScoreModel.GolfScoreModel() File: lib/models/game/golf_score_model.dart - - GolfScoreModel - 7 + + GolfScoreModel + 7 - - - - + + + + 5 LOC in Method: GolfScoreModel.addRound() File: lib/models/game/golf_score_model.dart - - addRound - 5 + + addRound + 5 - - - - + + + + 13 LOC in Method: GolfScoreModel.getPlayerTotalScore() File: lib/models/game/golf_score_model.dart - - getPlayerTotalScore - 13 + + getPlayerTotalScore + 13 - - - - + + + + 15 LOC in Method: GolfScoreModel.updateScore() File: lib/models/game/golf_score_model.dart - - updateScore - 15 + + updateScore + 15 - - - - + + + + 6 LOC in Method: GolfScoreModel.clearScores() File: lib/models/game/golf_score_model.dart - - clearScores - 6 + + clearScores + 6 - - - - + + + + 9 LOC in Method: GolfScoreModel.removeRoundAt() File: lib/models/game/golf_score_model.dart - - removeRoundAt - 9 + + removeRoundAt + 9 - - - - + + + + 14 LOC in Method: GolfScoreModel.removePlayerAt() File: lib/models/game/golf_score_model.dart - - removePlayerAt - 14 + + removePlayerAt + 14 - - - - + + + + 9 LOC in Method: GolfScoreModel.removePlayer() File: lib/models/game/golf_score_model.dart - - removePlayer - 9 + + removePlayer + 9 - - - - + + + + 12 LOC in Method: GolfScoreModel.addPlayer() File: lib/models/game/golf_score_model.dart - - addPlayer - 12 + + addPlayer + 12 - - - - + + + + 31 LOC in Method: GolfScoreModel.getPlayerRanks() File: lib/models/game/golf_score_model.dart - - getPlayerRanks - 31 + + getPlayerRanks + 31 - - - - + + + + 6 LOC in Method: GolfScoreModel._save() File: lib/models/game/golf_score_model.dart - - _save - 6 + + _save + 6 - - - - - 25 LOC in Method: GolfScoreModel.load() + <rect x="2747.6301618726347" y="571.8825788804022" width="133.64345663934446" height="59.595254541291055" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2747.6301618726347" y="571.8825788804022" width="133.64345663934446" height="59.595254541291055" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2747.6301618726347" y="571.8825788804022" width="133.64345663934446" height="59.595254541291055" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2747.6301618726347" y="571.8825788804022" width="133.64345663934446" height="59.595254541291055" fill="transparent" pointer-events="all"> + <title>21 LOC in Method: GolfScoreModel.load() File: lib/models/game/golf_score_model.dart - - load - 25 + + load + 21 - - - - + + + + 123 LOC File: lib/models/game/deck_model.dart - deck_model.dart - 123 LOC + deck_model.dart + 123 LOC - - - - + + + + 123 LOC in Class: DeckModel File: lib/models/game/deck_model.dart - DeckModel - 123 LOC + DeckModel + 123 LOC - - - - + + + + 19 LOC in Method: DeckModel.DeckModel.fromJson() File: lib/models/game/deck_model.dart - - DeckModel.fromJson - 19 + + DeckModel.fromJson + 19 - - - - + + + + 5 LOC in Method: DeckModel.DeckModel() File: lib/models/game/deck_model.dart - - DeckModel - 5 + + DeckModel + 5 - - - - + + + + 13 LOC in Method: DeckModel.loadFromJson() File: lib/models/game/deck_model.dart - - loadFromJson - 13 + + loadFromJson + 13 - - - - + + + + 13 LOC in Method: DeckModel.shuffle() File: lib/models/game/deck_model.dart - - shuffle - 13 + + shuffle + 13 - - - - + + + + 24 LOC in Method: DeckModel.addCardsToDeck() File: lib/models/game/deck_model.dart - - addCardsToDeck - 24 + + addCardsToDeck + 24 - - - - + + + + 23 LOC in Method: DeckModel.addCardsToDeckGolf() File: lib/models/game/deck_model.dart - - addCardsToDeckGolf - 23 + + addCardsToDeckGolf + 23 - - - - + + + + 12 LOC in Method: DeckModel.toJson() File: lib/models/game/deck_model.dart - - toJson - 12 + + toJson + 12 - - - - + + + + 63 LOC File: lib/models/game/game_styles.dart - game_styles.dart - 63 LOC + game_styles.dart + 63 LOC - - - - + + + + 49 LOC in Class: <...> File: lib/models/game/game_styles.dart - <...> - 49 LOC + <...> + 49 LOC - - - - + + + + 32 LOC in Function: getGameStyleConfig() File: lib/models/game/game_styles.dart - - getGameStyleConfig - 32 + + getGameStyleConfig + 32 - - - - + + + + 17 LOC in Function: numberOfDecks() File: lib/models/game/game_styles.dart - - numberOfDecks - 17 + + numberOfDecks + 17 - - - - + + + + 14 LOC in Class: GameStyleConfig File: lib/models/game/game_styles.dart - GameStyleConfig - 14 LOC + GameStyleConfig + 14 LOC - - - - + + + + 5 LOC in Method: GameStyleConfig.GameStyleConfig() File: lib/models/game/game_styles.dart - - GameStyleConfig - 5 + + GameStyleConfig + 5 - - - - + + + + 36 LOC File: lib/models/game/game_history.dart - game_history.dart - 36 LOC + game_history.dart + 36 LOC - - - - + + + + 36 LOC in Class: GameHistory File: lib/models/game/game_history.dart - GameHistory - 36 LOC + GameHistory + 36 LOC - - - - + + + + 2 LOC in Method: GameHistory.GameHistory() File: lib/models/game/game_history.dart - - GameHistory - 2 + + GameHistory + 2 - - - - + + + + 13 LOC in Method: GameHistory.GameHistory.fromJson() File: lib/models/game/game_history.dart - - GameHistory.fromJson - 13 + + GameHistory.fromJson + 13 - - - - + + + + 10 LOC in Method: GameHistory.toJson() File: lib/models/game/game_history.dart - - toJson - 10 + + toJson + 10 - - - - + + + + 4 LOC in Method: GameHistory.toString() File: lib/models/game/game_history.dart - - toString - 4 + + toString + 4 - - - - + + + + 34 LOC File: lib/models/game/game_constants.dart - game_constants.dart - 34 LOC + game_constants.dart + 34 LOC - - - - + + + + 34 LOC in Class: GameConstants File: lib/models/game/game_constants.dart - GameConstants - 34 LOC + GameConstants + 34 LOC - - - - + + + + 1 LOC in Method: GameConstants.GameConstants() File: lib/models/game/game_constants.dart - - GameConstants - 1 + + GameConstants + 1 - - - - + + + + 3 LOC in Method: GameConstants.calculateDecks() File: lib/models/game/game_constants.dart - - calculateDecks - 3 + + calculateDecks + 3 - - - - - 511 LOC Folder: lib/models/app + + + + + 548 LOC Folder: lib/models/app - app - 511 LOC + app + 548 LOC - - - - - 168 LOC File: lib/models/app/app_theme.dart + + + + + 177 LOC File: lib/models/app/app_theme.dart - app_theme.dart - 168 LOC + app_theme.dart + 177 LOC - - - - - 168 LOC in Class: AppTheme + <rect x="2241.992967032967" y="1061.718060432208" width="386.8086812017323" height="199.6866804779751" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="2241.992967032967" y="1061.718060432208" width="386.8086812017323" height="199.6866804779751" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2241.992967032967" y="1061.718060432208" width="386.8086812017323" height="199.6866804779751" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2241.992967032967" y="1061.718060432208" width="386.8086812017323" height="199.6866804779751" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>177 LOC in Class: AppTheme File: lib/models/app/app_theme.dart - AppTheme - 168 LOC + AppTheme + 177 LOC - - - - + + + + 151 LOC in Method: AppTheme.theme() File: lib/models/app/app_theme.dart - - theme - 151 + + theme + 151 - - - - + + + + 146 LOC File: lib/models/app/constants_layout.dart - constants_layout.dart - 146 LOC + constants_layout.dart + 146 LOC - - - - + + + + 146 LOC in Class: ConstLayout File: lib/models/app/constants_layout.dart - ConstLayout - 146 LOC + ConstLayout + 146 LOC - - - - + + + + 1 LOC in Method: ConstLayout.ConstLayout() File: lib/models/app/constants_layout.dart - - ConstLayout - 1 + + ConstLayout + 1 - - - - - 80 LOC File: lib/models/app/auth_service.dart + + + + + 108 LOC File: lib/models/app/auth_service.dart - auth_service.dart - 80 LOC + auth_service.dart + 108 LOC - - - - - 80 LOC in Class: AuthService + <rect x="2646.8016482346993" y="1061.718060432208" width="263.9874714253554" height="170.693688933928" rx="5.00" ry="5.00" fill="#9eb89a" fill-opacity="0.78"/> + <rect x="2646.8016482346993" y="1061.718060432208" width="263.9874714253554" height="170.693688933928" rx="5.00" ry="5.00" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2646.8016482346993" y="1061.718060432208" width="263.9874714253554" height="170.693688933928" rx="5.00" ry="5.00" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2646.8016482346993" y="1061.718060432208" width="263.9874714253554" height="170.693688933928" rx="5.00" ry="5.00" fill="transparent" pointer-events="all"> + <title>108 LOC in Class: AuthService File: lib/models/app/auth_service.dart - AuthService - 80 LOC + AuthService + 108 LOC - - - - + + + + 2 LOC in Method: AuthService.authStateChanges() File: lib/models/app/auth_service.dart - - authStateChanges - 2 + + authStateChanges + 2 - - - - + + + + 2 LOC in Method: AuthService.currentUser() File: lib/models/app/auth_service.dart - - currentUser - 2 + + currentUser + 2 - - - - + + + + 7 LOC in Method: AuthService.ensureSignedIn() File: lib/models/app/auth_service.dart - - ensureSignedIn - 7 + + ensureSignedIn + 7 + + + + + + + + 2 LOC in Method: AuthService._usesGoogleSignInPluginFlow() + +File: lib/models/app/auth_service.dart + + + _usesGoogleSignInPluginFlow + 2 - - - - + + + + 5 LOC in Method: AuthService._ensureInitialized() File: lib/models/app/auth_service.dart - - _ensureInitialized - 5 + + _ensureInitialized + 5 + + + + + + + + 47 LOC in Method: AuthService._signInWithGooglePlugin() + +File: lib/models/app/auth_service.dart + + + _signInWithGooglePlugin + 47 - - - - - 48 LOC in Method: AuthService.signInWithGoogle() + <rect x="2767.960979855978" y="1085.718060432208" width="65.00642454839415" height="138.693688933928" fill="#2e8b57" fill-opacity="0.72"/> + <rect x="2767.960979855978" y="1085.718060432208" width="65.00642454839415" height="138.693688933928" fill="url(#codeSizeInnerTileDiagonalGradient)"/> + <rect x="2767.960979855978" y="1085.718060432208" width="65.00642454839415" height="138.693688933928" fill="none" stroke="#ffffff" stroke-opacity="0.45" stroke-width="0.8"/> + <rect x="2767.960979855978" y="1085.718060432208" width="65.00642454839415" height="138.693688933928" fill="transparent" pointer-events="all"> + <title>27 LOC in Method: AuthService.signInWithGoogle() File: lib/models/app/auth_service.dart - - signInWithGoogle - 48 + + signInWithGoogle + 27 - - - - + + + + 11 LOC in Method: AuthService.signOut() File: lib/models/app/auth_service.dart - - signOut - 11 + + signOut + 11 - - - - + + + + 54 LOC File: lib/models/app/constants_animation.dart - constants_animation.dart - 54 LOC + constants_animation.dart + 54 LOC - - - - + + + + 54 LOC in Class: ConstAnimation File: lib/models/app/constants_animation.dart - ConstAnimation - 54 LOC + ConstAnimation + 54 LOC - - - - + + + + 1 LOC in Method: ConstAnimation.ConstAnimation() File: lib/models/app/constants_animation.dart - - ConstAnimation - 1 + + ConstAnimation + 1 - - - - + + + + 53 LOC File: lib/models/app/constants_card_value.dart - constants_card_value.dart - 53 LOC + constants_card_value.dart + 53 LOC - - - - + + + + 53 LOC in Class: ConstCardValue File: lib/models/app/constants_card_value.dart - ConstCardValue - 53 LOC + ConstCardValue + 53 LOC - - - - + + + + 1 LOC in Method: ConstCardValue.ConstCardValue() File: lib/models/app/constants_card_value.dart - - ConstCardValue - 1 + + ConstCardValue + 1 - - - - + + + + 10 LOC File: lib/models/app/locale_controller.dart - locale_controller.dart - 10 LOC + locale_controller.dart + 10 LOC - - - - + + + + 10 LOC in Class: LocaleController File: lib/models/app/locale_controller.dart - LocaleController - 10 LOC + LocaleController + 10 LOC - - - - + + + + 1 LOC in Method: LocaleController.LocaleController._() File: lib/models/app/locale_controller.dart - - LocaleController._ - 1 + + LocaleController._ + 1 - - - - + + + + 4 LOC in Method: LocaleController.setLanguageCode() File: lib/models/app/locale_controller.dart - - setLanguageCode - 4 + + setLanguageCode + 4 - - - - + + + + 411 LOC Folder: lib/models/card - card - 411 LOC + card + 411 LOC - - - - + + + + 232 LOC File: lib/models/card/hand_model.dart - hand_model.dart - 232 LOC + hand_model.dart + 232 LOC - - - - + + + + 232 LOC in Class: HandModel File: lib/models/card/hand_model.dart - HandModel - 232 LOC + HandModel + 232 LOC - - - - + + + + 8 LOC in Method: HandModel.HandModel() File: lib/models/card/hand_model.dart - - HandModel - 8 + + HandModel + 8 - - - - + + + + 2 LOC in Method: HandModel.isEmpty() File: lib/models/card/hand_model.dart - - isEmpty - 2 + + isEmpty + 2 - - - - + + + + 2 LOC in Method: HandModel.isNotEmpty() File: lib/models/card/hand_model.dart - - isNotEmpty - 2 + + isNotEmpty + 2 - - - - + + + + 10 LOC in Method: HandModel.==() File: lib/models/card/hand_model.dart - - == - 10 + + == + 10 - - - - + + + + 16 LOC in Method: HandModel._listEquals() File: lib/models/card/hand_model.dart - - _listEquals - 16 + + _listEquals + 16 - - - - + + + + 2 LOC in Method: HandModel.hashCode() File: lib/models/card/hand_model.dart - - hashCode - 2 + + hashCode + 2 - - - - + + + + 7 LOC in Method: HandModel.[]=() File: lib/models/card/hand_model.dart - - []= - 7 + + []= + 7 - - - - + + + + 2 LOC in Method: HandModel.[]() File: lib/models/card/hand_model.dart - - [] - 2 + + [] + 2 - - - - + + + + 8 LOC in Method: HandModel.indexOf() File: lib/models/card/hand_model.dart - - indexOf - 8 + + indexOf + 8 - - - - + + + + 2 LOC in Method: HandModel.first() File: lib/models/card/hand_model.dart - - first - 2 + + first + 2 - - - - + + + + 2 LOC in Method: HandModel.last() File: lib/models/card/hand_model.dart - - last - 2 + + last + 2 - - - - + + + + 6 LOC in Method: HandModel.validIndex() File: lib/models/card/hand_model.dart - - validIndex - 6 + + validIndex + 6 - - - - + + + + 2 LOC in Method: HandModel.length() File: lib/models/card/hand_model.dart - - length - 2 + + length + 2 - - - - + + + + 6 LOC in Method: HandModel.add() File: lib/models/card/hand_model.dart - - add - 6 + + add + 6 - - - - + + + + 6 LOC in Method: HandModel.areAllCardsRevealed() File: lib/models/card/hand_model.dart - - areAllCardsRevealed - 6 + + areAllCardsRevealed + 6 - - - - + + + + 8 LOC in Method: HandModel.revealAllCards() File: lib/models/card/hand_model.dart - - revealAllCards - 8 + + revealAllCards + 8 - - - - + + + + 6 LOC in Method: HandModel.removeAt() File: lib/models/card/hand_model.dart - - removeAt - 6 + + removeAt + 6 - - - - + + + + 4 LOC in Method: HandModel.toString() File: lib/models/card/hand_model.dart - - toString - 4 + + toString + 4 - - - - + + + + 13 LOC in Method: HandModel.getSumOfCardsInHandSkyjo() File: lib/models/card/hand_model.dart - - getSumOfCardsInHandSkyjo - 13 + + getSumOfCardsInHandSkyjo + 13 - - - - + + + + 37 LOC in Method: HandModel.getSumOfCardsForGolf() File: lib/models/card/hand_model.dart - - getSumOfCardsForGolf - 37 + + getSumOfCardsForGolf + 37 - - - - + + + + 37 LOC in Method: HandModel.markIfSameRankForGolf() File: lib/models/card/hand_model.dart - - markIfSameRankForGolf - 37 + + markIfSameRankForGolf + 37 - - - - + + + + 11 LOC in Method: HandModel.revealCards() File: lib/models/card/hand_model.dart - - revealCards - 11 + + revealCards + 11 - - - - + + + + 6 LOC in Method: HandModel.toJson() File: lib/models/card/hand_model.dart - - toJson - 6 + + toJson + 6 - - - - + + + + 97 LOC File: lib/models/card/card_model.dart - card_model.dart - 97 LOC + card_model.dart + 97 LOC - - - - + + + + 97 LOC in Class: CardModel File: lib/models/card/card_model.dart - CardModel - 97 LOC + CardModel + 97 LOC - - - - + + + + 17 LOC in Method: CardModel.CardModel.fromJson() File: lib/models/card/card_model.dart - - CardModel.fromJson - 17 + + CardModel.fromJson + 17 - - - - + + + + 14 LOC in Method: CardModel.CardModel() File: lib/models/card/card_model.dart - - CardModel - 14 + + CardModel + 14 - - - - + + + + 7 LOC in Method: CardModel.toString() File: lib/models/card/card_model.dart - - toString - 7 + + toString + 7 - - - - + + + + 13 LOC in Method: CardModel.toJson() File: lib/models/card/card_model.dart - - toJson - 13 + + toJson + 13 - - - - + + + + 71 LOC File: lib/models/card/card_model_french.dart - card_model_french.dart - 71 LOC + card_model_french.dart + 71 LOC - - - - + + + + 71 LOC in Class: CardModelFrench File: lib/models/card/card_model_french.dart - CardModelFrench - 71 LOC + CardModelFrench + 71 LOC - - - - + + + + 30 LOC in Method: CardModelFrench.getValue() File: lib/models/card/card_model_french.dart - - getValue - 30 + + getValue + 30 - - - - + + + + 11 LOC File: lib/models/card/card_dimensions.dart - card_dimensions.dart - 11 LOC + card_dimensions.dart + 11 LOC - - - - + + + + 11 LOC in Class: CardDimensions File: lib/models/card/card_dimensions.dart - CardDimensions - 11 LOC + CardDimensions + 11 LOC - - - - + + + + 303 LOC Folder: lib/models/player - player - 303 LOC + player + 303 LOC - - - - + + + + 202 LOC File: lib/models/player/player_model.dart - player_model.dart - 202 LOC + player_model.dart + 202 LOC - - - - + + + + 202 LOC in Class: PlayerModel File: lib/models/player/player_model.dart - PlayerModel - 202 LOC + PlayerModel + 202 LOC - - - - + + + + 11 LOC in Method: PlayerModel.PlayerModel() File: lib/models/player/player_model.dart - - PlayerModel - 11 + + PlayerModel + 11 - - - - + + + + 51 LOC in Method: PlayerModel.PlayerModel.fromJson() File: lib/models/player/player_model.dart - - PlayerModel.fromJson - 51 + + PlayerModel.fromJson + 51 - - - - + + + + 15 LOC in Method: PlayerModel.sumOfRevealedCards() File: lib/models/player/player_model.dart - - sumOfRevealedCards - 15 + + sumOfRevealedCards + 15 - - - - + + + + 7 LOC in Method: PlayerModel.clear() File: lib/models/player/player_model.dart - - clear - 7 + + clear + 7 - - - - + + + + 7 LOC in Method: PlayerModel.areAllCardsRevealed() File: lib/models/player/player_model.dart - - areAllCardsRevealed - 7 + + areAllCardsRevealed + 7 - - - - + + + + 7 LOC in Method: PlayerModel.addCardToHand() File: lib/models/player/player_model.dart - - addCardToHand - 7 + + addCardToHand + 7 - - - - + + + + 7 LOC in Method: PlayerModel.revealRandomCardsInHand() File: lib/models/player/player_model.dart - - revealRandomCardsInHand - 7 + + revealRandomCardsInHand + 7 - - - - + + + + 15 LOC in Method: PlayerModel.areAllTheSameRank() File: lib/models/player/player_model.dart - - areAllTheSameRank - 15 + + areAllTheSameRank + 15 - - - - + + + + 15 LOC in Method: PlayerModel.toJson() File: lib/models/player/player_model.dart - - toJson - 15 + + toJson + 15 - - - - + + + + 4 LOC in Method: PlayerModel.toString() File: lib/models/player/player_model.dart - - toString - 4 + + toString + 4 - - - - + + + + 15 LOC in Method: PlayerModel.==() File: lib/models/player/player_model.dart - - == - 15 + + == + 15 - - - - + + + + 2 LOC in Method: PlayerModel.hashCode() File: lib/models/player/player_model.dart - - hashCode - 2 + + hashCode + 2 - - - - + + + + 101 LOC File: lib/models/player/player_status.dart - player_status.dart - 101 LOC + player_status.dart + 101 LOC - - - - + + + + 78 LOC in Class: PlayerStatus File: lib/models/player/player_status.dart - PlayerStatus - 78 LOC + PlayerStatus + 78 LOC - - - - + + + + 12 LOC in Method: PlayerStatus.PlayerStatus() File: lib/models/player/player_status.dart - - PlayerStatus - 12 + + PlayerStatus + 12 - - - - + + + + 17 LOC in Method: PlayerStatus.PlayerStatus.fromJson() File: lib/models/player/player_status.dart - - PlayerStatus.fromJson - 17 + + PlayerStatus.fromJson + 17 - - - - + + + + 19 LOC in Method: PlayerStatus.keyFromLegacyPhrase() File: lib/models/player/player_status.dart - - keyFromLegacyPhrase - 19 + + keyFromLegacyPhrase + 19 - - - - + + + + 10 LOC in Method: PlayerStatus.toJson() File: lib/models/player/player_status.dart - - toJson - 10 + + toJson + 10 - - - - + + + + 23 LOC in Class: <...> File: lib/models/player/player_status.dart - <...> - 23 LOC + <...> + 23 LOC - - - - + + + + 23 LOC in Function: findMatchingPlayerStatusInstance() File: lib/models/player/player_status.dart - - findMatchingPlayerStatusInstance - 23 + + findMatchingPlayerStatusInstance + 23 @@ -6598,175 +6832,175 @@ File: lib/models/player/player_status.dart - - - - + + + + 76 LOC Folder: lib/utils - utils - 76 LOC + utils + 76 LOC - - - - + + + + 62 LOC File: lib/utils/logger.dart - logger.dart - 62 LOC + logger.dart + 62 LOC - - - - + + + + 55 LOC in Class: AppLogger File: lib/utils/logger.dart - AppLogger - 55 LOC + AppLogger + 55 LOC - - - - + + + + 7 LOC in Class: _SilentPrinter File: lib/utils/logger.dart - _SilentPrinter - 7 LOC + _SilentPrinter + 7 LOC - - - - + + + + 6 LOC File: lib/utils/browser_utils_stub.dart - browser_utils_stub.dart - 6 LOC + browser_utils_stub.dart + 6 LOC - - - - + + + + 6 LOC in Class: <...> File: lib/utils/browser_utils_stub.dart - <...> - 6 LOC + <...> + 6 LOC - - - - + + + + 6 LOC File: lib/utils/browser_utils_web.dart - browser_utils_web.dart - 6 LOC + browser_utils_web.dart + 6 LOC - - - - + + + + 6 LOC in Class: <...> File: lib/utils/browser_utils_web.dart - <...> - 6 LOC + <...> + 6 LOC - - - - + + + + 2 LOC File: lib/utils/browser_utils.dart - browser_utils.dart - 2 LOC + browser_utils.dart + 2 LOC - - - - + + + + 63 LOC File: lib/main.dart - main.dart - 63 LOC + main.dart + 63 LOC - - - - + + + + 40 LOC in Class: MyApp File: lib/main.dart - MyApp - 40 LOC + MyApp + 40 LOC - - - - + + + + 4 LOC in Method: MyApp.MyApp() File: lib/main.dart - - MyApp - 4 + + MyApp + 4 - - - - + + + + 31 LOC in Method: MyApp.build() File: lib/main.dart - - build - 31 + + build + 31 - - - - + + + + 23 LOC in Class: <...> File: lib/main.dart - <...> - 23 LOC + <...> + 23 LOC - - - - + + + + 23 LOC in Function: main() File: lib/main.dart - - main - 23 + + main + 23 diff --git a/fcheck_packages.svg b/fcheck_packages.svg new file mode 100644 index 0000000..ab8b1dc --- /dev/null +++ b/fcheck_packages.svg @@ -0,0 +1,2355 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +cards v1.11.7 +dependencies (18 items) + +dev_dependencies (5 items) + +Derived packages (63 items) + +Transitive packages (34 items) + + + + mockito -> analyzer v13.0.0 + + + + mockito -> build v4.0.6 + + + + package_info_plus -> clock v1.1.2 + + + + share_plus -> cross_file v0.3.5+2 + + + + mockito -> code_builder v4.11.1 + + + + logger -> clock v1.1.2 + + + + mockito -> collection v1.19.1 + + + + intl -> clock v1.1.2 + + + + share_plus -> ffi v2.2.0 + + + + mockito -> dart_style v3.1.9 + + + + share_plus -> file v7.0.1 + + + + package_info_plus -> ffi v2.2.0 + + + + flutter -> characters v1.4.1 + + + + the_splash -> flutter_native_splash v2.4.8 + + + + flutter -> collection v1.19.1 + + + + share_plus -> flutter_web_plugins v0.0.0 + + + + package_info_plus -> flutter_web_plugins v0.0.0 + + + + firebase_database -> firebase_core_platform_interface v7.0.1 + + + + package_info_plus -> http v1.6.0 + + + + firebase_auth -> firebase_auth_platform_interface v9.0.1 + + + + firebase_core -> firebase_core_platform_interface v7.0.1 + + + + google_sign_in -> google_sign_in_android v7.2.11 + + + + firebase_auth -> firebase_auth_web v6.2.1 + + + + firebase_database -> firebase_database_platform_interface v0.4.0+1 + + + + firebase_core -> firebase_core_web v3.7.0 + + + + google_sign_in -> google_sign_in_ios v6.3.0 + + + + firebase_auth -> firebase_core_platform_interface v7.0.1 + + + + firebase_database -> firebase_database_web v0.2.7+8 + + + + google_sign_in -> google_sign_in_platform_interface v3.1.0 + + + + google_sign_in -> google_sign_in_web v1.1.3 + + + + share_plus -> meta v1.18.0 + + + + mockito -> matcher v0.12.19 + + + + share_plus -> mime v2.0.0 + + + + package_info_plus -> meta v1.18.0 + + + + mockito -> meta v1.18.0 + + + + package_info_plus -> package_info_plus_platform_interface v4.1.0 + + + + shared_preferences -> shared_preferences_android v2.4.23 + + + + share_plus -> share_plus_platform_interface v7.1.0 + + + + logger -> meta v1.18.0 + + + + package_info_plus -> path v1.9.1 + + + + shared_preferences -> shared_preferences_foundation v2.5.6 + + + + flutter_markdown -> markdown v7.3.1 + + + + intl -> meta v1.18.0 + + + + shared_preferences -> shared_preferences_linux v2.4.1 + + + + mockito -> path v1.9.1 + + + + shared_preferences -> shared_preferences_platform_interface v2.4.2 + + + + shared_preferences -> shared_preferences_web v2.4.3 + + + + flutter_markdown -> meta v1.18.0 + + + + intl -> path v1.9.1 + + + + shared_preferences -> shared_preferences_windows v2.4.1 + + + + flutter -> material_color_utilities v0.13.0 + + + + flutter -> meta v1.18.0 + + + + flutter_markdown -> path v1.9.1 + + + + url_launcher -> url_launcher_android v6.3.30 + + + + url_launcher -> url_launcher_ios v6.4.1 + + + + flutter_localizations -> path v1.9.1 + + + + the_splash -> universal_io v2.3.1 + + + + url_launcher -> url_launcher_linux v3.2.2 + + + + firebase_core -> meta v1.18.0 + + + + url_launcher -> url_launcher_macos v3.2.5 + + + + mockito -> source_gen v4.2.3 + + + + firebase_auth -> meta v1.18.0 + + + + url_launcher -> url_launcher_platform_interface v2.3.2 + + + + url_launcher -> url_launcher_web v2.4.3 + + + + url_launcher -> url_launcher_windows v3.1.5 + + + + mockito -> test_api v0.7.11 + + + + share_plus -> url_launcher_linux v3.2.2 + + + + share_plus -> url_launcher_platform_interface v2.3.2 + + + + flutter -> sky_engine v0.0.0 + + + + share_plus -> url_launcher_web v2.4.3 + + + + share_plus -> url_launcher_windows v3.1.5 + + + + the_splash -> yaml v3.1.3 + + + + share_plus -> win32 v6.3.0 + + + + package_info_plus -> win32 v6.3.0 + + + + flutter -> vector_math v2.2.0 + + + + flutter_launcher_icons -> args v2.7.0 + + + + mocktail -> collection v1.19.1 + + + + flutter_test -> clock v1.1.2 + + + + flutter_launcher_icons -> checked_yaml v2.0.4 + + + + flutter_launcher_icons -> cli_util v0.4.2 + + + + flutter_test -> collection v1.19.1 + + + + flutter_test -> fake_async v1.3.3 + + + + integration_test -> flutter_driver v0.0.0 + + + + flutter_test -> leak_tracker_flutter_testing v3.0.10 + + + + mocktail -> matcher v0.12.19 + + + + flutter_launcher_icons -> image v4.8.0 + + + + flutter_launcher_icons -> json_annotation v4.12.0 + + + + flutter_lints -> lints v6.1.0 + + + + flutter_test -> matcher v0.12.19 + + + + flutter_test -> meta v1.18.0 + + + + integration_test -> path v1.9.1 + + + + flutter_test -> path v1.9.1 + + + + flutter_launcher_icons -> path v1.9.1 + + + + mocktail -> test_api v0.7.11 + + + + flutter_test -> stack_trace v1.12.1 + + + + flutter_test -> stream_channel v2.1.4 + + + + flutter_test -> test_api v0.7.11 + + + + integration_test -> vm_service v15.2.0 + + + + flutter_test -> vector_math v2.2.0 + + + + flutter_launcher_icons -> yaml v3.1.3 + + + + win32 -> ffi_leak_tracker v0.1.2 + + + + test_api -> async v2.13.1 + + + + stream_channel -> async v2.13.1 + + + + test_api -> boolean_selector v2.1.2 + + + + source_gen -> async v2.13.1 + + + + yaml -> source_span v1.10.2 + + + + yaml -> string_scanner v1.4.1 + + + + source_gen -> glob v2.1.3 + + + + url_launcher_platform_interface -> plugin_platform_interface v2.1.8 + + + + matcher -> async v2.13.1 + + + + image -> archive v4.0.9 + + + + test_api -> source_span v1.10.2 + + + + test_api -> string_scanner v1.4.1 + + + + http -> async v2.13.1 + + + + shared_preferences_windows -> path_provider_platform_interface v2.1.2 + + + + test_api -> term_glyph v1.2.2 + + + + shared_preferences_windows -> path_provider_windows v2.3.0 + + + + source_gen -> pub_semver v2.2.0 + + + + universal_io -> typed_data v1.4.0 + + + + shared_preferences_linux -> path_provider_linux v2.2.1 + + + + source_gen -> source_span v1.10.2 + + + + shared_preferences_linux -> path_provider_platform_interface v2.1.2 + + + + flutter_native_splash -> ansicolor v2.0.3 + + + + share_plus_platform_interface -> path_provider v2.1.5 + + + + shared_preferences_platform_interface -> plugin_platform_interface v2.1.8 + + + + firebase_database_platform_interface -> _flutterfire_internals v1.3.71 + + + + share_plus_platform_interface -> plugin_platform_interface v2.1.8 + + + + leak_tracker_flutter_testing -> leak_tracker v11.0.2 + + + + leak_tracker_flutter_testing -> leak_tracker_testing v3.0.2 + + + + firebase_auth_platform_interface -> _flutterfire_internals v1.3.71 + + + + google_sign_in_web -> google_identity_services_web v0.3.3+1 + + + + package_info_plus_platform_interface -> plugin_platform_interface v2.1.8 + + + + http -> http_parser v4.1.2 + + + + flutter_driver -> fuchsia_remote_debug_protocol v0.0.0 + + + + share_plus_platform_interface -> uuid v4.5.3 + + + + flutter_native_splash -> html v0.15.6 + + + + matcher -> term_glyph v1.2.2 + + + + code_builder -> built_collection v5.1.1 + + + + google_sign_in_platform_interface -> plugin_platform_interface v2.1.8 + + + + analyzer -> _fe_analyzer_shared v100.0.0 + + + + code_builder -> built_value v8.12.6 + + + + firebase_auth_web -> http_parser v4.1.2 + + + + image -> xml v6.6.1 + + + + firebase_database_platform_interface -> plugin_platform_interface v2.1.8 + + + + build -> crypto v3.0.7 + + + + analyzer -> convert v3.1.2 + + + + firebase_core_platform_interface -> plugin_platform_interface v2.1.8 + + + + analyzer -> crypto v3.0.7 + + + + dart_style -> package_config v2.2.0 + + + + build -> glob v2.1.3 + + + + firebase_auth_platform_interface -> plugin_platform_interface v2.1.8 + + + + flutter_driver -> webdriver v3.1.0 + + + + analyzer -> glob v2.1.3 + + + + flutter_native_splash -> xml v6.6.1 + + + + dart_style -> pub_semver v2.2.0 + + + + build -> logging v1.3.0 + + + + dart_style -> source_span v1.10.2 + + + + build -> package_config v2.2.0 + + + + analyzer -> package_config v2.2.0 + + + + checked_yaml -> source_span v1.10.2 + + + + analyzer -> pub_semver v2.2.0 + + + + analyzer -> source_span v1.10.2 + + + + analyzer -> watcher v1.2.1 + + + +Flutter >=3.13.0 +animate_do +v5.1.0 + + + +Flutter >=3.16.0 +AndroidA +iOSI +macOSM +WindowsW +BrowserB +firebase_auth +v6.5.1 + + + + 41. firebase_auth_platform_interface +2. firebase_auth_web +3. firebase_core_platform_interface +4. meta + +Flutter >=3.27.0 +AndroidA +iOSI +macOSM +WindowsW +BrowserB +firebase_core +v4.9.0 + + + + 31. firebase_core_platform_interface +2. firebase_core_web +3. meta + +Flutter >=3.27.0 +AndroidA +iOSI +macOSM +WindowsW +BrowserB +firebase_database +v12.4.1 + + + + 31. firebase_core_platform_interface +2. firebase_database_platform_interface +3. firebase_database_web + +Dart ^3.10.0-0 +Dart SDK ^3.10.0-0Dart +flutter +v0.0.0 + + + + 61. characters +2. collection +3. material_color_utilities +4. meta +5. sky_engine +6. vector_math + +flutter_localizations +v0.0.0 + + + + 11. path + +Flutter >=3.22.0 +flutter_markdown +v0.7.7+1 + + + + 31. markdown +2. meta +3. path + +Flutter >=3.29.0 +AndroidA +iOSI +macOSM +BrowserB +google_sign_in +v7.2.0 + + + + 41. google_sign_in_android +2. google_sign_in_ios +3. google_sign_in_platform_interface +4. google_sign_in_web + +Dart ^3.3.0 +Dart SDK ^3.3.0Dart +intl +v0.20.2 + + + + 31. clock +2. meta +3. path + +AndroidA +iOSI +LinuxL +macOSM +WindowsW +BrowserB +logger +v2.7.0 + + + + 21. clock +2. meta + +Dart ^3.7.0 +Dart SDK ^3.7.0Dart +mockito +v5.7.0 + + + + 101. analyzer +2. build +3. code_builder +4. collection +5. dart_style +6. matcher +7. meta +8. path +9. source_gen +10. test_api + +Flutter >=3.38.1 +AndroidA +iOSI +LinuxL +macOSM +WindowsW +BrowserB +package_info_plus +v10.1.0 + + + + 81. clock +2. ffi +3. flutter_web_plugins +4. http +5. meta +6. package_info_plus_platform_interface +7. path +8. win32 + +Flutter >=3.38.1 +AndroidA +iOSI +LinuxL +macOSM +WindowsW +BrowserB +share_plus +v13.1.0 + + + + 121. cross_file +2. ffi +3. file +4. flutter_web_plugins +5. meta +6. mime +7. share_plus_platform_interface +8. url_launcher_linux +9. url_launcher_platform_interface +10. url_launcher_web +11. url_launcher_windows +12. win32 + +Flutter >=3.35.0 +AndroidA +iOSI +LinuxL +macOSM +WindowsW +BrowserB +shared_preferences +v2.5.5 + + + + 61. shared_preferences_android +2. shared_preferences_foundation +3. shared_preferences_linux +4. shared_preferences_platform_interface +5. shared_preferences_web +6. shared_preferences_windows + +Flutter >=2.5.0 +the_splash +v0.3.1 + + + + 31. flutter_native_splash +2. universal_io +3. yaml + +Dart >=2.12.0 <4.0.0 +Dart SDK >=2.12.0 <4.0.0Dart +universal_platform +v1.1.0 + + + +Flutter >=3.27.0 +AndroidA +iOSI +LinuxL +macOSM +WindowsW +BrowserB +url_launcher +v6.3.2 + + + + 71. url_launcher_android +2. url_launcher_ios +3. url_launcher_linux +4. url_launcher_macos +5. url_launcher_platform_interface +6. url_launcher_web +7. url_launcher_windows + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +web +v1.1.1 + + + +Dart >=3.0.0 <4.0.0 +Dart SDK >=3.0.0 <4.0.0Dart +flutter_launcher_icons +v0.14.4 + + + + 71. args +2. checked_yaml +3. cli_util +4. image +5. json_annotation +6. path +7. yaml + +Dart ^3.8.0 +Dart SDK ^3.8.0Dart +flutter_lints +v6.0.0 + + + + 11. lints + +flutter_test +v0.0.0 + + + + 111. clock +2. collection +3. fake_async +4. leak_tracker_flutter_testing +5. matcher +6. meta +7. path +8. stack_trace +9. stream_channel +10. test_api +11. vector_math + +AndroidA +iOSI +integration_test +v0.0.0 + + + + 31. flutter_driver +2. path +3. vm_service + +Dart >=2.12.0 <4.0.0 +Dart SDK >=2.12.0 <4.0.0Dart +mocktail +v1.0.5 + + + + 31. collection +2. matcher +3. test_api + +Dart ^3.9.0 +Dart SDK ^3.9.0Dart +analyzer +^13.0.0 + + + + 11. mockito + + 81. _fe_analyzer_shared +2. convert +3. crypto +4. glob +5. package_config +6. pub_semver +7. source_span +8. watcher + +Dart ^3.3.0 +Dart SDK ^3.3.0Dart +args +^2.7.0 + + + + 11. flutter_launcher_icons + +Dart ^3.7.0 +Dart SDK ^3.7.0Dart +build +^4.0.6 + + + + 11. mockito + + 41. crypto +2. glob +3. logging +4. package_config + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +characters +^1.4.1 + + + + 11. flutter + +Dart ^3.8.0 +Dart SDK ^3.8.0Dart +checked_yaml +^2.0.4 + + + + 11. flutter_launcher_icons + + 11. source_span + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +cli_util +^0.4.2 + + + + 11. flutter_launcher_icons + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +clock +^1.1.2 + + + + 31. intl +2. logger +3. package_info_plus + + 11. flutter_test + +Dart ^3.7.0 +Dart SDK ^3.7.0Dart +code_builder +^4.11.1 + + + + 11. mockito + + 21. built_collection +2. built_value + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +collection +^1.19.1 + + + + 21. flutter +2. mockito + + 21. flutter_test +2. mocktail + +Dart ^3.8.0 +Dart SDK ^3.8.0Dart +cross_file +^0.3.5+2 + + + + 11. share_plus + +Dart ^3.10.0 +Dart SDK ^3.10.0Dart +dart_style +^3.1.9 + + + + 11. mockito + + 31. package_config +2. pub_semver +3. source_span + +Dart ^3.3.0 +Dart SDK ^3.3.0Dart +fake_async +^1.3.3 + + + + 11. flutter_test + +Dart >=3.7.0 <4.0.0 +Dart SDK >=3.7.0 <4.0.0Dart +ffi +^2.2.0 + + + + 21. package_info_plus +2. share_plus + +Dart ^3.0.0 +Dart SDK ^3.0.0Dart +file +^7.0.1 + + + + 11. share_plus + +Flutter >=3.16.0 +firebase_auth_platform_interface +^9.0.1 + + + + 11. firebase_auth + + 21. _flutterfire_internals +2. plugin_platform_interface + +Flutter >=3.22.0 +BrowserB +firebase_auth_web +^6.2.1 + + + + 11. firebase_auth + + 11. http_parser + +Flutter >=3.27.0 +firebase_core_platform_interface +^7.0.1 + + + + 31. firebase_auth +2. firebase_core +3. firebase_database + + 11. plugin_platform_interface + +Flutter >=3.22.0 +BrowserB +firebase_core_web +^3.7.0 + + + + 11. firebase_core + +Flutter >=3.27.0 +firebase_database_platform_interface +^0.4.0+1 + + + + 11. firebase_database + + 21. _flutterfire_internals +2. plugin_platform_interface + +Flutter >=3.22.0 +BrowserB +firebase_database_web +^0.2.7+8 + + + + 11. firebase_database + +flutter_driver +^0.0.0 + + + + 11. integration_test + + 21. fuchsia_remote_debug_protocol +2. webdriver + +Flutter >=2.5.0 +AndroidA +iOSI +BrowserB +flutter_native_splash +^2.4.8 + + + + 11. the_splash + + 31. ansicolor +2. html +3. xml + +flutter_web_plugins +^0.0.0 + + + + 21. package_info_plus +2. share_plus + +Flutter >=3.35.0 +AndroidA +google_sign_in_android +^7.2.11 + + + + 11. google_sign_in + +Flutter >=3.38.0 +iOSI +macOSM +google_sign_in_ios +^6.3.0 + + + + 11. google_sign_in + +Flutter >=3.29.0 +google_sign_in_platform_interface +^3.1.0 + + + + 11. google_sign_in + + 11. plugin_platform_interface + +Flutter >=3.35.0 +BrowserB +google_sign_in_web +^1.1.3 + + + + 11. google_sign_in + + 11. google_identity_services_web + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +http +^1.6.0 + + + + 11. package_info_plus + + 21. async +2. http_parser + +Dart >=3.0.0 <4.0.0 +Dart SDK >=3.0.0 <4.0.0Dart +image +^4.8.0 + + + + 11. flutter_launcher_icons + + 21. archive +2. xml + +Dart ^3.9.0 +Dart SDK ^3.9.0Dart +json_annotation +^4.12.0 + + + + 11. flutter_launcher_icons + +Flutter >=3.18.0-18.0.pre.54 +leak_tracker_flutter_testing +^3.0.10 + + + + 11. flutter_test + + 21. leak_tracker +2. leak_tracker_testing + +Dart ^3.8.0 +Dart SDK ^3.8.0Dart +lints +^6.1.0 + + + + 11. flutter_lints + +Dart ^3.9.0 +Dart SDK ^3.9.0Dart +markdown +^7.3.1 + + + + 11. flutter_markdown + +Dart ^3.7.0 +Dart SDK ^3.7.0Dart +matcher +^0.12.19 + + + + 11. mockito + + 21. flutter_test +2. mocktail + + 21. async +2. term_glyph + +Dart ^3.5.0 +Dart SDK ^3.5.0Dart +material_color_utilities +^0.13.0 + + + + 11. flutter + +Dart ^3.5.0 +Dart SDK ^3.5.0Dart +meta +^1.18.0 + + + + 91. firebase_auth +2. firebase_core +3. flutter +4. flutter_markdown +5. intl +6. logger +7. mockito +8. package_info_plus +9. share_plus + + 11. flutter_test + +Dart ^3.2.0 +Dart SDK ^3.2.0Dart +mime +^2.0.0 + + + + 11. share_plus + +Flutter >=3.38.1 +package_info_plus_platform_interface +^4.1.0 + + + + 11. package_info_plus + + 11. plugin_platform_interface + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +path +^1.9.1 + + + + 51. flutter_localizations +2. flutter_markdown +3. intl +4. mockito +5. package_info_plus + + 31. flutter_launcher_icons +2. flutter_test +3. integration_test + +Flutter >=3.38.1 +share_plus_platform_interface +^7.1.0 + + + + 11. share_plus + + 31. path_provider +2. plugin_platform_interface +3. uuid + +Flutter >=3.35.0 +AndroidA +shared_preferences_android +^2.4.23 + + + + 11. shared_preferences + +Flutter >=3.35.0 +iOSI +macOSM +shared_preferences_foundation +^2.5.6 + + + + 11. shared_preferences + +Flutter >=3.19.0 +LinuxL +shared_preferences_linux +^2.4.1 + + + + 11. shared_preferences + + 21. path_provider_linux +2. path_provider_platform_interface + +Flutter >=3.35.0 +shared_preferences_platform_interface +^2.4.2 + + + + 11. shared_preferences + + 11. plugin_platform_interface + +Flutter >=3.22.0 +BrowserB +shared_preferences_web +^2.4.3 + + + + 11. shared_preferences + +Flutter >=3.19.0 +WindowsW +shared_preferences_windows +^2.4.1 + + + + 11. shared_preferences + + 21. path_provider_platform_interface +2. path_provider_windows + +Dart ^3.10.0-0 +Dart SDK ^3.10.0-0Dart +sky_engine +^0.0.0 + + + + 11. flutter + +Dart ^3.9.0 +Dart SDK ^3.9.0Dart +source_gen +^4.2.3 + + + + 11. mockito + + 41. async +2. glob +3. pub_semver +4. source_span + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +stack_trace +^1.12.1 + + + + 11. flutter_test + +Dart ^3.3.0 +Dart SDK ^3.3.0Dart +stream_channel +^2.1.4 + + + + 11. flutter_test + + 11. async + +Dart ^3.7.0 +Dart SDK ^3.7.0Dart +test_api +^0.7.11 + + + + 11. mockito + + 21. flutter_test +2. mocktail + + 51. async +2. boolean_selector +3. source_span +4. string_scanner +5. term_glyph + +Dart ^3.6.0 +Dart SDK ^3.6.0Dart +universal_io +^2.3.1 + + + + 11. the_splash + + 11. typed_data + +Flutter >=3.38.0 +AndroidA +url_launcher_android +^6.3.30 + + + + 11. url_launcher + +Flutter >=3.38.0 +iOSI +url_launcher_ios +^6.4.1 + + + + 11. url_launcher + +Flutter >=3.32.0 +LinuxL +url_launcher_linux +^3.2.2 + + + + 21. share_plus +2. url_launcher + +Flutter >=3.35.0 +macOSM +url_launcher_macos +^3.2.5 + + + + 11. url_launcher + +Flutter >=3.13.0 +url_launcher_platform_interface +^2.3.2 + + + + 21. share_plus +2. url_launcher + + 11. plugin_platform_interface + +Flutter >=3.38.0 +BrowserB +url_launcher_web +^2.4.3 + + + + 21. share_plus +2. url_launcher + +Flutter >=3.32.0 +WindowsW +url_launcher_windows +^3.1.5 + + + + 21. share_plus +2. url_launcher + +Dart ^3.1.0 +Dart SDK ^3.1.0Dart +vector_math +^2.2.0 + + + + 11. flutter + + 11. flutter_test + +Dart ^3.5.0 +Dart SDK ^3.5.0Dart +vm_service +^15.2.0 + + + + 11. integration_test + +WindowsW +win32 +^6.3.0 + + + + 21. package_info_plus +2. share_plus + + 11. ffi_leak_tracker + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +yaml +^3.1.3 + + + + 11. the_splash + + 11. flutter_launcher_icons + + 21. source_span +2. string_scanner + +Dart ^3.11.0 +Dart SDK ^3.11.0Dart +_fe_analyzer_shared +^100.0.0 + + + + 11. analyzer + +Flutter >=3.27.0 +_flutterfire_internals +^1.3.71 + + + + 21. firebase_auth_platform_interface +2. firebase_database_platform_interface + +Dart >=3.0.0 <4.0.0 +Dart SDK >=3.0.0 <4.0.0Dart +ansicolor +^2.0.3 + + + + 11. flutter_native_splash + +Dart >=3.0.0 <4.0.0 +Dart SDK >=3.0.0 <4.0.0Dart +archive +^4.0.9 + + + + 11. image + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +async +^2.13.1 + + + + 51. http +2. matcher +3. source_gen +4. stream_channel +5. test_api + +Dart ^3.1.0 +Dart SDK ^3.1.0Dart +boolean_selector +^2.1.2 + + + + 11. test_api + +Dart >=2.12.0-0 <3.0.0 +Dart SDK >=2.12.0-0 <3.0.0Dart +built_collection +^5.1.1 + + + + 11. code_builder + +Dart >=3.0.0 <4.0.0 +Dart SDK >=3.0.0 <4.0.0Dart +built_value +^8.12.6 + + + + 11. code_builder + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +convert +^3.1.2 + + + + 11. analyzer + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +crypto +^3.0.7 + + + + 21. analyzer +2. build + +Dart ^3.10.0 +Dart SDK ^3.10.0Dart +ffi_leak_tracker +^0.1.2 + + + + 11. win32 + +Dart ^3.10.0-0 +Dart SDK ^3.10.0-0Dart +fuchsia_remote_debug_protocol +^0.0.0 + + + + 11. flutter_driver + +Dart ^3.3.0 +Dart SDK ^3.3.0Dart +glob +^2.1.3 + + + + 31. analyzer +2. build +3. source_gen + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +google_identity_services_web +^0.3.3+1 + + + + 11. google_sign_in_web + +Dart ^3.2.0 +Dart SDK ^3.2.0Dart +html +^0.15.6 + + + + 11. flutter_native_splash + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +http_parser +^4.1.2 + + + + 21. firebase_auth_web +2. http + +Dart ^3.2.0 +Dart SDK ^3.2.0Dart +leak_tracker +^11.0.2 + + + + 11. leak_tracker_flutter_testing + +Dart ^3.2.0 +Dart SDK ^3.2.0Dart +leak_tracker_testing +^3.0.2 + + + + 11. leak_tracker_flutter_testing + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +logging +^1.3.0 + + + + 11. build + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +package_config +^2.2.0 + + + + 31. analyzer +2. build +3. dart_style + +Flutter >=3.22.0 +AndroidA +iOSI +LinuxL +macOSM +WindowsW +path_provider +^2.1.5 + + + + 11. share_plus_platform_interface + +Flutter >=3.7.0 +LinuxL +path_provider_linux +^2.2.1 + + + + 11. shared_preferences_linux + +Flutter >=3.10.0 +path_provider_platform_interface +^2.1.2 + + + + 21. shared_preferences_linux +2. shared_preferences_windows + +Flutter >=3.16.0 +WindowsW +path_provider_windows +^2.3.0 + + + + 11. shared_preferences_windows + +Dart >=3.0.0 <4.0.0 +Dart SDK >=3.0.0 <4.0.0Dart +plugin_platform_interface +^2.1.8 + + + + 81. firebase_auth_platform_interface +2. firebase_core_platform_interface +3. firebase_database_platform_interface +4. google_sign_in_platform_interface +5. package_info_plus_platform_interface +6. share_plus_platform_interface +7. shared_preferences_platform_interface +8. url_launcher_platform_interface + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +pub_semver +^2.2.0 + + + + 31. analyzer +2. dart_style +3. source_gen + +Dart ^3.1.0 +Dart SDK ^3.1.0Dart +source_span +^1.10.2 + + + + 61. analyzer +2. checked_yaml +3. dart_style +4. source_gen +5. test_api +6. yaml + +Dart ^3.1.0 +Dart SDK ^3.1.0Dart +string_scanner +^1.4.1 + + + + 21. test_api +2. yaml + +Dart ^3.1.0 +Dart SDK ^3.1.0Dart +term_glyph +^1.2.2 + + + + 21. matcher +2. test_api + +Dart ^3.5.0 +Dart SDK ^3.5.0Dart +typed_data +^1.4.0 + + + + 11. universal_io + +Dart >=3.0.0 <4.0.0 +Dart SDK >=3.0.0 <4.0.0Dart +uuid +^4.5.3 + + + + 11. share_plus_platform_interface + +Dart ^3.4.0 +Dart SDK ^3.4.0Dart +watcher +^1.2.1 + + + + 11. analyzer + +Dart ^3.1.0 +Dart SDK ^3.1.0Dart +webdriver +^3.1.0 + + + + 11. flutter_driver + +Dart ^3.8.0 +Dart SDK ^3.8.0Dart +xml +^6.6.1 + + + + 21. flutter_native_splash +2. image diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig index ec97fc6..592ceee 100644 --- a/ios/Flutter/Debug.xcconfig +++ b/ios/Flutter/Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig index c4855bf..592ceee 100644 --- a/ios/Flutter/Release.xcconfig +++ b/ios/Flutter/Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "Generated.xcconfig" diff --git a/ios/Podfile b/ios/Podfile deleted file mode 100644 index 4871635..0000000 --- a/ios/Podfile +++ /dev/null @@ -1,44 +0,0 @@ -# Uncomment this line to define a global platform for your project -platform :ios, '15.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/ios/Podfile.lock b/ios/Podfile.lock deleted file mode 100644 index a7ed56c..0000000 --- a/ios/Podfile.lock +++ /dev/null @@ -1,208 +0,0 @@ -PODS: - - AppAuth (2.0.0): - - AppAuth/Core (= 2.0.0) - - AppAuth/ExternalUserAgent (= 2.0.0) - - AppAuth/Core (2.0.0) - - AppAuth/ExternalUserAgent (2.0.0): - - AppAuth/Core - - AppCheckCore (11.2.0): - - GoogleUtilities/Environment (~> 8.0) - - GoogleUtilities/UserDefaults (~> 8.0) - - PromisesObjC (~> 2.4) - - Firebase/Auth (12.9.0): - - Firebase/CoreOnly - - FirebaseAuth (~> 12.9.0) - - Firebase/CoreOnly (12.9.0): - - FirebaseCore (~> 12.9.0) - - Firebase/Database (12.9.0): - - Firebase/CoreOnly - - FirebaseDatabase (~> 12.9.0) - - firebase_auth (6.3.0): - - Firebase/Auth (= 12.9.0) - - firebase_core - - Flutter - - firebase_core (4.6.0): - - Firebase/CoreOnly (= 12.9.0) - - Flutter - - firebase_database (12.2.0): - - Firebase/Database (= 12.9.0) - - firebase_core - - Flutter - - FirebaseAppCheckInterop (12.9.0) - - FirebaseAuth (12.9.0): - - FirebaseAppCheckInterop (~> 12.9.0) - - FirebaseAuthInterop (~> 12.9.0) - - FirebaseCore (~> 12.9.0) - - FirebaseCoreExtension (~> 12.9.0) - - GoogleUtilities/AppDelegateSwizzler (~> 8.1) - - GoogleUtilities/Environment (~> 8.1) - - GTMSessionFetcher/Core (< 6.0, >= 3.4) - - RecaptchaInterop (~> 101.0) - - FirebaseAuthInterop (12.9.0) - - FirebaseCore (12.9.0): - - FirebaseCoreInternal (~> 12.9.0) - - GoogleUtilities/Environment (~> 8.1) - - GoogleUtilities/Logger (~> 8.1) - - FirebaseCoreExtension (12.9.0): - - FirebaseCore (~> 12.9.0) - - FirebaseCoreInternal (12.9.0): - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - FirebaseDatabase (12.9.0): - - FirebaseAppCheckInterop (~> 12.9.0) - - FirebaseCore (~> 12.9.0) - - FirebaseSharedSwift (~> 12.9.0) - - GoogleUtilities/UserDefaults (~> 8.1) - - leveldb-library (~> 1.22) - - FirebaseSharedSwift (12.9.0) - - Flutter (1.0.0) - - flutter_native_splash (2.4.3): - - Flutter - - google_sign_in_ios (0.0.1): - - Flutter - - FlutterMacOS - - GoogleSignIn (~> 9.0) - - GTMSessionFetcher (>= 3.4.0) - - GoogleSignIn (9.1.0): - - AppAuth (~> 2.0) - - AppCheckCore (~> 11.0) - - GTMAppAuth (~> 5.0) - - GTMSessionFetcher/Core (~> 3.3) - - GoogleUtilities/AppDelegateSwizzler (8.1.0): - - GoogleUtilities/Environment - - GoogleUtilities/Logger - - GoogleUtilities/Network - - GoogleUtilities/Privacy - - GoogleUtilities/Environment (8.1.0): - - GoogleUtilities/Privacy - - GoogleUtilities/Logger (8.1.0): - - GoogleUtilities/Environment - - GoogleUtilities/Privacy - - GoogleUtilities/Network (8.1.0): - - GoogleUtilities/Logger - - "GoogleUtilities/NSData+zlib" - - GoogleUtilities/Privacy - - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (8.1.0)": - - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (8.1.0) - - GoogleUtilities/Reachability (8.1.0): - - GoogleUtilities/Logger - - GoogleUtilities/Privacy - - GoogleUtilities/UserDefaults (8.1.0): - - GoogleUtilities/Logger - - GoogleUtilities/Privacy - - GTMAppAuth (5.0.0): - - AppAuth/Core (~> 2.0) - - GTMSessionFetcher/Core (< 4.0, >= 3.3) - - GTMSessionFetcher (3.5.0): - - GTMSessionFetcher/Full (= 3.5.0) - - GTMSessionFetcher/Core (3.5.0) - - GTMSessionFetcher/Full (3.5.0): - - GTMSessionFetcher/Core - - integration_test (0.0.1): - - Flutter - - leveldb-library (1.22.6) - - package_info_plus (0.4.5): - - Flutter - - PromisesObjC (2.4.0) - - RecaptchaInterop (101.0.0) - - share_plus (0.0.1): - - Flutter - - shared_preferences_foundation (0.0.1): - - Flutter - - FlutterMacOS - - url_launcher_ios (0.0.1): - - Flutter - -DEPENDENCIES: - - firebase_auth (from `.symlinks/plugins/firebase_auth/ios`) - - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - - firebase_database (from `.symlinks/plugins/firebase_database/ios`) - - Flutter (from `Flutter`) - - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) - - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`) - - integration_test (from `.symlinks/plugins/integration_test/ios`) - - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - - share_plus (from `.symlinks/plugins/share_plus/ios`) - - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - -SPEC REPOS: - trunk: - - AppAuth - - AppCheckCore - - Firebase - - FirebaseAppCheckInterop - - FirebaseAuth - - FirebaseAuthInterop - - FirebaseCore - - FirebaseCoreExtension - - FirebaseCoreInternal - - FirebaseDatabase - - FirebaseSharedSwift - - GoogleSignIn - - GoogleUtilities - - GTMAppAuth - - GTMSessionFetcher - - leveldb-library - - PromisesObjC - - RecaptchaInterop - -EXTERNAL SOURCES: - firebase_auth: - :path: ".symlinks/plugins/firebase_auth/ios" - firebase_core: - :path: ".symlinks/plugins/firebase_core/ios" - firebase_database: - :path: ".symlinks/plugins/firebase_database/ios" - Flutter: - :path: Flutter - flutter_native_splash: - :path: ".symlinks/plugins/flutter_native_splash/ios" - google_sign_in_ios: - :path: ".symlinks/plugins/google_sign_in_ios/darwin" - integration_test: - :path: ".symlinks/plugins/integration_test/ios" - package_info_plus: - :path: ".symlinks/plugins/package_info_plus/ios" - share_plus: - :path: ".symlinks/plugins/share_plus/ios" - shared_preferences_foundation: - :path: ".symlinks/plugins/shared_preferences_foundation/darwin" - url_launcher_ios: - :path: ".symlinks/plugins/url_launcher_ios/ios" - -SPEC CHECKSUMS: - AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063 - AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f - Firebase: 065f2bb395062046623036d8e6dc857bc2521d56 - firebase_auth: 323c64eedef33fc3fdf438d16c29d2624b2ce4f4 - firebase_core: 8e6f58412ca227827c366b92e7cee047a2148c60 - firebase_database: 907907fbf646c90fe16f189e1f29f3e7a6728332 - FirebaseAppCheckInterop: 4bade10286cc977e516f75d2d8312cbdfa534789 - FirebaseAuth: 3a39f6436c21ebfd7919b698228b4f89ff94c23b - FirebaseAuthInterop: f8f6ff72dc24621906497fbe5cf3c42ee815e59c - FirebaseCore: 428912f751178b06bef0a1793effeb4a5e09a9b8 - FirebaseCoreExtension: e911052d59cd0da237a45d706fc0f81654f035c1 - FirebaseCoreInternal: b321eafae5362113bc182956fafc9922cfc77b72 - FirebaseDatabase: e6a01d759052888cf02c7cc11f6d5d34f3337cb5 - FirebaseSharedSwift: 9d2fa84a46676302b89dbd5e6e62bce2fe376909 - Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 - flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf - google_sign_in_ios: 000870aa06da9b28d1d0bf7ef70ff0213059dd28 - GoogleSignIn: fcee2257188d5eda57a5e2b6a715550ffff9206d - GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 - GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238 - GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 - integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e - leveldb-library: cc8b8f8e013647a295ad3f8cd2ddf49a6f19be19 - package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 - PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - RecaptchaInterop: 11e0b637842dfb48308d242afc3f448062325aba - share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a - shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb - url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b - -PODFILE CHECKSUM: 9c46fd01abff66081b39f5fa5767b3f1d0b11d76 - -COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 50b67e4..18e8747 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,9 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 243C0B6A53EE0B7293BC2FC1 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86ECCEB2485D5B2BE5D6C9B0 /* Pods_RunnerTests.framework */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 623B0527BCE5EFB463570A28 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11DA3814D357BDB756C052AA /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; @@ -43,20 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0A58C7C7FF22649BA8352D2A /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 11DA3814D357BDB756C052AA /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 515F3A2A2AB06D68920BE4FF /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 6475093296D8670F18A71131 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 86ECCEB2485D5B2BE5D6C9B0 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 93844D71C5B967169B3F4B2D /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -64,9 +59,6 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B85E56DE0C3B6D469B37A014 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - CD9A9060E32C3163820AEFA5 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - FA6205E5A0596A33865C6579 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -74,7 +66,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 243C0B6A53EE0B7293BC2FC1 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -82,7 +73,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 623B0527BCE5EFB463570A28 /* Pods_Runner.framework in Frameworks */, + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -100,6 +91,7 @@ 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, @@ -116,7 +108,6 @@ 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, 6475093296D8670F18A71131 /* GoogleService-Info.plist */, - C4E06C1215B7386C0514099E /* Pods */, C95C29EE6B9EFC7361B71B76 /* Frameworks */, ); sourceTree = ""; @@ -145,25 +136,9 @@ path = Runner; sourceTree = ""; }; - C4E06C1215B7386C0514099E /* Pods */ = { - isa = PBXGroup; - children = ( - 0A58C7C7FF22649BA8352D2A /* Pods-Runner.debug.xcconfig */, - FA6205E5A0596A33865C6579 /* Pods-Runner.release.xcconfig */, - 93844D71C5B967169B3F4B2D /* Pods-Runner.profile.xcconfig */, - B85E56DE0C3B6D469B37A014 /* Pods-RunnerTests.debug.xcconfig */, - CD9A9060E32C3163820AEFA5 /* Pods-RunnerTests.release.xcconfig */, - 515F3A2A2AB06D68920BE4FF /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; C95C29EE6B9EFC7361B71B76 /* Frameworks */ = { isa = PBXGroup; children = ( - 11DA3814D357BDB756C052AA /* Pods_Runner.framework */, - 86ECCEB2485D5B2BE5D6C9B0 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -175,7 +150,6 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - BA3AB0D7CD1D800F235409D4 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, 75F4A23D9638C0148F8EBC33 /* Frameworks */, @@ -194,21 +168,21 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 56DA81E9E58663958296B4A4 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 0004820FFFB7C82FDD27862B /* [CP] Embed Pods Frameworks */, - 34743D32A4F29D27C98B857F /* [CP] Copy Pods Resources */, ); buildRules = ( ); dependencies = ( ); name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; @@ -242,6 +216,9 @@ Base, ); mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */, + ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; @@ -275,40 +252,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 0004820FFFB7C82FDD27862B /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - 34743D32A4F29D27C98B857F /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -325,28 +268,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 56DA81E9E58663958296B4A4 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -362,28 +283,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - BA3AB0D7CD1D800F235409D4 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -509,7 +408,6 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B85E56DE0C3B6D469B37A014 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -527,7 +425,6 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CD9A9060E32C3163820AEFA5 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -543,7 +440,6 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 515F3A2A2AB06D68920BE4FF /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -745,6 +641,20 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; } diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..1d9d90d --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,149 @@ +{ + "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/abseil-cpp-binary.git", + "state" : { + "revision" : "bbe8b69694d7873315fd3a4ad41efe043e1c07c5", + "version" : "1.2024072200.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/app-check.git", + "state" : { + "revision" : "61b85103a1aeed8218f17c794687781505fbbef5", + "version" : "11.2.0" + } + }, + { + "identity" : "appauth-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/openid/AppAuth-iOS.git", + "state" : { + "revision" : "145104f5ea9d58ae21b60add007c33c1cc0c948e", + "version" : "2.0.0" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk", + "state" : { + "revision" : "8d5b4189f1f482df8d5c58c9985ea70491ef5382", + "version" : "12.14.0" + } + }, + { + "identity" : "google-ads-on-device-conversion-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", + "state" : { + "revision" : "9bfcc6cf435b2e7c5562c1900b8680c594fa9a64", + "version" : "3.6.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "219e564a8510e983e675c94f77f7f7c50049f22d", + "version" : "12.14.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", + "version" : "10.1.0" + } + }, + { + "identity" : "googlesignin-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleSignIn-iOS.git", + "state" : { + "revision" : "913b4005ea26aebe1c97d54e35ad82a515924c71", + "version" : "9.1.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "60da361632d0de02786f709bdc0c4df340f7613e", + "version" : "8.1.0" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/grpc-binary.git", + "state" : { + "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", + "version" : "1.69.1" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", + "version" : "3.5.0" + } + }, + { + "identity" : "gtmappauth", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GTMAppAuth.git", + "state" : { + "revision" : "56e0ccf09a6dd29dc7e68bdf729598240ca8aa16", + "version" : "5.0.0" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "040d087ac2267d2ddd4cca36c757d1c6a05fdbfe", + "version" : "101.0.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version" : "1.22.5" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" + } + } + ], + "version" : 2 +} diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index e3773d4..c3fedb2 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + 'Discard →\nor\n↓ swap'; - @override - String get done => 'Done'; - @override String get drawCardHere => 'Draw\na card\nhere\n→'; @@ -169,11 +166,6 @@ class AppLocalizationsEn extends AppLocalizations { @override String get miniPutFull => 'MiniPut 4 Cards'; - @override - String nameForPlayerNumber(int number) { - return 'Name for Player #$number'; - } - @override String get newGame => 'New Game'; diff --git a/lib/gen/l10n/app_localizations_fr.dart b/lib/gen/l10n/app_localizations_fr.dart index 35df1a3..e2469be 100644 --- a/lib/gen/l10n/app_localizations_fr.dart +++ b/lib/gen/l10n/app_localizations_fr.dart @@ -60,9 +60,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get discardOrSwap => 'Défausser →\nou\n↓ échanger'; - @override - String get done => 'Valider'; - @override String get drawCardHere => 'Piochez\nune carte\nici\n→'; @@ -169,11 +166,6 @@ class AppLocalizationsFr extends AppLocalizations { @override String get miniPutFull => 'MiniPut 4 Cartes'; - @override - String nameForPlayerNumber(int number) { - return 'Nom du joueur n°$number'; - } - @override String get newGame => 'Nouvelle partie'; diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 55d813b..2ae843b 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -44,7 +44,6 @@ "createNewTable": "Create New Table", "deleteLastRow": "Delete Last Row", "discardOrSwap": "Discard →\nor\n↓ swap", - "done": "Done", "drawCardHere": "Draw\na card\nhere\n→", "enterTableName": "Enter name of the new table.", "enterYourName": "Enter Your Name", @@ -117,14 +116,6 @@ "description": "DO NOT TRANSLATE." }, "miniPutFull": "MiniPut 4 Cards", - "nameForPlayerNumber": "Name for Player #{number}", - "@nameForPlayerNumber": { - "placeholders": { - "number": { - "type": "int" - } - } - }, "newGame": "New Game", "next": "Next", "noCardsAvailableToDraw": "No cards available to draw!", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index d213082..04a66a4 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -39,7 +39,6 @@ "createNewTable": "Créer une table", "deleteLastRow": "Supprimer la dernière ligne", "discardOrSwap": "Défausser →\nou\n↓ échanger", - "done": "Valider", "drawCardHere": "Piochez\nune carte\nici\n→", "enterTableName": "Entrez le nom de la nouvelle table.", "enterYourName": "Entrez votre nom", @@ -109,14 +108,6 @@ "last": "DERNIER", "miniPut": "MiniPut", "miniPutFull": "MiniPut 4 Cartes", - "nameForPlayerNumber": "Nom du joueur n°{number}", - "@nameForPlayerNumber": { - "placeholders": { - "number": { - "type": "int" - } - } - }, "newGame": "Nouvelle partie", "next": "Suivant", "noCardsAvailableToDraw": "Aucune carte disponible à piocher !", diff --git a/lib/models/app/app_theme.dart b/lib/models/app/app_theme.dart index 90bb5f7..5d882fb 100644 --- a/lib/models/app/app_theme.dart +++ b/lib/models/app/app_theme.dart @@ -9,6 +9,16 @@ class AppTheme { static const buttonGradientBottom = Color.fromARGB(255, 10, 20, 10); static const buttonActionGradientTop = Color.fromARGB(100, 5, 10, 5); static const buttonActionGradientBottom = Color.fromARGB(100, 0, 0, 0); + + // Semantic button color pairs (top, bottom) + static const buttonPrimaryTop = Color.fromARGB(255, 40, 80, 40); + static const buttonPrimaryBottom = Color.fromARGB(255, 10, 20, 10); + static const buttonSecondaryTop = Color.fromARGB(255, 40, 70, 100); + static const buttonSecondaryBottom = Color.fromARGB(255, 10, 15, 25); + static const buttonWarningTop = Color.fromARGB(255, 120, 80, 20); + static const buttonWarningBottom = Color.fromARGB(255, 40, 25, 5); + static const buttonDangerTop = Color.fromARGB(255, 100, 30, 30); + static const buttonDangerBottom = Color.fromARGB(255, 30, 10, 10); static final colorScheme = ColorScheme.fromSeed( seedColor: seedColor, brightness: Brightness.dark, diff --git a/lib/models/app/auth_service.dart b/lib/models/app/auth_service.dart index 8dcab04..9f5fd91 100644 --- a/lib/models/app/auth_service.dart +++ b/lib/models/app/auth_service.dart @@ -4,6 +4,7 @@ import 'package:google_sign_in/google_sign_in.dart'; const String googleSignInFieldEmail = 'email'; const String googleSignInFieldProfile = 'profile'; +const String googleSignInPromptSelectAccount = 'select_account'; /// Authentication helper for guest mode and Google sign-in flows. class AuthService { @@ -25,22 +26,20 @@ class AuthService { await _auth.signInAnonymously(); } + static bool get _usesGoogleSignInPluginFlow => + !kIsWeb && defaultTargetPlatform == TargetPlatform.macOS; + static Future _ensureInitialized() async { if (_initialized) return; await GoogleSignIn.instance.initialize(); _initialized = true; } - /// Signs in with Google and links anonymous users when possible. - static Future signInWithGoogle() async { - if (kIsWeb) { - final provider = GoogleAuthProvider(); - provider.addScope(googleSignInFieldEmail); - provider.addScope(googleSignInFieldProfile); - provider.setCustomParameters({'prompt': 'select_account'}); - return _auth.signInWithPopup(provider); - } - + /// Completes Google auth via `google_sign_in` and maps it to Firebase. + /// + /// This path is required on macOS because `signInWithProvider` is not + /// implemented by the current Firebase Auth macOS plugin. + static Future _signInWithGooglePlugin() async { await _ensureInitialized(); final GoogleSignInAccount googleUser; @@ -59,23 +58,26 @@ class AuthService { rethrow; } - final googleAuth = googleUser.authentication; - final authz = await googleUser.authorizationClient.authorizationForScopes([ - googleSignInFieldEmail, - googleSignInFieldProfile, - ]); + final GoogleSignInAuthentication googleAuth = googleUser.authentication; + final GoogleSignInClientAuthorization? authz = await googleUser + .authorizationClient + .authorizationForScopes([ + googleSignInFieldEmail, + googleSignInFieldProfile, + ]); - final credential = GoogleAuthProvider.credential( + final AuthCredential credential = GoogleAuthProvider.credential( accessToken: authz?.accessToken, idToken: googleAuth.idToken, ); - final user = _auth.currentUser; + final User? user = _auth.currentUser; if (user != null && user.isAnonymous) { try { return await user.linkWithCredential(credential); } on FirebaseAuthException catch (error) { - if (error.code == 'credential-already-in-use') { + if (error.code == 'credential-already-in-use' || + error.code == 'provider-already-linked') { await user.delete(); return _auth.signInWithCredential(credential); } @@ -87,12 +89,45 @@ class AuthService { return _auth.signInWithCredential(credential); } - /// Signs out from Firebase and clears native Google session state. + /// Signs in with Google and links anonymous users when possible. + static Future signInWithGoogle() async { + final provider = GoogleAuthProvider(); + provider.addScope(googleSignInFieldEmail); + provider.addScope(googleSignInFieldProfile); + provider.setCustomParameters({'prompt': googleSignInPromptSelectAccount}); + + if (kIsWeb) { + return _auth.signInWithPopup(provider); + } + + if (_usesGoogleSignInPluginFlow) { + return _signInWithGooglePlugin(); + } + + final user = _auth.currentUser; + if (user != null && user.isAnonymous) { + try { + return await user.linkWithProvider(provider); + } on FirebaseAuthException catch (error) { + if (error.code == 'credential-already-in-use' || + error.code == 'provider-already-linked') { + await user.delete(); + return _auth.signInWithProvider(provider); + } + + rethrow; + } + } + + return _auth.signInWithProvider(provider); + } + + /// Signs out from Firebase. static Future signOut() async { try { await _auth.signOut(); } finally { - if (!kIsWeb) { + if (_usesGoogleSignInPluginFlow) { await _ensureInitialized(); await GoogleSignIn.instance.signOut(); } diff --git a/lib/models/app/firebase_options.example.dart b/lib/models/app/firebase_options.example.dart index dfb015d..a1c489a 100644 --- a/lib/models/app/firebase_options.example.dart +++ b/lib/models/app/firebase_options.example.dart @@ -1,4 +1,6 @@ // ignore: fcheck_dead_code +// ignore: fcheck_documentation +// ignore: fcheck_duplicate_code // Example Firebase options so the app builds without providing actual credentials. // Replace these values by running `flutterfire configure --out=lib/models/app/firebase_options.dart`. // ignore_for_file: type=lint diff --git a/lib/models/game/game_constants.dart b/lib/models/game/game_constants.dart index 78e6b8a..73796ed 100644 --- a/lib/models/game/game_constants.dart +++ b/lib/models/game/game_constants.dart @@ -37,7 +37,7 @@ class GameConstants { static int calculateDecks(int numberOfPlayers) => (numberOfPlayers + 1) ~/ deckCalculationDivider; - static String playerNumberPrefix = 'Player'; + static String playerNumberPrefix = 'P'; // Game Style Label Keys /// Key for the Skyjo game style label. diff --git a/lib/models/game/golf_score_model.dart b/lib/models/game/golf_score_model.dart index 58528a1..9c9e2b3 100644 --- a/lib/models/game/golf_score_model.dart +++ b/lib/models/game/golf_score_model.dart @@ -173,14 +173,10 @@ class GolfScoreModel { return GolfScoreModel(playerNames: playerNames, scores: scores); } catch (_) { // Handle corrupted JSON data by returning default model - return GolfScoreModel( - playerNames: ['Player1', 'Player2', 'Player3', 'Player4'], - ); + return GolfScoreModel(playerNames: ['P1', 'P2', 'P3']); } } else { - return GolfScoreModel( - playerNames: ['Player1', 'Player2', 'Player3', 'Player4'], - ); + return GolfScoreModel(playerNames: ['P1', 'P2', 'P3']); } } } diff --git a/lib/screens/game/game_over_dialog.dart b/lib/screens/game/game_over_dialog.dart index 0478799..e6248d3 100644 --- a/lib/screens/game/game_over_dialog.dart +++ b/lib/screens/game/game_over_dialog.dart @@ -2,6 +2,7 @@ import 'package:cards/gen/l10n/app_localizations.dart'; import 'package:cards/models/app/constants_layout.dart'; import 'package:cards/models/game/backend_model.dart'; import 'package:cards/models/game/game_model.dart'; +import 'package:cards/widgets/buttons/my_button_rectangle.dart'; import 'package:cards/widgets/helpers/dialog.dart'; import 'package:cards/widgets/helpers/my_text.dart'; import 'package:flutter/material.dart'; @@ -99,18 +100,22 @@ void showGameOverDialog( ], ), buttons: [ - ElevatedButton( - child: Text(localizations.playAgain), - onPressed: () { + MyButtonRectangle.primary( + width: ConstLayout.dialogButtonWidth, + height: ConstLayout.dialogButtonHeight, + onTap: () { Navigator.of(context).pop(); gameModel.initializeGame(); }, + child: Text(localizations.playAgain), ), - ElevatedButton( - child: Text(localizations.exit), - onPressed: () { + MyButtonRectangle.secondary( + width: ConstLayout.dialogButtonWidth, + height: ConstLayout.dialogButtonHeight, + onTap: () { Navigator.of(context).pop(); }, + child: Text(localizations.exit), ), ], ); diff --git a/lib/screens/keepscore/golf_score_screen.dart b/lib/screens/keepscore/golf_score_screen.dart index bd31010..a02af99 100644 --- a/lib/screens/keepscore/golf_score_screen.dart +++ b/lib/screens/keepscore/golf_score_screen.dart @@ -5,6 +5,7 @@ import 'package:cards/models/app/app_theme.dart'; import 'package:cards/models/app/constants_layout.dart'; import 'package:cards/models/game/game_constants.dart'; import 'package:cards/models/game/golf_score_model.dart'; +import 'package:cards/widgets/buttons/my_button_rectangle.dart'; import 'package:cards/widgets/buttons/my_button_round.dart'; import 'package:cards/widgets/helpers/input_keyboard.dart'; import 'package:cards/widgets/helpers/screen.dart'; @@ -153,12 +154,16 @@ class _GolfScoreScreenState extends State { title: Text(localizations.deleteLastRow), content: Text(localizations.confirmDeleteRound(i + 1)), actions: [ - TextButton( - onPressed: () => Navigator.of(ctx).pop(false), + MyButtonRectangle.secondary( + width: ConstLayout.dialogButtonWidth, + height: ConstLayout.dialogButtonHeight, + onTap: () => Navigator.of(ctx).pop(false), child: Text(localizations.cancel), ), - TextButton( - onPressed: () => Navigator.of(ctx).pop(true), + MyButtonRectangle.danger( + width: ConstLayout.dialogButtonWidth, + height: ConstLayout.dialogButtonHeight, + onTap: () => Navigator.of(ctx).pop(true), child: Text(localizations.confirm), ), ], @@ -181,12 +186,16 @@ class _GolfScoreScreenState extends State { title: Text(localizations.newGame), content: Text(localizations.confirmNewGame), actions: [ - TextButton( - onPressed: () => Navigator.of(ctx).pop(false), + MyButtonRectangle.secondary( + width: ConstLayout.dialogButtonWidth, + height: ConstLayout.dialogButtonHeight, + onTap: () => Navigator.of(ctx).pop(false), child: Text(localizations.cancel), ), - TextButton( - onPressed: () => Navigator.of(ctx).pop(true), + MyButtonRectangle.danger( + width: ConstLayout.dialogButtonWidth, + height: ConstLayout.dialogButtonHeight, + onTap: () => Navigator.of(ctx).pop(true), child: Text(localizations.confirm), ), ], diff --git a/lib/widgets/buttons/my_button.dart b/lib/widgets/buttons/my_button.dart index 3930f5e..e6631f0 100644 --- a/lib/widgets/buttons/my_button.dart +++ b/lib/widgets/buttons/my_button.dart @@ -15,6 +15,8 @@ class MyButton extends StatelessWidget { this.padding = EdgeInsets.zero, this.isRound = false, this.isAction = false, + this.gradientTop, + this.gradientBottom, }); /// Creates a [MyButton] with a more transparent background for primary actions. @@ -27,6 +29,8 @@ class MyButton extends StatelessWidget { this.borderRadius = ConstLayout.radiusL, this.padding = EdgeInsets.zero, this.isRound = false, + this.gradientTop, + this.gradientBottom, }) : isAction = true; /// The corner radius of the button (ignored if [isRound] is true). @@ -35,6 +39,12 @@ class MyButton extends StatelessWidget { /// The widget displayed at the center of the button. final Widget child; + /// Custom gradient top color (overrides default). + final Color? gradientBottom; + + /// Custom gradient top color (overrides default). + final Color? gradientTop; + /// The height of the button. final double? height; @@ -60,8 +70,9 @@ class MyButton extends StatelessWidget { ? null : BorderRadius.circular(borderRadius ?? ConstLayout.radiusM); - final Color baseTopColor = AppTheme.buttonGradientTop; - final Color baseBottomColor = AppTheme.buttonGradientBottom; + final Color baseTopColor = gradientTop ?? AppTheme.buttonGradientTop; + final Color baseBottomColor = + gradientBottom ?? AppTheme.buttonGradientBottom; final Color topColor = isAction ? AppTheme.buttonActionGradientTop : baseTopColor; diff --git a/lib/widgets/buttons/my_button_rectangle.dart b/lib/widgets/buttons/my_button_rectangle.dart index 66b8428..2d57758 100644 --- a/lib/widgets/buttons/my_button_rectangle.dart +++ b/lib/widgets/buttons/my_button_rectangle.dart @@ -1,5 +1,6 @@ // ignore_for_file: deprecated_member_use +import 'package:cards/models/app/app_theme.dart'; import 'package:cards/models/app/constants_layout.dart'; import 'package:cards/widgets/buttons/my_button.dart'; import 'package:flutter/material.dart'; @@ -37,4 +38,56 @@ class MyButtonRectangle extends MyButton { double super.borderRadius = ConstLayout.radiusL, super.padding = EdgeInsets.zero, }) : super.action(); + + /// Creates a primary semantic button (green, success-oriented). + const MyButtonRectangle.primary({ + super.key, + required super.onTap, + required super.child, + super.height = ConstLayout.buttonHeight, + super.width = ConstLayout.buttonWidth, + super.borderRadius = ConstLayout.radiusM, + super.padding, + super.gradientTop = AppTheme.buttonPrimaryTop, + super.gradientBottom = AppTheme.buttonPrimaryBottom, + }) : super(); + + /// Creates a secondary semantic button (blue, neutral-oriented). + const MyButtonRectangle.secondary({ + super.key, + required super.onTap, + required super.child, + super.height = ConstLayout.buttonHeight, + super.width = ConstLayout.buttonWidth, + super.borderRadius = ConstLayout.radiusM, + super.padding, + super.gradientTop = AppTheme.buttonSecondaryTop, + super.gradientBottom = AppTheme.buttonSecondaryBottom, + }) : super(); + + /// Creates a warning semantic button (orange, caution-oriented). + const MyButtonRectangle.warning({ + super.key, + required super.onTap, + required super.child, + super.height = ConstLayout.buttonHeight, + super.width = ConstLayout.buttonWidth, + super.borderRadius = ConstLayout.radiusM, + super.padding, + super.gradientTop = AppTheme.buttonWarningTop, + super.gradientBottom = AppTheme.buttonWarningBottom, + }) : super(); + + /// Creates a danger semantic button (red, destructive-oriented). + const MyButtonRectangle.danger({ + super.key, + required super.onTap, + required super.child, + super.height = ConstLayout.buttonHeight, + super.width = ConstLayout.buttonWidth, + super.borderRadius = ConstLayout.radiusM, + super.padding, + super.gradientTop = AppTheme.buttonDangerTop, + super.gradientBottom = AppTheme.buttonDangerBottom, + }) : super(); } diff --git a/lib/widgets/helpers/edit_box.dart b/lib/widgets/helpers/edit_box.dart index dcc3bf3..fc89414 100644 --- a/lib/widgets/helpers/edit_box.dart +++ b/lib/widgets/helpers/edit_box.dart @@ -1,12 +1,14 @@ import 'package:cards/models/app/app_theme.dart'; import 'package:cards/models/app/constants_layout.dart'; +import 'package:cards/widgets/helpers/input_keyboard.dart'; import 'package:flutter/material.dart'; /// A reusable widget for creating a text input field. /// /// This widget can include a label, a text field, and a trailing widget (e.g., an /// icon button). It is used for both the room name and player name input fields. -class EditBox extends StatelessWidget { +/// Displays the [InputKeyboard.alpha] virtual keyboard below when [showKeyboard] is true. +class EditBox extends StatefulWidget { /// Creates an [EditBox] widget. /// /// [label] is the text to display as the label for the input field (optional). @@ -25,6 +27,7 @@ class EditBox extends StatelessWidget { required this.rightSideChild, this.prefixIcon, this.onChanged, + this.showKeyboard = true, }); /// The text editing controller for the text field. @@ -48,61 +51,122 @@ class EditBox extends StatelessWidget { /// The widget to display on the right side of the input field. final Widget? rightSideChild; + /// Whether to show the virtual alpha keyboard below the input field. + /// + /// Defaults to `true`. Set to `false` for contexts where a native keyboard + /// or no keyboard is preferred (e.g., search boxes in constrained layouts). + final bool showKeyboard; + @override - Widget build(BuildContext context) { - return Container( - width: ConstLayout.startGameScreenMaxWidth, - padding: const EdgeInsets.all(ConstLayout.paddingM), - decoration: BoxDecoration( - color: AppTheme.panelInputZone, - borderRadius: BorderRadius.circular(ConstLayout.radiusM), - ), - child: Row( - spacing: ConstLayout.sizeM, - children: [ - if (label != null) - Text( - label!, - style: TextStyle( - fontSize: ConstLayout.textM, - fontWeight: FontWeight.bold, - ), - ), + State createState() => _EditBoxState(); +} + +class _EditBoxState extends State { + late final FocusNode _focusNode; + @override + void initState() { + super.initState(); + _focusNode = FocusNode(); + } + + @override + void dispose() { + _focusNode.dispose(); + super.dispose(); + } - Expanded( - child: TextField( - controller: controller, - onEditingComplete: onSubmitted, - onSubmitted: (_) { - onSubmitted(); - }, - onChanged: (final String text) { - final String uppercaseText = text.toUpperCase(); - controller.value = controller.value.copyWith( - text: uppercaseText, - selection: TextSelection.collapsed( - offset: uppercaseText.length, + @override + Widget build(BuildContext context) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: ConstLayout.startGameScreenMaxWidth, + padding: const EdgeInsets.all(ConstLayout.paddingM), + decoration: BoxDecoration( + color: AppTheme.panelInputZone, + borderRadius: BorderRadius.circular(ConstLayout.radiusM), + ), + child: Row( + spacing: ConstLayout.sizeM, + children: [ + if (widget.label != null) + Text( + widget.label!, + style: TextStyle( + fontSize: ConstLayout.textM, + fontWeight: FontWeight.bold, ), - composing: TextRange.empty, - ); - onChanged?.call(text); - }, - style: const TextStyle( - color: Colors.yellow, - fontSize: ConstLayout.textM, - fontWeight: FontWeight.bold, - ), - decoration: InputDecoration( - prefixIcon: prefixIcon, - border: InputBorder.none, - isDense: true, - contentPadding: EdgeInsets.zero, + ), + Expanded( + child: TextField( + focusNode: _focusNode, + controller: widget.controller, + onEditingComplete: widget.onSubmitted, + onSubmitted: (_) { + widget.onSubmitted(); + }, + onChanged: (final String text) { + final String uppercaseText = text.toUpperCase(); + widget.controller.value = widget.controller.value.copyWith( + text: uppercaseText, + selection: TextSelection.collapsed( + offset: uppercaseText.length, + ), + composing: TextRange.empty, + ); + widget.onChanged?.call(uppercaseText); + }, + style: const TextStyle( + color: Colors.yellow, + fontSize: ConstLayout.textM, + fontWeight: FontWeight.bold, + ), + decoration: InputDecoration( + prefixIcon: widget.prefixIcon, + border: InputBorder.none, + enabledBorder: InputBorder.none, + focusedBorder: InputBorder.none, + contentPadding: const EdgeInsets.symmetric( + horizontal: ConstLayout.paddingS, + vertical: ConstLayout.paddingXS, + ), + ), + ), ), - ), + ?widget.rightSideChild, + ], ), - ?rightSideChild, - ], - ), + ), + if (widget.showKeyboard) + InputKeyboard.alpha(onKeyPressed: _handleVirtualKey), + ], + ); + } + + /// Handles a key press from the virtual [InputKeyboard.alpha]. + /// + /// Appends letters and spaces to the controller, or removes the last + /// character when [keyBackspace] is pressed. Fires [EditBox.onChanged] + /// and retains focus on the text field. + void _handleVirtualKey(String key) { + final String current = widget.controller.text; + final String updated; + if (key == keyBackspace) { + updated = current.isEmpty + ? current + : current.substring(0, current.length - 1); + } else { + updated = current + key; + } + final String uppercased = updated.toUpperCase(); + widget.controller.value = widget.controller.value.copyWith( + text: uppercased, + selection: TextSelection.collapsed(offset: uppercased.length), + composing: TextRange.empty, ); + widget.onChanged?.call(uppercased); + // Keep focus on the text field so the keyboard stays visible + _focusNode.requestFocus(); } } diff --git a/lib/widgets/helpers/input_keyboard.dart b/lib/widgets/helpers/input_keyboard.dart index 0e76483..0254cb7 100644 --- a/lib/widgets/helpers/input_keyboard.dart +++ b/lib/widgets/helpers/input_keyboard.dart @@ -1,21 +1,58 @@ import 'package:cards/models/app/constants_layout.dart'; +import 'package:cards/widgets/buttons/my_button_rectangle.dart'; import 'package:cards/widgets/buttons/my_button_round.dart'; import 'package:flutter/material.dart'; -/// +/// Key label for the sign-toggle button on the numeric keyboard. const String keyChangeSign = '±'; -/// +/// Key label for the backspace button. const String keyBackspace = '⌫'; +/// Key value emitted by the space button on the alpha keyboard. +const String keySpace = ' '; + +/// Label displayed on the space bar button. +const String keySpaceLabel = 'SPACE'; + +/// Internal layout constants for [InputKeyboard]. +class _InputKeyboardConstants { + static const int codeA = 65; // Unicode / ASCII code point for 'A' + static const int alphabetCount = 26; + static const int alphaRow1End = 5; + static const int alphaRow2End = 10; + static const int alphaRow3End = 15; + static const int alphaRow4End = 20; + static const int alphaRow5End = 25; +} + +/// The two input modes supported by [InputKeyboard]. +enum InputKeyboardMode { + /// Numeric keypad: digits 0–9, sign toggle, backspace. + numeric, + + /// Alpha keypad: uppercase A–Z, space, backspace. + alpha, +} + +/// An on-screen virtual keyboard with two modes. /// +/// Use the default constructor for the numeric keypad (score entry). +/// Use [InputKeyboard.alpha] for text entry (names, table names). class InputKeyboard extends StatelessWidget { - /// - const InputKeyboard({super.key, required this.onKeyPressed}); + /// Creates a numeric [InputKeyboard] (default mode). + const InputKeyboard({super.key, required this.onKeyPressed}) + : mode = InputKeyboardMode.numeric; - /// - final Function(String) onKeyPressed; + /// Creates an alpha [InputKeyboard] (A–Z, space, backspace). + const InputKeyboard.alpha({super.key, required this.onKeyPressed}) + : mode = InputKeyboardMode.alpha; + + /// The keyboard mode (set by constructor). + final InputKeyboardMode mode; + /// Called with the label of the key that was pressed. + final Function(String) onKeyPressed; @override Widget build(BuildContext context) { return IntrinsicWidth( @@ -29,47 +66,60 @@ class InputKeyboard extends StatelessWidget { ), ), padding: EdgeInsets.all(ConstLayout.paddingS), - child: Column( + child: mode == InputKeyboardMode.alpha + ? _buildAlphaLayout() + : _buildNumericLayout(), + ), + ); + } + + /// Builds the alpha keyboard layout: rows A–Z, space bar, backspace. + Widget _buildAlphaLayout() { + // Generate A–Z from character codes to avoid hardcoded string literals. + final letters = List.generate( + _InputKeyboardConstants.alphabetCount, + (i) => String.fromCharCode(_InputKeyboardConstants.codeA + i), + ); + return Column( + children: [ + _buildRow(letters.sublist(0, _InputKeyboardConstants.alphaRow1End)), + _buildRow( + letters.sublist( + _InputKeyboardConstants.alphaRow1End, + _InputKeyboardConstants.alphaRow2End, + ), + ), + _buildRow( + letters.sublist( + _InputKeyboardConstants.alphaRow2End, + _InputKeyboardConstants.alphaRow3End, + ), + ), + _buildRow( + letters.sublist( + _InputKeyboardConstants.alphaRow3End, + _InputKeyboardConstants.alphaRow4End, + ), + ), + _buildRow( + letters.sublist( + _InputKeyboardConstants.alphaRow4End, + _InputKeyboardConstants.alphaRow5End, + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - _buildButton('1'), - _buildButton('2'), - _buildButton('3'), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - _buildButton('4'), - _buildButton('5'), - _buildButton('6'), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - _buildButton('7'), - _buildButton('8'), - _buildButton('9'), - ], - ), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - _buildButton(keyChangeSign), - _buildButton('0'), - _buildButton(keyBackspace), - ], - ), + _buildButton(letters[_InputKeyboardConstants.alphaRow5End]), + _buildSpaceButton(), + _buildButton(keyBackspace), ], ), - ), + ], ); } - /// Builds a single on-screen keypad button. + /// Builds a single round key button. Widget _buildButton(String text) { return Padding( padding: const EdgeInsets.all(ConstLayout.paddingS), @@ -84,4 +134,57 @@ class InputKeyboard extends StatelessWidget { ), ); } + + /// Builds the numeric keyboard layout: digits 1–9, sign toggle, 0, backspace. + Widget _buildNumericLayout() { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [_buildButton('1'), _buildButton('2'), _buildButton('3')], + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [_buildButton('4'), _buildButton('5'), _buildButton('6')], + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [_buildButton('7'), _buildButton('8'), _buildButton('9')], + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + _buildButton(keyChangeSign), + _buildButton('0'), + _buildButton(keyBackspace), + ], + ), + ], + ); + } + + /// Builds a row of round key buttons from a list of labels. + Widget _buildRow(List keys) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: keys.map(_buildButton).toList(), + ); + } + + /// Builds the wide SPACE bar button for the alpha keyboard. + Widget _buildSpaceButton() { + return Padding( + padding: const EdgeInsets.all(ConstLayout.paddingS), + child: MyButtonRectangle( + width: ConstLayout.iconXL, + height: ConstLayout.iconL, + onTap: () => onKeyPressed(keySpace), + child: const Text( + keySpaceLabel, + textAlign: TextAlign.center, + style: TextStyle(fontSize: ConstLayout.textS), + ), + ), + ); + } } diff --git a/lib/widgets/helpers/table_widget.dart b/lib/widgets/helpers/table_widget.dart index 4ed8b58..cf33990 100644 --- a/lib/widgets/helpers/table_widget.dart +++ b/lib/widgets/helpers/table_widget.dart @@ -97,6 +97,7 @@ class _TableWidgetState extends State { color: AppTheme.onSurfaceHint, size: ConstLayout.iconM, ), + showKeyboard: false, ), ), diff --git a/lib/widgets/player/player_header.dart b/lib/widgets/player/player_header.dart index fec6d0d..affbade 100644 --- a/lib/widgets/player/player_header.dart +++ b/lib/widgets/player/player_header.dart @@ -131,8 +131,13 @@ class _PlayerHeaderState extends State { Text( widget.playerName, textAlign: TextAlign.center, + maxLines: 1, + softWrap: false, overflow: TextOverflow.fade, - style: TextStyle(fontSize: ConstLayout.textS), + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: ConstLayout.textM, + ), ), // @@ -250,87 +255,61 @@ class _PlayerHeaderState extends State { width: PlayerHeaderConstants.dialogBorderWidth, ), ), - title: Text( - widget.playerIndex != null - ? localizations.nameForPlayerNumber(widget.playerIndex! + 1) - : localizations.playerName, - ), - content: Column( - mainAxisSize: MainAxisSize.min, - spacing: PlayerHeaderConstants.dialogContentSpacing, - children: [ - EditBox( - label: localizations.playerName, - controller: controller, - onSubmitted: () {}, - errorStatus: '', - rightSideChild: null, - ), - MyButtonRectangle( - width: double.infinity, - height: PlayerHeaderConstants.inputHeight, - onTap: () { - if (controller.text.isNotEmpty) { - widget.onNameChanged(controller.text); - } - Navigator.of(context).pop(); - }, - child: Text( - localizations.done, - style: TextStyle( - color: colorScheme.onPrimaryContainer, - fontWeight: FontWeight.bold, - ), + content: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + spacing: PlayerHeaderConstants.dialogContentSpacing, + children: [ + EditBox( + label: localizations.playerName, + controller: controller, + onSubmitted: () {}, + errorStatus: '', + rightSideChild: null, + onChanged: (_) => widget.onNameChanged(controller.text), ), - ), - Divider(color: colorScheme.primary), - Wrap( - spacing: PlayerHeaderConstants.wrapSpacing, - runSpacing: PlayerHeaderConstants.wrapSpacing, - children: [ - MyButtonRectangle( - width: null, // Allow dynamic width - height: PlayerHeaderConstants.inputHeight, - onTap: () { - Navigator.of(context).pop(); - widget.onPlayerAdded?.call(); - }, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: ConstLayout.sizeM, - ), - child: Text( - localizations.addAnotherPlayer, - style: TextStyle( - color: colorScheme.onSurface, - fontWeight: FontWeight.bold, + Wrap( + spacing: PlayerHeaderConstants.wrapSpacing, + runSpacing: PlayerHeaderConstants.wrapSpacing, + children: [ + MyButtonRectangle.secondary( + width: null, // Allow dynamic width + height: PlayerHeaderConstants.inputHeight, + onTap: () { + Navigator.of(context).pop(); + widget.onPlayerAdded?.call(); + }, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: ConstLayout.sizeM, + ), + child: Text( + localizations.addAnotherPlayer, + style: const TextStyle(fontWeight: FontWeight.bold), ), ), ), - ), - MyButtonRectangle( - width: null, // Allow dynamic width - height: PlayerHeaderConstants.inputHeight, - onTap: () { - Navigator.of(context).pop(); - _showRemoveConfirmationDialog(); - }, - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: ConstLayout.sizeM, - ), - child: Text( - localizations.removeThisPlayer, - style: TextStyle( - color: colorScheme.error, - fontWeight: FontWeight.bold, + MyButtonRectangle.danger( + width: null, // Allow dynamic width + height: PlayerHeaderConstants.inputHeight, + onTap: () { + Navigator.of(context).pop(); + _showRemoveConfirmationDialog(); + }, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: ConstLayout.sizeM, + ), + child: Text( + localizations.removeThisPlayer, + style: const TextStyle(fontWeight: FontWeight.bold), ), ), ), - ), - ], - ), - ], + ], + ), + ], + ), ), ), ); @@ -374,12 +353,16 @@ class _PlayerHeaderState extends State { localizations.removePlayerConfirmation(widget.playerName), ), actions: [ - TextButton( - onPressed: () => Navigator.of(context).pop(), + MyButtonRectangle.secondary( + width: ConstLayout.dialogButtonWidth, + height: ConstLayout.dialogButtonHeight, + onTap: () => Navigator.of(context).pop(), child: Text(localizations.cancel), ), - TextButton( - onPressed: () { + MyButtonRectangle.danger( + width: ConstLayout.dialogButtonWidth, + height: ConstLayout.dialogButtonHeight, + onTap: () { Navigator.of(context).pop(); widget.onPlayerRemoved(); }, diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index f16b4c3..df8d2f7 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -7,6 +7,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni ) set(PLUGIN_BUNDLED_LIBRARIES) diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig index 4b81f9b..c2efd0b 100644 --- a/macos/Flutter/Flutter-Debug.xcconfig +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig index 5caa9d1..c2efd0b 100644 --- a/macos/Flutter/Flutter-Release.xcconfig +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -1,2 +1 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" #include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Podfile b/macos/Podfile deleted file mode 100644 index ff5ddb3..0000000 --- a/macos/Podfile +++ /dev/null @@ -1,42 +0,0 @@ -platform :osx, '10.15' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/macos/Podfile.lock b/macos/Podfile.lock deleted file mode 100644 index 0b217e8..0000000 --- a/macos/Podfile.lock +++ /dev/null @@ -1,195 +0,0 @@ -PODS: - - AppAuth (2.0.0): - - AppAuth/Core (= 2.0.0) - - AppAuth/ExternalUserAgent (= 2.0.0) - - AppAuth/Core (2.0.0) - - AppAuth/ExternalUserAgent (2.0.0): - - AppAuth/Core - - AppCheckCore (11.2.0): - - GoogleUtilities/Environment (~> 8.0) - - GoogleUtilities/UserDefaults (~> 8.0) - - PromisesObjC (~> 2.4) - - Firebase/Auth (12.9.0): - - Firebase/CoreOnly - - FirebaseAuth (~> 12.9.0) - - Firebase/CoreOnly (12.9.0): - - FirebaseCore (~> 12.9.0) - - Firebase/Database (12.9.0): - - Firebase/CoreOnly - - FirebaseDatabase (~> 12.9.0) - - firebase_auth (6.3.0): - - Firebase/Auth (~> 12.9.0) - - Firebase/CoreOnly (~> 12.9.0) - - firebase_core - - FlutterMacOS - - firebase_core (4.6.0): - - Firebase/CoreOnly (~> 12.9.0) - - FlutterMacOS - - firebase_database (12.2.0): - - Firebase/CoreOnly (~> 12.9.0) - - Firebase/Database (~> 12.9.0) - - firebase_core - - FlutterMacOS - - FirebaseAppCheckInterop (12.9.0) - - FirebaseAuth (12.9.0): - - FirebaseAppCheckInterop (~> 12.9.0) - - FirebaseAuthInterop (~> 12.9.0) - - FirebaseCore (~> 12.9.0) - - FirebaseCoreExtension (~> 12.9.0) - - GoogleUtilities/AppDelegateSwizzler (~> 8.1) - - GoogleUtilities/Environment (~> 8.1) - - GTMSessionFetcher/Core (< 6.0, >= 3.4) - - RecaptchaInterop (~> 101.0) - - FirebaseAuthInterop (12.9.0) - - FirebaseCore (12.9.0): - - FirebaseCoreInternal (~> 12.9.0) - - GoogleUtilities/Environment (~> 8.1) - - GoogleUtilities/Logger (~> 8.1) - - FirebaseCoreExtension (12.9.0): - - FirebaseCore (~> 12.9.0) - - FirebaseCoreInternal (12.9.0): - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - FirebaseDatabase (12.9.0): - - FirebaseAppCheckInterop (~> 12.9.0) - - FirebaseCore (~> 12.9.0) - - FirebaseSharedSwift (~> 12.9.0) - - GoogleUtilities/UserDefaults (~> 8.1) - - leveldb-library (~> 1.22) - - FirebaseSharedSwift (12.9.0) - - FlutterMacOS (1.0.0) - - google_sign_in_ios (0.0.1): - - Flutter - - FlutterMacOS - - GoogleSignIn (~> 9.0) - - GTMSessionFetcher (>= 3.4.0) - - GoogleSignIn (9.1.0): - - AppAuth (~> 2.0) - - AppCheckCore (~> 11.0) - - GTMAppAuth (~> 5.0) - - GTMSessionFetcher/Core (~> 3.3) - - GoogleUtilities/AppDelegateSwizzler (8.1.0): - - GoogleUtilities/Environment - - GoogleUtilities/Logger - - GoogleUtilities/Network - - GoogleUtilities/Privacy - - GoogleUtilities/Environment (8.1.0): - - GoogleUtilities/Privacy - - GoogleUtilities/Logger (8.1.0): - - GoogleUtilities/Environment - - GoogleUtilities/Privacy - - GoogleUtilities/Network (8.1.0): - - GoogleUtilities/Logger - - "GoogleUtilities/NSData+zlib" - - GoogleUtilities/Privacy - - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (8.1.0)": - - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (8.1.0) - - GoogleUtilities/Reachability (8.1.0): - - GoogleUtilities/Logger - - GoogleUtilities/Privacy - - GoogleUtilities/UserDefaults (8.1.0): - - GoogleUtilities/Logger - - GoogleUtilities/Privacy - - GTMAppAuth (5.0.0): - - AppAuth/Core (~> 2.0) - - GTMSessionFetcher/Core (< 4.0, >= 3.3) - - GTMSessionFetcher (3.5.0): - - GTMSessionFetcher/Full (= 3.5.0) - - GTMSessionFetcher/Core (3.5.0) - - GTMSessionFetcher/Full (3.5.0): - - GTMSessionFetcher/Core - - leveldb-library (1.22.6) - - package_info_plus (0.0.1): - - FlutterMacOS - - PromisesObjC (2.4.0) - - share_plus (0.0.1): - - FlutterMacOS - - shared_preferences_foundation (0.0.1): - - Flutter - - FlutterMacOS - - url_launcher_macos (0.0.1): - - FlutterMacOS - -DEPENDENCIES: - - firebase_auth (from `Flutter/ephemeral/.symlinks/plugins/firebase_auth/macos`) - - firebase_core (from `Flutter/ephemeral/.symlinks/plugins/firebase_core/macos`) - - firebase_database (from `Flutter/ephemeral/.symlinks/plugins/firebase_database/macos`) - - FlutterMacOS (from `Flutter/ephemeral`) - - google_sign_in_ios (from `Flutter/ephemeral/.symlinks/plugins/google_sign_in_ios/darwin`) - - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) - - share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`) - - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) - - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) - -SPEC REPOS: - trunk: - - AppAuth - - AppCheckCore - - Firebase - - FirebaseAppCheckInterop - - FirebaseAuth - - FirebaseAuthInterop - - FirebaseCore - - FirebaseCoreExtension - - FirebaseCoreInternal - - FirebaseDatabase - - FirebaseSharedSwift - - GoogleSignIn - - GoogleUtilities - - GTMAppAuth - - GTMSessionFetcher - - leveldb-library - - PromisesObjC - -EXTERNAL SOURCES: - firebase_auth: - :path: Flutter/ephemeral/.symlinks/plugins/firebase_auth/macos - firebase_core: - :path: Flutter/ephemeral/.symlinks/plugins/firebase_core/macos - firebase_database: - :path: Flutter/ephemeral/.symlinks/plugins/firebase_database/macos - FlutterMacOS: - :path: Flutter/ephemeral - google_sign_in_ios: - :path: Flutter/ephemeral/.symlinks/plugins/google_sign_in_ios/darwin - package_info_plus: - :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos - share_plus: - :path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos - shared_preferences_foundation: - :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin - url_launcher_macos: - :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos - -SPEC CHECKSUMS: - AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063 - AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f - Firebase: 065f2bb395062046623036d8e6dc857bc2521d56 - firebase_auth: e48180de625a2d9c673f74790b4af512a08490ba - firebase_core: 82d678e9e10fc0b515ea1872dd446eee4722f144 - firebase_database: 48951221e94348c895e93539b640a594d9eda1b5 - FirebaseAppCheckInterop: 4bade10286cc977e516f75d2d8312cbdfa534789 - FirebaseAuth: 3a39f6436c21ebfd7919b698228b4f89ff94c23b - FirebaseAuthInterop: f8f6ff72dc24621906497fbe5cf3c42ee815e59c - FirebaseCore: 428912f751178b06bef0a1793effeb4a5e09a9b8 - FirebaseCoreExtension: e911052d59cd0da237a45d706fc0f81654f035c1 - FirebaseCoreInternal: b321eafae5362113bc182956fafc9922cfc77b72 - FirebaseDatabase: e6a01d759052888cf02c7cc11f6d5d34f3337cb5 - FirebaseSharedSwift: 9d2fa84a46676302b89dbd5e6e62bce2fe376909 - FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1 - google_sign_in_ios: 000870aa06da9b28d1d0bf7ef70ff0213059dd28 - GoogleSignIn: fcee2257188d5eda57a5e2b6a715550ffff9206d - GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 - GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238 - GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 - leveldb-library: cc8b8f8e013647a295ad3f8cd2ddf49a6f19be19 - package_info_plus: f0052d280d17aa382b932f399edf32507174e870 - PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - share_plus: 510bf0af1a42cd602274b4629920c9649c52f4cc - shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb - url_launcher_macos: f87a979182d112f911de6820aefddaf56ee9fbfd - -PODFILE CHECKSUM: 54d867c82ac51cbd61b565781b9fada492027009 - -COCOAPODS: 1.16.2 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index db08f2c..b7c005b 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,7 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 9315318BD4263AD94093C860 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C6463DBF49EFE9DEBF46A349 /* Pods_RunnerTests.framework */; }; - F71FF9265DAA1CAAF5AE2B76 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2A806AF9AA0E4894600049D /* Pods_Runner.framework */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; FF516DE862FFD5BD06DD357F /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 397442C89C1517357E9233EF /* GoogleService-Info.plist */; }; /* End PBXBuildFile section */ @@ -63,8 +62,6 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0873919D0B3F56AC74D43B27 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 26341F5CC2FADB3CF70CCF2B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -82,14 +79,9 @@ 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; 397442C89C1517357E9233EF /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; }; - 553D28D8BD05BCD6298B7C92 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 8D91D86CDEACF87F122D6FD0 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - B2A806AF9AA0E4894600049D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C3EDF0D60521D4D8188FF3BD /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - C6463DBF49EFE9DEBF46A349 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E69C695C4A5C9CF9F74B3153 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -97,7 +89,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9315318BD4263AD94093C860 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -105,7 +96,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F71FF9265DAA1CAAF5AE2B76 /* Pods_Runner.framework in Frameworks */, + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -139,7 +130,6 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - B025AC779BCD8125491D5225 /* Pods */, 397442C89C1517357E9233EF /* GoogleService-Info.plist */, ); sourceTree = ""; @@ -167,6 +157,7 @@ 33CEB47122A05771004F2AC0 /* Flutter */ = { isa = PBXGroup; children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, @@ -188,25 +179,9 @@ path = Runner; sourceTree = ""; }; - B025AC779BCD8125491D5225 /* Pods */ = { - isa = PBXGroup; - children = ( - 26341F5CC2FADB3CF70CCF2B /* Pods-Runner.debug.xcconfig */, - 8D91D86CDEACF87F122D6FD0 /* Pods-Runner.release.xcconfig */, - C3EDF0D60521D4D8188FF3BD /* Pods-Runner.profile.xcconfig */, - 0873919D0B3F56AC74D43B27 /* Pods-RunnerTests.debug.xcconfig */, - 553D28D8BD05BCD6298B7C92 /* Pods-RunnerTests.release.xcconfig */, - E69C695C4A5C9CF9F74B3153 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - B2A806AF9AA0E4894600049D /* Pods_Runner.framework */, - C6463DBF49EFE9DEBF46A349 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -218,7 +193,6 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 7E1FEFE835AA4B4955A4828E /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -237,14 +211,11 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 53FED50754063EB0ADB25389 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - C314B266AF281CB50FC492F8 /* [CP] Embed Pods Frameworks */, - 8B9A5FA6E7556DE6D94D4980 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -252,6 +223,9 @@ 33CC11202044C79F0003C045 /* PBXTargetDependency */, ); name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = Runner; productReference = 33CC10ED2044A3C60003C045 /* cards.app */; productType = "com.apple.product-type.application"; @@ -296,6 +270,9 @@ Base, ); mainGroup = 33CC10E42044A3C60003C045; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */, + ); productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -366,84 +343,6 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 53FED50754063EB0ADB25389 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 7E1FEFE835AA4B4955A4828E /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 8B9A5FA6E7556DE6D94D4980 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Copy Pods Resources"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - C314B266AF281CB50FC492F8 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -495,7 +394,6 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0873919D0B3F56AC74D43B27 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -510,7 +408,6 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 553D28D8BD05BCD6298B7C92 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -525,7 +422,6 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E69C695C4A5C9CF9F74B3153 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -818,6 +714,20 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 33CC10E52044A3C60003C045 /* Project object */; } diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..790214a --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,149 @@ +{ + "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/abseil-cpp-binary.git", + "state" : { + "revision" : "bbe8b69694d7873315fd3a4ad41efe043e1c07c5", + "version" : "1.2024072200.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/app-check.git", + "state" : { + "revision" : "61b85103a1aeed8218f17c794687781505fbbef5", + "version" : "11.2.0" + } + }, + { + "identity" : "appauth-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/openid/AppAuth-iOS.git", + "state" : { + "revision" : "145104f5ea9d58ae21b60add007c33c1cc0c948e", + "version" : "2.0.0" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk", + "state" : { + "revision" : "d10045cace0b4c335c4efa8f7df7e9a9fc5a7c60", + "version" : "12.13.0" + } + }, + { + "identity" : "google-ads-on-device-conversion-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", + "state" : { + "revision" : "19dffda9a9caf8d86570ff846535902d8509d7bf", + "version" : "3.5.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "c2c76bebcfbb90d90ea10599f934f9af160e1604", + "version" : "12.13.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", + "version" : "10.1.0" + } + }, + { + "identity" : "googlesignin-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleSignIn-iOS.git", + "state" : { + "revision" : "913b4005ea26aebe1c97d54e35ad82a515924c71", + "version" : "9.1.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "60da361632d0de02786f709bdc0c4df340f7613e", + "version" : "8.1.0" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/grpc-binary.git", + "state" : { + "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", + "version" : "1.69.1" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", + "version" : "3.5.0" + } + }, + { + "identity" : "gtmappauth", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GTMAppAuth.git", + "state" : { + "revision" : "56e0ccf09a6dd29dc7e68bdf729598240ca8aa16", + "version" : "5.0.0" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "040d087ac2267d2ddd4cca36c757d1c6a05fdbfe", + "version" : "101.0.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version" : "1.22.5" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" + } + } + ], + "version" : 2 +} diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 52af033..549360f 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + =3.11.1 <4.0.0" + dart: ">=3.12.0 <4.0.0" flutter: ">=3.38.4" diff --git a/pubspec.yaml b/pubspec.yaml index ec26b07..d83232d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,7 +19,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev version: 1.11.7 environment: - sdk: ^3.11.1 + sdk: ">=3.12.0 <4.0.0" # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -28,7 +28,7 @@ environment: # the latest version available on pub.dev. To see which dependencies have newer # versions available, run `flutter pub outdated`. dependencies: - animate_do: ^4.2.0 + animate_do: ^5.1.0 firebase_auth: ^6.2.0 firebase_core: ^4.5.0 firebase_database: ^12.1.4 @@ -41,8 +41,8 @@ dependencies: intl: ^0.20.2 logger: ^2.6.2 mockito: ^5.6.3 - package_info_plus: ^9.0.0 - share_plus: ^12.0.1 + package_info_plus: ^10.1.0 + share_plus: ^13.1.0 shared_preferences: ^2.5.4 the_splash: ^0.3.1 universal_platform: ^1.1.0 @@ -63,6 +63,8 @@ dev_dependencies: # The following section is specific to Flutter packages. flutter: + config: + enable-swift-package-manager: true # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. diff --git a/test/keepscore/golf_score_model_test.dart b/test/keepscore/golf_score_model_test.dart index 24787cf..0138da1 100644 --- a/test/keepscore/golf_score_model_test.dart +++ b/test/keepscore/golf_score_model_test.dart @@ -203,12 +203,9 @@ void main() { SharedPreferences.setMockInitialValues({}); final loadedModel = await GolfScoreModel.load(); - expect( - loadedModel.playerNames, - equals(['Player1', 'Player2', 'Player3', 'Player4']), - ); + expect(loadedModel.playerNames, equals(['P1', 'P2', 'P3'])); expect(loadedModel.scores.length, equals(1)); - expect(loadedModel.scores[0], equals([0, 0, 0, 0])); + expect(loadedModel.scores[0], equals([0, 0, 0])); }); test('should handle corrupted saved data gracefully', () async { @@ -220,12 +217,9 @@ void main() { final loadedModel = await GolfScoreModel.load(); - expect( - loadedModel.playerNames, - equals(['Player1', 'Player2', 'Player3', 'Player4']), - ); + expect(loadedModel.playerNames, equals(['P1', 'P2', 'P3'])); expect(loadedModel.scores.length, equals(1)); - expect(loadedModel.scores[0], equals([0, 0, 0, 0])); + expect(loadedModel.scores[0], equals([0, 0, 0])); }); }); diff --git a/test/keepscore/input_keyboard_test.dart b/test/keepscore/input_keyboard_test.dart index c651c58..96174be 100644 --- a/test/keepscore/input_keyboard_test.dart +++ b/test/keepscore/input_keyboard_test.dart @@ -211,5 +211,156 @@ void main() { expect(currentInput, '-12'); }); }); + + group('Alpha Keyboard', () { + testWidgets('should display all letter keys A–Z', ( + WidgetTester tester, + ) async { + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: InputKeyboard.alpha(onKeyPressed: mockOnKeyPressed), + ), + ), + ), + ); + + for (final letter in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('')) { + expect(find.text(letter), findsOneWidget); + } + }); + + testWidgets('should display SPACE and backspace keys', ( + WidgetTester tester, + ) async { + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: InputKeyboard.alpha(onKeyPressed: mockOnKeyPressed), + ), + ), + ), + ); + + expect(find.text('SPACE'), findsOneWidget); + expect(find.text(keyBackspace), findsOneWidget); + }); + + testWidgets('should not display numeric-only keys', ( + WidgetTester tester, + ) async { + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: InputKeyboard.alpha(onKeyPressed: mockOnKeyPressed), + ), + ), + ), + ); + + expect(find.text(keyChangeSign), findsNothing); + expect(find.text('0'), findsNothing); + }); + + testWidgets('should emit letter when key is tapped', ( + WidgetTester tester, + ) async { + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: InputKeyboard.alpha(onKeyPressed: mockOnKeyPressed), + ), + ), + ), + ); + + await tester.tap(find.text('H')); + await tester.pump(); + + expect(capturedKeys, ['H']); + }); + + testWidgets('should emit keySpace when SPACE is tapped', ( + WidgetTester tester, + ) async { + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: InputKeyboard.alpha(onKeyPressed: mockOnKeyPressed), + ), + ), + ), + ); + + await tester.tap(find.text('SPACE')); + await tester.pump(); + + expect(capturedKeys, [keySpace]); + }); + + testWidgets('should emit keyBackspace when backspace is tapped', ( + WidgetTester tester, + ) async { + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: InputKeyboard.alpha(onKeyPressed: mockOnKeyPressed), + ), + ), + ), + ); + + await tester.tap(find.text(keyBackspace)); + await tester.pump(); + + expect(capturedKeys, [keyBackspace]); + }); + + testWidgets('should handle name entry scenario', ( + WidgetTester tester, + ) async { + String name = ''; + + nameInputHandler(String key) { + if (key == keyBackspace) { + if (name.isNotEmpty) { + name = name.substring(0, name.length - 1); + } + } else if (key == keySpace) { + name += ' '; + } else { + name += key; + } + } + + await tester.pumpWidget( + MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: InputKeyboard.alpha(onKeyPressed: nameInputHandler), + ), + ), + ), + ); + + await tester.tap(find.text('J')); + await tester.pump(); + await tester.tap(find.text('P')); + await tester.pump(); + + expect(name, 'JP'); + + await tester.tap(find.text(keyBackspace)); + await tester.pump(); + + expect(name, 'J'); + }); + }); }); } diff --git a/test/models/game_model_test.dart b/test/models/game_model_test.dart index ee1e68f..a836071 100644 --- a/test/models/game_model_test.dart +++ b/test/models/game_model_test.dart @@ -89,11 +89,19 @@ void main() { }); test('MiniPut', () { - final gameModel3 = getNewInstanceFrenchMiniPut(); - gameModel3.players.first.hand.revealAllCards(); // note that there is a chance that all reveal cards adds up to zero - final int count = gameModel3.players.first.hand.getSumOfCardsForGolf(); - expect(count > 0, true); + // so retry until we get a non-zero hand (high probability succeeds quickly) + for (int attempt = 0; attempt < 10; attempt++) { + final gameModel3 = getNewInstanceFrenchMiniPut(); + gameModel3.players.first.hand.revealAllCards(); + final int count = gameModel3.players.first.hand.getSumOfCardsForGolf(); + if (count > 0) { + expect(count > 0, true); + return; + } + } + // If we reach here, all 10 attempts failed - this is extremely unlikely + fail('Unable to generate a non-zero hand after 10 attempts'); }); group('Game State Management', () { diff --git a/test/models/skyjo_game_model_test.dart b/test/models/skyjo_game_model_test.dart index 7b7e9cb..a466b29 100644 --- a/test/models/skyjo_game_model_test.dart +++ b/test/models/skyjo_game_model_test.dart @@ -68,18 +68,16 @@ void main() { CardModel(suit: '', rank: '10', value: 10), ); } - for (int i = 0; i < 9; i++) { + const List deterministicRanks = [1, 2, 3, 4, 5, 6, 7, 8, 9]; + for (int i = 0; i < deterministicRanks.length; i++) { + final int rank = deterministicRanks[i]; gameModel.players[0].hand.add( - CardModel( - suit: '', - rank: (random.nextInt(14) - 2).toString(), - value: i, - ), + CardModel(suit: '', rank: rank.toString(), value: rank), ); } - // Set the 2nd player hand to be fully revealed + // Set the 2nd player hand to be fully revealed. for (int i = 0; i < 12; i++) { - var rank = (random.nextInt(14) - 2); + final int rank = i + 20; gameModel.players[1].hand.add( CardModel( suit: '', diff --git a/test/widgets/helpers/edit_box_test.dart b/test/widgets/helpers/edit_box_test.dart new file mode 100644 index 0000000..69ab966 --- /dev/null +++ b/test/widgets/helpers/edit_box_test.dart @@ -0,0 +1,109 @@ +import 'package:cards/widgets/helpers/edit_box.dart'; +import 'package:cards/widgets/helpers/input_keyboard.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + group('EditBox virtual keyboard', () { + late TextEditingController controller; + + setUp(() { + controller = TextEditingController(); + }); + + tearDown(() { + controller.dispose(); + }); + + Widget buildSubject({Function(String)? onChanged}) { + return MaterialApp( + home: Scaffold( + body: SingleChildScrollView( + child: EditBox( + controller: controller, + onSubmitted: () {}, + errorStatus: '', + rightSideChild: null, + onChanged: onChanged, + ), + ), + ), + ); + } + + testWidgets('always displays virtual keyboard', ( + WidgetTester tester, + ) async { + await tester.pumpWidget(buildSubject()); + expect(find.byType(InputKeyboard), findsOneWidget); + }); + + testWidgets('appends letter to controller via virtual key', ( + WidgetTester tester, + ) async { + await tester.pumpWidget(buildSubject()); + await tester.tap(find.byType(TextField)); + await tester.pump(); + + await tester.tap(find.text('A')); + await tester.pump(); + + expect(controller.text, 'A'); + }); + + testWidgets('appends space via SPACE key', (WidgetTester tester) async { + controller.text = 'JP'; + await tester.pumpWidget(buildSubject()); + await tester.tap(find.byType(TextField)); + await tester.pump(); + + await tester.tap(find.text(keySpaceLabel)); + await tester.pump(); + + expect(controller.text, 'JP '); + }); + + testWidgets('removes last character via backspace key', ( + WidgetTester tester, + ) async { + controller.text = 'AB'; + await tester.pumpWidget(buildSubject()); + await tester.tap(find.byType(TextField)); + await tester.pump(); + + await tester.tap(find.text(keyBackspace)); + await tester.pump(); + + expect(controller.text, 'A'); + }); + + testWidgets('backspace on empty controller does nothing', ( + WidgetTester tester, + ) async { + await tester.pumpWidget(buildSubject()); + await tester.tap(find.byType(TextField)); + await tester.pump(); + + await tester.tap(find.text(keyBackspace)); + await tester.pump(); + + expect(controller.text, ''); + }); + + testWidgets('virtual key fires onChanged callback', ( + WidgetTester tester, + ) async { + final List changes = []; + await tester.pumpWidget(buildSubject(onChanged: changes.add)); + await tester.tap(find.byType(TextField)); + await tester.pump(); + + await tester.tap(find.text('J')); + await tester.pump(); + await tester.tap(find.text('P')); + await tester.pump(); + + expect(changes, ['J', 'JP']); + }); + }); +} diff --git a/tool/check.sh b/tool/check.sh index 84411b1..a9bdd25 100755 --- a/tool/check.sh +++ b/tool/check.sh @@ -33,9 +33,9 @@ echo --- Pub Outdated flutter pub outdated echo --- Format sources -dart format . 2>&1 | sed 's/^/ /' -dart fix --apply 2>&1 | sed 's/^/ /' - +dart format ./lib +dart format ./test + echo --- Analyze flutter analyze lib test --no-pub 2>&1 | sed 's/^/ /' @@ -49,5 +49,8 @@ echo --- fCheck mkdir -p "$PWD/.dart_tool/fcheck_pub_cache" export PUB_CACHE="$PWD/.dart_tool/fcheck_pub_cache" -dart pub global activate fcheck "1.1.2" > /dev/null -dart pub global run fcheck --svg --fix --list full . +dart pub global activate fcheck "1.3.2" > /dev/null +dart pub global run fcheck --svg --fix --list full \ + --exclude "**/app_localizations.dart" \ + --exclude "**/firebase_options.dart" \ + --exclude "**/firebase_options.example.dart" diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 33e2f5e..f88e800 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -11,6 +11,7 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST + jni ) set(PLUGIN_BUNDLED_LIBRARIES)