Full Code of Decron/Whitebox-Code-GPT for AI

main a5dbf33d4dd9 cached
345 files
317.4 KB
90.8k tokens
547 symbols
1 requests
Download .txt
Showing preview only (410K chars total). Download the full file or copy to clipboard to get everything.
Repository: Decron/Whitebox-Code-GPT
Branch: main
Commit: a5dbf33d4dd9
Files: 345
Total size: 317.4 KB

Directory structure:
gitextract_6tcd7rgx/

├── .github/
│   └── FUNDING.yml
├── C++ GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       └── standards
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Firebase GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       └── standards
├── Flutter GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       ├── examples/
│       │   ├── .github/
│       │   │   ├── CODEOWNERS
│       │   │   ├── DOCS_ISSUE_TEMPLATE.md
│       │   │   ├── FUNDING.yml
│       │   │   ├── ISSUE_TEMPLATE/
│       │   │   │   ├── bug_report.md
│       │   │   │   ├── build.md
│       │   │   │   ├── chore.md
│       │   │   │   ├── ci.md
│       │   │   │   ├── config.yml
│       │   │   │   ├── documentation.md
│       │   │   │   ├── feature_request.md
│       │   │   │   ├── performance.md
│       │   │   │   ├── refactor.md
│       │   │   │   ├── revert.md
│       │   │   │   ├── style.md
│       │   │   │   └── test.md
│       │   │   ├── PULL_REQUEST_TEMPLATE.md
│       │   │   └── workflows/
│       │   │       ├── angular_bloc.yaml
│       │   │       ├── angular_dart_examples.yaml
│       │   │       ├── bloc.yaml
│       │   │       ├── bloc_concurrency.yaml
│       │   │       ├── bloc_test.yaml
│       │   │       ├── bloc_tools.yaml
│       │   │       ├── build.yaml
│       │   │       ├── docs.yaml
│       │   │       ├── flutter_bloc.yaml
│       │   │       ├── flutter_examples.yaml
│       │   │       ├── hydrated_bloc.yaml
│       │   │       └── replay_bloc.yaml
│       │   ├── .gitignore
│       │   └── flutter_bloc/
│       │       ├── angular_counter/
│       │       │   ├── .gitignore
│       │       │   └── counter_bloc.dart
│       │       ├── flutter_bloc_with_stream/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── bloc/
│       │       │   │   ├── ticker_bloc.dart
│       │       │   │   ├── ticker_event.dart
│       │       │   │   └── ticker_state.dart
│       │       │   ├── main.dart
│       │       │   └── ticker/
│       │       │       └── ticker.dart
│       │       ├── flutter_complex_list/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── complex_list/
│       │       │   │   ├── complex_list.dart
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── complex_list_cubit.dart
│       │       │   │   │   └── complex_list_state.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── item.dart
│       │       │   │   │   └── models.dart
│       │       │   │   └── view/
│       │       │   │       ├── complex_list_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── main.dart
│       │       │   ├── repository.dart
│       │       │   └── simple_bloc_observer.dart
│       │       ├── flutter_counter/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── counter/
│       │       │   │   ├── counter.dart
│       │       │   │   ├── cubit/
│       │       │   │   │   └── counter_cubit.dart
│       │       │   │   └── view/
│       │       │   │       ├── counter_page.dart
│       │       │   │       ├── counter_view.dart
│       │       │   │       └── view.dart
│       │       │   ├── counter_observer.dart
│       │       │   └── main.dart
│       │       ├── flutter_dynamic_form/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── main.dart
│       │       │   ├── new_car/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── new_car_bloc.dart
│       │       │   │   │   ├── new_car_event.dart
│       │       │   │   │   └── new_car_state.dart
│       │       │   │   ├── new_car.dart
│       │       │   │   └── view/
│       │       │   │       └── new_car_page.dart
│       │       │   └── new_car_repository.dart
│       │       ├── flutter_firebase_login/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app/
│       │       │   │   ├── app.dart
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── app_bloc.dart
│       │       │   │   │   ├── app_event.dart
│       │       │   │   │   └── app_state.dart
│       │       │   │   ├── bloc_observer.dart
│       │       │   │   ├── routes/
│       │       │   │   │   └── routes.dart
│       │       │   │   └── view/
│       │       │   │       └── app.dart
│       │       │   ├── generated_plugin_registrant.dart
│       │       │   ├── home/
│       │       │   │   ├── home.dart
│       │       │   │   ├── view/
│       │       │   │   │   └── home_page.dart
│       │       │   │   └── widgets/
│       │       │   │       ├── avatar.dart
│       │       │   │       └── widgets.dart
│       │       │   ├── login/
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── login_cubit.dart
│       │       │   │   │   └── login_state.dart
│       │       │   │   ├── login.dart
│       │       │   │   └── view/
│       │       │   │       ├── login_form.dart
│       │       │   │       ├── login_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── main.dart
│       │       │   ├── sign_up/
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── sign_up_cubit.dart
│       │       │   │   │   └── sign_up_state.dart
│       │       │   │   ├── sign_up.dart
│       │       │   │   └── view/
│       │       │   │       ├── sign_up_form.dart
│       │       │   │       ├── sign_up_page.dart
│       │       │   │       └── view.dart
│       │       │   └── theme.dart
│       │       ├── flutter_form_validation/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── bloc/
│       │       │   │   ├── my_form_bloc.dart
│       │       │   │   ├── my_form_event.dart
│       │       │   │   └── my_form_state.dart
│       │       │   ├── main.dart
│       │       │   └── models/
│       │       │       ├── email.dart
│       │       │       ├── models.dart
│       │       │       └── password.dart
│       │       ├── flutter_infinite_list/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── main.dart
│       │       │   ├── posts/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── post_bloc.dart
│       │       │   │   │   ├── post_event.dart
│       │       │   │   │   └── post_state.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── models.dart
│       │       │   │   │   └── post.dart
│       │       │   │   ├── posts.dart
│       │       │   │   ├── view/
│       │       │   │   │   ├── posts_list.dart
│       │       │   │   │   ├── posts_page.dart
│       │       │   │   │   └── view.dart
│       │       │   │   └── widgets/
│       │       │   │       ├── bottom_loader.dart
│       │       │   │       ├── post_list_item.dart
│       │       │   │       └── widgets.dart
│       │       │   └── simple_bloc_observer.dart
│       │       ├── flutter_login/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── authentication/
│       │       │   │   ├── authentication.dart
│       │       │   │   └── bloc/
│       │       │   │       ├── authentication_bloc.dart
│       │       │   │       ├── authentication_event.dart
│       │       │   │       └── authentication_state.dart
│       │       │   ├── home/
│       │       │   │   ├── home.dart
│       │       │   │   └── view/
│       │       │   │       └── home_page.dart
│       │       │   ├── login/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── login_bloc.dart
│       │       │   │   │   ├── login_event.dart
│       │       │   │   │   └── login_state.dart
│       │       │   │   ├── login.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── models.dart
│       │       │   │   │   ├── password.dart
│       │       │   │   │   └── username.dart
│       │       │   │   └── view/
│       │       │   │       ├── login_form.dart
│       │       │   │       ├── login_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── main.dart
│       │       │   └── splash/
│       │       │       ├── splash.dart
│       │       │       └── view/
│       │       │           └── splash_page.dart
│       │       ├── flutter_shopping_cart/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── cart/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── cart_bloc.dart
│       │       │   │   │   ├── cart_event.dart
│       │       │   │   │   └── cart_state.dart
│       │       │   │   ├── cart.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── cart.dart
│       │       │   │   │   └── models.dart
│       │       │   │   └── view/
│       │       │   │       └── cart_page.dart
│       │       │   ├── catalog/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── catalog_bloc.dart
│       │       │   │   │   ├── catalog_event.dart
│       │       │   │   │   └── catalog_state.dart
│       │       │   │   ├── catalog.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── catalog.dart
│       │       │   │   │   ├── item.dart
│       │       │   │   │   └── models.dart
│       │       │   │   └── view/
│       │       │   │       └── catalog_page.dart
│       │       │   ├── main.dart
│       │       │   ├── shopping_repository.dart
│       │       │   └── simple_bloc_observer.dart
│       │       ├── flutter_timer/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── main.dart
│       │       │   ├── ticker.dart
│       │       │   └── timer/
│       │       │       ├── bloc/
│       │       │       │   ├── timer_bloc.dart
│       │       │       │   ├── timer_event.dart
│       │       │       │   └── timer_state.dart
│       │       │       ├── timer.dart
│       │       │       └── view/
│       │       │           └── timer_page.dart
│       │       ├── flutter_todos/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── .vscode/
│       │       │   │   └── launch.json
│       │       │   ├── app/
│       │       │   │   ├── app.dart
│       │       │   │   └── app_bloc_observer.dart
│       │       │   ├── bootstrap.dart
│       │       │   ├── edit_todo/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── edit_todo_bloc.dart
│       │       │   │   │   ├── edit_todo_event.dart
│       │       │   │   │   └── edit_todo_state.dart
│       │       │   │   ├── edit_todo.dart
│       │       │   │   └── view/
│       │       │   │       ├── edit_todo_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── generated_plugin_registrant.dart
│       │       │   ├── home/
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── home_cubit.dart
│       │       │   │   │   └── home_state.dart
│       │       │   │   ├── home.dart
│       │       │   │   └── view/
│       │       │   │       ├── home_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── l10n/
│       │       │   │   ├── arb/
│       │       │   │   │   └── app_en.arb
│       │       │   │   └── l10n.dart
│       │       │   ├── main_development.dart
│       │       │   ├── main_production.dart
│       │       │   ├── main_staging.dart
│       │       │   ├── stats/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── stats_bloc.dart
│       │       │   │   │   ├── stats_event.dart
│       │       │   │   │   └── stats_state.dart
│       │       │   │   ├── stats.dart
│       │       │   │   └── view/
│       │       │   │       ├── stats_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── theme/
│       │       │   │   └── theme.dart
│       │       │   └── todos_overview/
│       │       │       ├── bloc/
│       │       │       │   ├── todos_overview_bloc.dart
│       │       │       │   ├── todos_overview_event.dart
│       │       │       │   └── todos_overview_state.dart
│       │       │       ├── models/
│       │       │       │   ├── models.dart
│       │       │       │   └── todos_view_filter.dart
│       │       │       ├── todos_overview.dart
│       │       │       ├── view/
│       │       │       │   ├── todos_overview_page.dart
│       │       │       │   └── view.dart
│       │       │       └── widgets/
│       │       │           ├── todo_list_tile.dart
│       │       │           ├── todos_overview_filter_button.dart
│       │       │           ├── todos_overview_options_button.dart
│       │       │           └── widgets.dart
│       │       ├── flutter_weather/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── main.dart
│       │       │   ├── search/
│       │       │   │   ├── search.dart
│       │       │   │   └── view/
│       │       │   │       └── search_page.dart
│       │       │   ├── settings/
│       │       │   │   ├── settings.dart
│       │       │   │   └── view/
│       │       │   │       └── settings_page.dart
│       │       │   ├── theme/
│       │       │   │   ├── cubit/
│       │       │   │   │   └── theme_cubit.dart
│       │       │   │   └── theme.dart
│       │       │   ├── weather/
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── weather_cubit.dart
│       │       │   │   │   ├── weather_cubit.g.dart
│       │       │   │   │   └── weather_state.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── models.dart
│       │       │   │   │   ├── weather.dart
│       │       │   │   │   └── weather.g.dart
│       │       │   │   ├── view/
│       │       │   │   │   └── weather_page.dart
│       │       │   │   ├── weather.dart
│       │       │   │   └── widgets/
│       │       │   │       ├── weather_empty.dart
│       │       │   │       ├── weather_error.dart
│       │       │   │       ├── weather_loading.dart
│       │       │   │       ├── weather_populated.dart
│       │       │   │       └── widgets.dart
│       │       │   └── weather_bloc_observer.dart
│       │       └── flutter_wizard/
│       │           ├── .gitignore
│       │           ├── .metadata
│       │           ├── bloc/
│       │           │   ├── profile_wizard_bloc.dart
│       │           │   ├── profile_wizard_event.dart
│       │           │   └── profile_wizard_state.dart
│       │           └── main.dart
│       ├── examples.txt
│       └── standards
├── Git Assistant/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       └── standards
├── LICENSE
├── Node_js GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       └── standards
├── Python GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── MatPlotLibAssistant/
│   │   ├── .github/
│   │   │   └── FUNDING.yml
│   │   ├── Conversation Starters
│   │   ├── Instructions
│   │   ├── actions
│   │   └── knowledge/
│   │       ├── Examples/
│   │       │   ├── 3D/
│   │       │   │   ├── scatter3d_simple.py
│   │       │   │   ├── surface3d_simple.py
│   │       │   │   ├── trisurf3d_simple.py
│   │       │   │   ├── voxels_simple.py
│   │       │   │   └── wire3d_simple.py
│   │       │   ├── arrays/
│   │       │   │   ├── barbs.py
│   │       │   │   ├── contour.py
│   │       │   │   ├── contourf.py
│   │       │   │   ├── imshow.py
│   │       │   │   ├── pcolormesh.py
│   │       │   │   ├── quiver.py
│   │       │   │   └── streamplot.py
│   │       │   ├── basic/
│   │       │   │   ├── bar.py
│   │       │   │   ├── fill_between.py
│   │       │   │   ├── plot.py
│   │       │   │   ├── scatter_plot.py
│   │       │   │   ├── stackplot.py
│   │       │   │   ├── stairs.py
│   │       │   │   └── stem.py
│   │       │   ├── stats/
│   │       │   │   ├── boxplot_plot.py
│   │       │   │   ├── ecdf.py
│   │       │   │   ├── errorbar_plot.py
│   │       │   │   ├── eventplot.py
│   │       │   │   ├── hexbin.py
│   │       │   │   ├── hist2d.py
│   │       │   │   ├── hist_plot.py
│   │       │   │   ├── pie.py
│   │       │   │   └── violin.py
│   │       │   └── unstructured/
│   │       │       ├── tricontour.py
│   │       │       ├── tricontourf.py
│   │       │       ├── tripcolor.py
│   │       │       └── triplot.py
│   │       └── standards.txt
│   ├── actions
│   └── knowledge/
│       ├── advanced topics
│       ├── standards
│       └── subAssistants.txt
├── README.md
├── SECURITY.md
├── inventory.json
├── regex/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       ├── ECMA
│       ├── Go
│       ├── Java 8
│       ├── PCRE2
│       ├── Python
│       ├── Rust
│       ├── javascript
│       ├── net
│       └── standards
└── template/
    ├── .github/
    │   └── FUNDING.yml
    ├── Conversation Starters
    ├── Instructions
    ├── actions
    └── knowledge/
        └── standards

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

custom: ['https://www.paypal.com/paypalme/seller/Hadrio/dashboard']


================================================
FILE: C++ GPT/.github/FUNDING.yml
================================================
# These are supported funding model platforms

custom: ['https://www.paypal.com/paypalme/seller/Hadrio/dashboard']


================================================
FILE: C++ GPT/Conversation Starters
================================================
How do I optimize this C++ code?
Explain C++ polymorphism.
What's wrong with my C++ function?
Best practices for memory management in C++?

================================================
FILE: C++ GPT/Instructions
================================================
The GPT is an expert in C++ programming. It can provide detailed and accurate responses on C++ concepts, code optimization, debugging, and best practices. It should guide users in understanding complex C++ topics and offer solutions to coding problems. The GPT should avoid giving incorrect or outdated information and should not engage in topics outside its expertise in C++ programming.

================================================
FILE: C++ GPT/actions
================================================
!! In progress. This file is not live yet

{
  "openapi": "3.1.0",
  "info": {
    "title": "GitHub Code Repository Data",
    "description": "Accesses code examples from the specified GitHub repository.",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://api.github.com"
    }
  ],
  "paths": {
    "/repos/{owner}/{repo}/contents/{path}": {
      "get": {
        "description": "Retrieve file content from a GitHub repository",
        "operationId": "GetRepoContent",
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "description": "Owner of the repository",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repo",
            "in": "path",
            "description": "Repository name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "File path within the repository",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "deprecated": false
      }
    }
  },
  "components": {
    "schemas": {}
  }
}


================================================
FILE: C++ GPT/knowledge/standards
================================================
This guide contains standards for the assistant to adhere to.
Adhering to standards is suggested but not required if it leads to poor solutions.
The specifications of the user override the standards.


================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
  overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
  advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
  address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
hadriogroup@gmail.com.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior,  harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.


================================================
FILE: CONTRIBUTING.md
================================================
# Contribution Guidelines

Thank you for considering contributing to our project! We highly value your input and appreciate your help in making this project even better. Before you get started, please take a moment to read through these contribution guidelines.

## How to Contribute

1. **Fork the Repository**: Click the "Fork" button at the top right of this repository to create a copy in your own GitHub account.

2. **Clone the Repository**: Clone your forked repository to your local machine:

   ```sh
   git clone https://github.com/Decron/Whitebox-Code-GPT.git

3. **Suggest new assistant**: If there is an assistant you would like to take ownership of, open an issue requesting custody, or create a pull request which adds the knowledge files of an existing assistant you'd like to include. Include links to conversation history that demostrates effectiveness.

4. Lastly, we'll help build your assistants for you:
   * If you're requesting somebody help with the creation of a new assistant, open an issue titled "New GPT request: <title>"
   * If you'd like us to add a feature to an existing assistant, open a discussion post with your suggested new features.
   
5. If you have a significant issue with an existing assistant, open an issue [here](https://github.com/Decron/Whitebox-Code-GPT/issues) and describe what happened. Include links to conversation history if possible.


================================================
FILE: Firebase GPT/.github/FUNDING.yml
================================================
# These are supported funding model platforms

custom: ['https://www.paypal.com/paypalme/seller/Hadrio/dashboard']


================================================
FILE: Firebase GPT/Conversation Starters
================================================
How do I integrate Firebase Authentication?
Tell me about Firebase Cloud Functions.
Best practices for Firebase Realtime Database?
Troubleshooting Firebase Firestore issues?

================================================
FILE: Firebase GPT/Instructions
================================================
This GPT is an expert in Firebase plugins and integration, providing detailed assistance and guidance on implementing and troubleshooting Firebase features in various software projects. It will offer step-by-step instructions, best practices, and troubleshooting tips tailored to specific Firebase-related queries. The GPT will focus on clarifying complex concepts, making Firebase integration more accessible to users with varying levels of experience. It will avoid providing outdated information, focus on Firebase's current capabilities, and ensure to clarify when additional context is needed for a query. The GPT's responses will be technical, accurate, and up-to-date, reflecting a deep understanding of Firebase and its ecosystem.

================================================
FILE: Firebase GPT/actions
================================================
!! In progress. This file is not live yet

{
  "openapi": "3.1.0",
  "info": {
    "title": "GitHub Code Repository Data",
    "description": "Accesses code examples from the specified GitHub repository.",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://api.github.com"
    }
  ],
  "paths": {
    "/repos/{owner}/{repo}/contents/{path}": {
      "get": {
        "description": "Retrieve file content from a GitHub repository",
        "operationId": "GetRepoContent",
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "description": "Owner of the repository",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repo",
            "in": "path",
            "description": "Repository name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "File path within the repository",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "deprecated": false
      }
    }
  },
  "components": {
    "schemas": {}
  }
}


================================================
FILE: Firebase GPT/knowledge/standards
================================================
This guide contains standards for the assistant to adhere to.
Adhering to standards is suggested but not required if it leads to poor solutions.
The specifications of the user override the standards.


================================================
FILE: Flutter GPT/.github/FUNDING.yml
================================================
# These are supported funding model platforms

custom: ['https://www.paypal.com/paypalme/seller/Hadrio/dashboard']


================================================
FILE: Flutter GPT/Conversation Starters
================================================
Create a new page
How do I start with Flutter?
Create a Stateful widget & constructor
Tips for optimizing Flutter performance?
Create an app template 


================================================
FILE: Flutter GPT/Instructions
================================================
You are Flutter GPT, a specialized assistant for Flutter development queries. Your role is to provide expert advice and solutions for Flutter-related issues. If a user presents a suboptimal solution, you suggest more efficient approaches. Your responses are informative, concise.

If commanded to create a certain class or widget, do so without commentary if possible

Remember to pay attention to general concepts that users may frequently overlook, such as null safety but don't bring it up unless its relevant.

Despite being specialist, you may assist with any other queries the user has. If you and the user cannot solve an issue together, you may direct them to the Whitebox Inventory Assistant, which catalogues other specialists for various technologies. The inventory assistant is located at https://chat.openai.com/g/g-oBpMxDEHp-inventory-assistant


================================================
FILE: Flutter GPT/actions
================================================
!! In progress. This file is not live yet

{
  "openapi": "3.1.0",
  "info": {
    "title": "GitHub Code Repository Data",
    "description": "Accesses code examples from the specified GitHub repository.",
    "version": "v1.0.0"
  },
  "servers": [
    {
      "url": "https://api.github.com"
    }
  ],
  "paths": {
    "/repos/{owner}/{repo}/contents/{path}": {
      "get": {
        "description": "Retrieve file content from a GitHub repository",
        "operationId": "GetRepoContent",
        "parameters": [
          {
            "name": "owner",
            "in": "path",
            "description": "Owner of the repository",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repo",
            "in": "path",
            "description": "Repository name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "path",
            "in": "path",
            "description": "File path within the repository",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "deprecated": false
      }
    }
  },
  "components": {
    "schemas": {}
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/.github/CODEOWNERS
================================================
# Every request must be reviewed and accepted by:

*	@felangel

================================================
FILE: Flutter GPT/knowledge/examples/.github/DOCS_ISSUE_TEMPLATE.md
================================================
---
title: "[Translations] Update docs"
labels: documentation, translation
---
Update Translations to include changes from {{ sha }}.

- [ ] az (@KenanYusubov)
- [ ] cs
- [ ] es (@KingDarBoja or @Classy-Bear)
- [ ] fr (@sachaarbonel or @StefanYYC)
- [ ] jp (@dshukertjr)
- [ ] ko-kr (@zoomKoding)
- [ ] pt-br (@rodrigobastosv or @alisson-suzigan)
- [ ] ru (@basilex)
- [ ] zh-cn (@jakecastelli)


================================================
FILE: Flutter GPT/knowledge/examples/.github/FUNDING.yml
================================================
github: [felangel]
patreon: felangel
open_collective: bloc


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug Report
about: Create a report to help us improve
title: "fix: "
labels: bug
---

**Description**
A clear and concise description of what the bug is.

**Steps To Reproduce**

1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected Behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Additional Context**
Add any other context about the problem here.


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/build.md
================================================
---
name: Build System
about: Changes that affect the build system or external dependencies
title: "build: "
labels: build
---

**Description**

Describe what changes need to be done to the build system and why


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/chore.md
================================================
---
name: Chore
about: Other changes that don't modify src or test files
title: "chore: "
labels: chore
---

**Description**

Clearly describe what change is needed and why. If this changes code then please use another issue type.


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/ci.md
================================================
---
name: Continuous Integration
about: Changes to the CI configuration files and scripts
title: "ci: "
labels: ci
---

**Description**

Describe what changes need to be done to the ci/cd system and why


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false

================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/documentation.md
================================================
---
name: Documentation
about: Improve the documentation so all collaborators have a common understanding
title: "docs: "
labels: documentation
---

**Description**

Clearly describe what documentation you are looking to add or improve.


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature Request
about: A new feature to be added to the project
title: "feat: "
labels: feature
---

**Description**

A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Desired Solution**

A clear and concise description of what you want to happen.

**Alternatives Considered**

A clear and concise description of any alternative solutions or features you've considered.

**Additional Context**

Add any other context or screenshots about the feature request go here.


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/performance.md
================================================
---
name: Performance Update
about: A code change that improves performance
title: "perf: "
labels: performance
---

**Description**

Clearly describe what code needs to be changed and what the performance impact is going to be.


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/refactor.md
================================================
---
name: Refactor
about: A code change that neither fixes a bug nor adds a feature
title: "refactor: "
labels: refactor
---

**Description**

Clearly describe what needs to be refactored any why. Please provide links to related issues (bugs or upcoming features) in order to help prioritize.


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/revert.md
================================================
---
name: Revert Commit
about: Reverts a previous commit
title: "revert: "
labels: revert
---

**Description**

Provide a link to a PR/Commit that you are looking to revert and why.


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/style.md
================================================
---
name: Style Changes
about: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
title: "style: "
labels: style
---

**Description**

Clearly describe what you are looking to change and why.


================================================
FILE: Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/test.md
================================================
---
name: Test
about: Adding missing tests or correcting existing tests
title: "test: "
labels: test
---

**Description**

List out the tests that need to be added or changed. Please also include any information as to why this was not covered in the past.


================================================
FILE: Flutter GPT/knowledge/examples/.github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
  Thanks for contributing!

  Provide a description of your changes below and a general summary in the title

  Please look at the following checklist to ensure that your PR can be accepted quickly:
-->

## Status

**READY/IN DEVELOPMENT/HOLD**

## Breaking Changes

YES | NO

## Description

<!--- Describe your changes in detail -->

## Type of Change

<!--- Put an `x` in all the boxes that apply: -->

- [ ] ✨ New feature (non-breaking change which adds functionality)
- [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
- [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
- [ ] 🧹 Code refactor
- [ ] ✅ Build configuration change
- [ ] 📝 Documentation
- [ ] 🗑️ Chore


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/angular_bloc.yaml
================================================
name: angular_bloc

on:
  push:
    paths:
      - "packages/angular_bloc/**"
      - ".github/workflows/angular_bloc.yaml"

  pull_request:
    paths:
      - "packages/angular_bloc/**"
      - ".github/workflows/angular_bloc.yaml"

jobs:
  build:
    defaults:
      run:
        working-directory: packages/angular_bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: dart-lang/setup-dart@v1
        with:
          sdk: 3.0.0

      - name: Install Dependencies
        run: dart pub get

      - name: Format
        run: dart format --set-exit-if-changed .

      - name: Analyze
        run: dart analyze --fatal-infos --fatal-warnings .

      - name: Run Tests
        run: |
          dart pub global activate coverage 1.2.0
          dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib

      - name: Check Code Coverage
        uses: VeryGoodOpenSource/very_good_coverage@v2
        with:
          path: packages/angular_bloc/coverage/lcov.info

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  pana:
    defaults:
      run:
        working-directory: packages/angular_bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: |
          flutter packages get
          flutter pub global activate pana
          sudo apt-get install webp

      - name: Verify Pub Score
        run: ../../tool/verify_pub_score.sh 110


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/angular_dart_examples.yaml
================================================
name: angular_dart_examples

on:
  push:
    paths:
      - ".github/workflows/angular_dart_examples.yaml"
      - "packages/angular_bloc/**"
      - "examples/angular_counter/**"
      - "examples/github_search/common_github_search/**"
      - "examples/github_search/angular_github_search/**"

  pull_request:
    paths:
      - ".github/workflows/angular_dart_examples.yaml"
      - "packages/angular_bloc/**"
      - "examples/angular_counter/**"
      - "examples/github_search/common_github_search/**"
      - "examples/github_search/angular_github_search/**"

jobs:
  examples:
    strategy:
      matrix:
        folder:
          [
            "examples/angular_counter",
            "examples/github_search/common_github_search",
            "examples/github_search/angular_github_search",
          ]
      fail-fast: false
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - uses: dart-lang/setup-dart@v1
        with:
          sdk: 3.0.0

      - name: Install Dependencies
        working-directory: ${{ matrix.folder }}
        run: dart pub get

      - name: Install webdev
        if: matrix.folder != 'examples/github_search/common_github_search'
        working-directory: ${{ matrix.folder }}
        run: |
          dart pub global activate webdev
          webdev build

      - name: Format
        working-directory: ${{ matrix.folder }}
        run: dart format --set-exit-if-changed .

      - name: Analyze
        working-directory: ${{ matrix.folder }}
        run: dart analyze --fatal-infos --fatal-warnings .

      - name: Run tests
        working-directory: ${{ matrix.folder }}
        run: |
          if [ -d "test" ]; then
            dart run build_runner test --fail-on-severe
          fi

  build:
    needs: [examples]
    runs-on: ubuntu-latest
    steps:
      - name: noop
        run: echo 'noop'


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/bloc.yaml
================================================
name: bloc

on:
  push:
    paths:
      - "packages/bloc/**"
      - ".github/workflows/bloc.yaml"

  pull_request:
    paths:
      - "packages/bloc/**"
      - ".github/workflows/bloc.yaml"

jobs:
  build:
    defaults:
      run:
        working-directory: packages/bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: dart-lang/setup-dart@v1

      - name: Install Dependencies
        run: dart pub get

      - name: Format
        run: dart format --set-exit-if-changed .

      - name: Analyze
        run: dart analyze --fatal-infos --fatal-warnings .

      - name: Run Tests
        run: |
          dart pub global activate coverage 1.2.0
          dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib

      - name: Check Code Coverage
        uses: VeryGoodOpenSource/very_good_coverage@v2
        with:
          path: packages/bloc/coverage/lcov.info

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  pana:
    defaults:
      run:
        working-directory: packages/bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: |
          flutter packages get
          flutter pub global activate pana
          sudo apt-get install webp

      - name: Verify Pub Score
        run: ../../tool/verify_pub_score.sh


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/bloc_concurrency.yaml
================================================
name: bloc_concurrency

on:
  push:
    paths:
      - "packages/bloc_concurrency/**"
      - ".github/workflows/bloc_concurrency.yaml"

  pull_request:
    paths:
      - "packages/bloc_concurrency/**"
      - ".github/workflows/bloc_concurrency.yaml"

jobs:
  build:
    defaults:
      run:
        working-directory: packages/bloc_concurrency

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: dart-lang/setup-dart@v1

      - name: Install Dependencies
        run: dart pub get

      - name: Format
        run: dart format --set-exit-if-changed .

      - name: Analyze
        run: dart analyze --fatal-infos --fatal-warnings .

      - name: Run Tests
        run: |
          dart pub global activate coverage 1.2.0
          dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib

      - name: Check Code Coverage
        uses: VeryGoodOpenSource/very_good_coverage@v2
        with:
          path: packages/bloc_concurrency/coverage/lcov.info

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  pana:
    defaults:
      run:
        working-directory: packages/bloc_concurrency

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: |
          flutter packages get
          flutter pub global activate pana
          sudo apt-get install webp

      - name: Verify Pub Score
        run: ../../tool/verify_pub_score.sh


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/bloc_test.yaml
================================================
name: bloc_test

on:
  push:
    paths:
      - "packages/bloc_test/**"
      - ".github/workflows/bloc_test.yaml"

  pull_request:
    paths:
      - "packages/bloc_test/**"
      - ".github/workflows/bloc_test.yaml"

jobs:
  build:
    defaults:
      run:
        working-directory: packages/bloc_test

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: dart-lang/setup-dart@v1

      - name: Install Dependencies
        run: dart pub get

      - name: Format
        run: dart format --set-exit-if-changed .

      - name: Analyze
        run: dart analyze --fatal-infos --fatal-warnings .

      - name: Run Tests
        run: |
          dart pub global activate coverage 1.2.0
          dart test --coverage=coverage && dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json --report-on=lib

      - name: Check Code Coverage
        uses: VeryGoodOpenSource/very_good_coverage@v2
        with:
          path: packages/bloc_test/coverage/lcov.info

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  pana:
    defaults:
      run:
        working-directory: packages/bloc_test

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: |
          flutter packages get
          flutter pub global activate pana
          sudo apt-get install webp

      - name: Verify Pub Score
        run: ../../tool/verify_pub_score.sh


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/bloc_tools.yaml
================================================
name: bloc_tools

on:
  pull_request:
    paths:
      - ".github/workflows/bloc_tools.yaml"
      - "packages/bloc_tools/**"
  push:
    branches:
      - master
    paths:
      - ".github/workflows/bloc_tools.yaml"
      - "packages/bloc_tools/**"

jobs:
  build:
    defaults:
      run:
        working-directory: packages/bloc_tools

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: flutter packages get

      - name: Format
        run: dart format --set-exit-if-changed .

      - name: Analyze
        run: flutter analyze .

      - name: Verify Build
        run: flutter pub run test --run-skipped -t pull-request-only

      - name: Run Tests
        run: flutter test -x pull-request-only --no-pub --coverage --test-randomize-ordering-seed random

      - name: Check Code Coverage
        uses: VeryGoodOpenSource/very_good_coverage@v2
        with:
          path: packages/bloc_tools/coverage/lcov.info

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  pana:
    defaults:
      run:
        working-directory: packages/bloc_tools

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: |
          flutter packages get
          flutter pub global activate pana

      - name: Verify Pub Score
        run: ../../tool/verify_pub_score.sh


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/build.yaml
================================================
name: build

on:
  pull_request:
    branches:
      - master

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: noop
        run: echo 'noop'

  semantic_pull_request:
    uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/semantic_pull_request.yml@v1

  pana:
    runs-on: ubuntu-latest
    steps:
      - name: noop
        run: echo 'noop'


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/docs.yaml
================================================
name: docs

on:
  push:
    branches:
    - master
    paths:
    - '.github/workflows/docs.yaml'
    - 'README.md'
    - 'docs/*'

jobs:  
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: JasonEtco/create-an-issue@v2
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          filename: .github/DOCS_ISSUE_TEMPLATE.md


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/flutter_bloc.yaml
================================================
name: flutter_bloc

on:
  push:
    paths:
      - "packages/flutter_bloc/**"
      - ".github/workflows/flutter_bloc.yaml"

  pull_request:
    paths:
      - "packages/flutter_bloc/**"
      - ".github/workflows/flutter_bloc.yaml"

jobs:
  build:
    defaults:
      run:
        working-directory: packages/flutter_bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: flutter packages get

      - name: Format
        run: dart format --set-exit-if-changed .

      - name: Analyze
        run: flutter analyze lib test example

      - name: Run tests
        run: flutter test --no-pub --coverage --test-randomize-ordering-seed random

      - name: Check Code Coverage
        uses: VeryGoodOpenSource/very_good_coverage@v2
        with:
          path: packages/flutter_bloc/coverage/lcov.info

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  pana:
    defaults:
      run:
        working-directory: packages/flutter_bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: |
          flutter packages get
          flutter pub global activate pana
          sudo apt-get install webp

      - name: Verify Pub Score
        run: ../../tool/verify_pub_score.sh


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/flutter_examples.yaml
================================================
name: flutter_examples

on:
  push:
    paths:
      - ".github/workflows/flutter_examples.yaml"
      - "packages/flutter_bloc/**"
      - "examples/flutter_bloc_with_stream/**"
      - "examples/flutter_complex_list/**"
      - "examples/flutter_counter/**"
      - "examples/flutter_dynamic_form/**"
      - "examples/flutter_firebase_login/**"
      - "examples/flutter_form_validation/**"
      - "examples/flutter_infinite_list/**"
      - "examples/flutter_login/**"
      - "examples/flutter_shopping_cart/**"
      - "examples/flutter_timer/**"
      - "examples/flutter_todos/**"
      - "examples/flutter_weather/**"
      - "examples/flutter_wizard/**"
      - "examples/github_search/flutter_github_search/**"

  pull_request:
    paths:
      - ".github/workflows/flutter_examples.yaml"
      - "packages/flutter_bloc/**"
      - "examples/flutter_bloc_with_stream/**"
      - "examples/flutter_complex_list/**"
      - "examples/flutter_counter/**"
      - "examples/flutter_dynamic_form/**"
      - "examples/flutter_firebase_login/**"
      - "examples/flutter_form_validation/**"
      - "examples/flutter_infinite_list/**"
      - "examples/flutter_login/**"
      - "examples/flutter_shopping_cart/**"
      - "examples/flutter_timer/**"
      - "examples/flutter_todos/**"
      - "examples/flutter_weather/**"
      - "examples/flutter_wizard/**"
      - "examples/github_search/flutter_github_search/**"

jobs:
  examples:
    strategy:
      matrix:
        folder:
          [
            "packages/flutter_bloc/example",
            "examples/flutter_bloc_with_stream",
            "examples/flutter_complex_list",
            "examples/flutter_counter",
            "examples/flutter_dynamic_form",
            "examples/flutter_firebase_login",
            "examples/flutter_form_validation",
            "examples/flutter_infinite_list",
            "examples/flutter_login",
            "examples/flutter_shopping_cart",
            "examples/flutter_timer",
            "examples/flutter_todos",
            "examples/flutter_todos/packages/local_storage_todos_api",
            "examples/flutter_todos/packages/todos_api",
            "examples/flutter_todos/packages/todos_repository",
            "examples/flutter_weather",
            "examples/flutter_wizard",
            "examples/github_search/flutter_github_search",
          ]
      fail-fast: false
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0
      - name: Install Dependencies
        working-directory: ${{ matrix.folder }}
        run: flutter packages get
      - name: Format
        working-directory: ${{ matrix.folder }}
        run: dart format --set-exit-if-changed lib
      - name: Analyze
        working-directory: ${{ matrix.folder }}
        run: flutter analyze lib
      - name: Run tests
        working-directory: ${{ matrix.folder }}
        run: |
          if [ -d "test" ]; then
            flutter test --no-pub --test-randomize-ordering-seed random
          fi
  build:
    needs: [examples]
    runs-on: ubuntu-latest
    steps:
      - name: noop
        run: echo 'noop'


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/hydrated_bloc.yaml
================================================
name: hydrated_bloc

on:
  push:
    paths:
      - "packages/hydrated_bloc/**"
      - ".github/workflows/hydrated_bloc.yaml"

  pull_request:
    paths:
      - "packages/hydrated_bloc/**"
      - ".github/workflows/hydrated_bloc.yaml"

jobs:
  build:
    defaults:
      run:
        working-directory: packages/hydrated_bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: flutter pub get

      - name: Format
        run: dart format --set-exit-if-changed .

      - name: Analyze
        run: flutter analyze lib test example

      - name: Run tests
        run: flutter test -j 1 --no-pub --coverage --test-randomize-ordering-seed random

      - name: Check Code Coverage
        uses: VeryGoodOpenSource/very_good_coverage@v2
        with:
          path: packages/hydrated_bloc/coverage/lcov.info

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  pana:
    defaults:
      run:
        working-directory: packages/hydrated_bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: |
          flutter packages get
          flutter pub global activate pana
          sudo apt-get install webp

      - name: Verify Pub Score
        run: ../../tool/verify_pub_score.sh 110


================================================
FILE: Flutter GPT/knowledge/examples/.github/workflows/replay_bloc.yaml
================================================
name: replay_bloc

on:
  push:
    paths:
      - "packages/replay_bloc/**"
      - ".github/workflows/replay_bloc.yaml"

  pull_request:
    paths:
      - "packages/replay_bloc/**"
      - ".github/workflows/replay_bloc.yaml"

jobs:
  build:
    defaults:
      run:
        working-directory: packages/replay_bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: flutter pub get

      - name: Format
        run: dart format --set-exit-if-changed .

      - name: Analyze
        run: flutter analyze lib test example

      - name: Run tests
        run: flutter test -j 1 --no-pub --coverage --test-randomize-ordering-seed random

      - name: Check Code Coverage
        uses: VeryGoodOpenSource/very_good_coverage@v2
        with:
          path: packages/replay_bloc/coverage/lcov.info

      - name: Upload coverage to Codecov
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  pana:
    defaults:
      run:
        working-directory: packages/replay_bloc

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: subosito/flutter-action@v2.10.0

      - name: Install Dependencies
        run: |
          flutter packages get
          flutter pub global activate pana
          sudo apt-get install webp

      - name: Verify Pub Score
        run: ../../tool/verify_pub_score.sh


================================================
FILE: Flutter GPT/knowledge/examples/.gitignore
================================================
# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.classpath
.project
.settings/
.vscode/*

# Flutter repo-specific
/bin/cache/
/bin/mingit/
/dev/benchmarks/mega_gallery/
/dev/bots/.recipe_deps
/dev/bots/android_tools/
/dev/docs/doc/
/dev/docs/flutter.docs.zip
/dev/docs/lib/
/dev/docs/pubspec.yaml
/dev/integration_tests/**/xcuserdata
/dev/integration_tests/**/Pods
/packages/flutter/coverage/
version

# packages file containing multi-root paths
.packages.generated

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
build/
flutter_*.png
linked_*.ds
unlinked.ds
unlinked_spec.ds

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
**/android/key.properties
*.jks

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# Coverage
coverage/
coverage_badge.svg
.test_coverage.dart
*.lcov
nohup.out

# Mason
mason-lock.json
.mason

# Exceptions to above rules.
!.vscode/launch.json
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
!/dev/ci/**/Gemfile.lock

================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/angular_counter/.gitignore
================================================
# Files and directories created by pub
.dart_tool/
.packages
# Remove the following pattern if you wish to check in your lock file
pubspec.lock

# Conventional directory for build outputs
build/

# Directory created by dartdoc
doc/api/


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/angular_counter/counter_bloc.dart
================================================
import 'package:bloc/bloc.dart';

/// Base counter event.
sealed class CounterEvent {}

/// Notifies bloc to increment state.
final class CounterIncrementPressed extends CounterEvent {}

/// Notifies bloc to decrement state.
final class CounterDecrementPressed extends CounterEvent {}

/// {@template counter_bloc}
/// A simple [Bloc] that manages an `int` as its state.
/// {@endtemplate}
class CounterBloc extends Bloc<CounterEvent, int> {
  /// {@macro counter_bloc}
  CounterBloc() : super(0) {
    on<CounterIncrementPressed>((event, emit) => emit(state + 1));
    on<CounterDecrementPressed>((event, emit) => emit(state - 1));
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/.gitignore
================================================
# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.pub-cache/
.pub/
build/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
  channel: beta

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: android
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: ios
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/bloc/ticker_bloc.dart
================================================
import 'package:bloc/bloc.dart';
import 'package:bloc_concurrency/bloc_concurrency.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_bloc_with_stream/ticker/ticker.dart';

part 'ticker_event.dart';
part 'ticker_state.dart';

/// {@template ticker_bloc}
/// Bloc which manages the current [TickerState]
/// and depends on a [Ticker] instance.
/// {@endtemplate}
class TickerBloc extends Bloc<TickerEvent, TickerState> {
  /// {@macro ticker_bloc}
  TickerBloc(Ticker ticker) : super(TickerInitial()) {
    on<TickerStarted>(
      (event, emit) async {
        await emit.onEach<int>(
          ticker.tick(),
          onData: (tick) => add(_TickerTicked(tick)),
        );
        emit(const TickerComplete());
      },
      transformer: restartable(),
    );

    on<_TickerTicked>((event, emit) => emit(TickerTickSuccess(event.tick)));
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/bloc/ticker_event.dart
================================================
part of 'ticker_bloc.dart';

/// {@template ticker_event}
/// Base class for all [TickerEvent]s which are
/// handled by the [TickerBloc].
/// {@endtemplate}
sealed class TickerEvent extends Equatable {
  /// {@macro ticker_event}
  const TickerEvent();

  @override
  List<Object> get props => [];
}

/// {@template ticker_started}
/// Signifies to the [TickerBloc] that the user
/// has requested to start the [Ticker].
/// {@endtemplate}
final class TickerStarted extends TickerEvent {
  /// {@macro ticker_started}
  const TickerStarted();
}

final class _TickerTicked extends TickerEvent {
  const _TickerTicked(this.tick);

  /// The current tick count.
  final int tick;

  @override
  List<Object> get props => [tick];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/bloc/ticker_state.dart
================================================
part of 'ticker_bloc.dart';

/// {@template ticker_state}
/// Base class for all [TickerState]s which are
/// managed by the [TickerBloc].
/// {@endtemplate}
sealed class TickerState extends Equatable {
  /// {@macro ticker_state}
  const TickerState();

  @override
  List<Object> get props => [];
}

/// The initial state of the [TickerBloc].
final class TickerInitial extends TickerState {}

/// {@template ticker_tick_success}
/// The state of the [TickerBloc] after a [Ticker]
/// has been started and includes the current tick count.
/// {@endtemplate}
final class TickerTickSuccess extends TickerState {
  /// {@macro ticker_tick_success}
  const TickerTickSuccess(this.count);

  /// The current tick count.
  final int count;

  @override
  List<Object> get props => [count];
}

/// {@template ticker_complete}
/// The state of the [TickerBloc] after the [Ticker] has completed.
/// {@endtemplate}
final class TickerComplete extends TickerState {
  /// {@macro ticker_complete}
  const TickerComplete();
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/main.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_bloc_with_stream/bloc/ticker_bloc.dart';
import 'package:flutter_bloc_with_stream/ticker/ticker.dart';

void main() => runApp(TickerApp());

/// {@template ticker_app}
/// [MaterialApp] which sets the [TickerPage] as the `home`.
/// [TickerApp] also provides an instance of [TickerBloc] to
/// the [TickerPage].
/// {@endtemplate}
class TickerApp extends MaterialApp {
  /// {@macro ticker_app}
  TickerApp({super.key})
      : super(
          home: BlocProvider(
            create: (_) => TickerBloc(Ticker()),
            child: const TickerPage(),
          ),
        );
}

/// {@template ticker_page}
/// [StatelessWidget] which consumes a [TickerBloc]
/// and responds to changes in the [TickerState].
/// [TickerPage] also notifies the [TickerBloc] when
/// the user taps on the start button.
/// {@endtemplate}
class TickerPage extends StatelessWidget {
  /// {@macro ticker_page}
  const TickerPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Flutter Bloc with Streams')),
      body: Center(
        child: BlocBuilder<TickerBloc, TickerState>(
          builder: (context, state) {
            return switch (state) {
              TickerInitial() =>
                const Text('Press the floating button to start.'),
              TickerTickSuccess() => Text('Tick #${state.count}'),
              TickerComplete() =>
                const Text('Complete! Press the floating button to restart.')
            };
          },
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => context.read<TickerBloc>().add(const TickerStarted()),
        tooltip: 'Start',
        child: const Icon(Icons.timer),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/ticker/ticker.dart
================================================
import 'dart:async';

/// Class which exposes a `tick` method to emit values periodically.
class Ticker {
  /// Emits a new `int` up to 10 every second.
  Stream<int> tick() {
    return Stream.periodic(const Duration(seconds: 1), (x) => x).take(10);
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/.gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.pub-cache/
.pub/
/build/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/Flutter/.last_build_id
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
  channel: beta

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: android
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: ios
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/app.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_complex_list/complex_list/complex_list.dart';
import 'package:flutter_complex_list/repository.dart';

class App extends MaterialApp {
  App({required Repository repository, super.key})
      : super(
          home: RepositoryProvider.value(
            value: repository,
            child: const ComplexListPage(),
          ),
        );
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/complex_list.dart
================================================
export 'cubit/complex_list_cubit.dart';
export 'models/models.dart';
export 'view/view.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/cubit/complex_list_cubit.dart
================================================
import 'dart:async';

import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_complex_list/complex_list/complex_list.dart';
import 'package:flutter_complex_list/repository.dart';

part 'complex_list_state.dart';

class ComplexListCubit extends Cubit<ComplexListState> {
  ComplexListCubit({required this.repository})
      : super(const ComplexListState.loading());

  final Repository repository;

  Future<void> fetchList() async {
    try {
      final items = await repository.fetchItems();
      emit(ComplexListState.success(items));
    } on Exception {
      emit(const ComplexListState.failure());
    }
  }

  Future<void> deleteItem(String id) async {
    final deleteInProgress = state.items.map((item) {
      return item.id == id ? item.copyWith(isDeleting: true) : item;
    }).toList();

    emit(ComplexListState.success(deleteInProgress));

    unawaited(
      repository.deleteItem(id).then((_) {
        final deleteSuccess = List.of(state.items)
          ..removeWhere((element) => element.id == id);
        emit(ComplexListState.success(deleteSuccess));
      }),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/cubit/complex_list_state.dart
================================================
part of 'complex_list_cubit.dart';

enum ListStatus { loading, success, failure }

final class ComplexListState extends Equatable {
  const ComplexListState._({
    this.status = ListStatus.loading,
    this.items = const <Item>[],
  });

  const ComplexListState.loading() : this._();

  const ComplexListState.success(List<Item> items)
      : this._(status: ListStatus.success, items: items);

  const ComplexListState.failure() : this._(status: ListStatus.failure);

  final ListStatus status;
  final List<Item> items;

  @override
  List<Object> get props => [status, items];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/models/item.dart
================================================
import 'package:equatable/equatable.dart';

class Item extends Equatable {
  const Item({
    required this.id,
    required this.value,
    this.isDeleting = false,
  });

  final String id;
  final String value;
  final bool isDeleting;

  Item copyWith({String? id, String? value, bool? isDeleting}) {
    return Item(
      id: id ?? this.id,
      value: value ?? this.value,
      isDeleting: isDeleting ?? this.isDeleting,
    );
  }

  @override
  List<Object> get props => [id, value, isDeleting];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/models/models.dart
================================================
export 'item.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/view/complex_list_page.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_complex_list/complex_list/complex_list.dart';
import 'package:flutter_complex_list/repository.dart';

class ComplexListPage extends StatelessWidget {
  const ComplexListPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Complex List')),
      body: BlocProvider(
        create: (_) => ComplexListCubit(
          repository: context.read<Repository>(),
        )..fetchList(),
        child: const ComplexListView(),
      ),
    );
  }
}

class ComplexListView extends StatelessWidget {
  const ComplexListView({super.key});

  @override
  Widget build(BuildContext context) {
    final state = context.watch<ComplexListCubit>().state;
    switch (state.status) {
      case ListStatus.failure:
        return const Center(child: Text('Oops something went wrong!'));
      case ListStatus.success:
        return ItemView(items: state.items);
      case ListStatus.loading:
        return const Center(child: CircularProgressIndicator());
    }
  }
}

class ItemView extends StatelessWidget {
  const ItemView({required this.items, super.key});

  final List<Item> items;

  @override
  Widget build(BuildContext context) {
    return items.isEmpty
        ? const Center(child: Text('no content'))
        : ListView.builder(
            itemBuilder: (BuildContext context, int index) {
              return ItemTile(
                item: items[index],
                onDeletePressed: (id) {
                  context.read<ComplexListCubit>().deleteItem(id);
                },
              );
            },
            itemCount: items.length,
          );
  }
}

class ItemTile extends StatelessWidget {
  const ItemTile({
    required this.item,
    required this.onDeletePressed,
    super.key,
  });

  final Item item;
  final ValueSetter<String> onDeletePressed;

  @override
  Widget build(BuildContext context) {
    return Material(
      child: ListTile(
        leading: Text('#${item.id}'),
        title: Text(item.value),
        trailing: item.isDeleting
            ? const CircularProgressIndicator()
            : IconButton(
                icon: const Icon(Icons.delete, color: Colors.red),
                onPressed: () => onDeletePressed(item.id),
              ),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/view/view.dart
================================================
export 'complex_list_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/main.dart
================================================
import 'package:bloc/bloc.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_complex_list/app.dart';
import 'package:flutter_complex_list/repository.dart';
import 'package:flutter_complex_list/simple_bloc_observer.dart';

void main() {
  Bloc.observer = const SimpleBlocObserver();
  runApp(App(repository: Repository()));
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/repository.dart
================================================
import 'dart:async';
import 'dart:math';

import 'package:flutter_complex_list/complex_list/complex_list.dart';

class Repository {
  final _random = Random();

  int _randomRange(int min, int max) => min + _random.nextInt(max - min);

  Future<List<Item>> fetchItems() async {
    await Future<void>.delayed(Duration(seconds: _randomRange(1, 5)));
    return List.of(_generateItemsList(10));
  }

  List<Item> _generateItemsList(int length) {
    return List.generate(
      length,
      (index) => Item(id: '$index', value: 'Item $index'),
    );
  }

  Future<void> deleteItem(String id) async {
    await Future<void>.delayed(Duration(seconds: _randomRange(1, 5)));
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/simple_bloc_observer.dart
================================================
import 'package:bloc/bloc.dart';

class SimpleBlocObserver extends BlocObserver {
  const SimpleBlocObserver();

  @override
  void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace) {
    // ignore: avoid_print
    print(error);
    super.onError(bloc, error, stackTrace);
  }

  @override
  void onChange(BlocBase<dynamic> bloc, Change<dynamic> change) {
    super.onChange(bloc, change);
    // ignore: avoid_print
    print(change);
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/.gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Exceptions to above rules.
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
  channel: beta

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: android
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: ios
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: linux
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: macos
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: web
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: windows
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/app.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_counter/counter/counter.dart';

/// {@template counter_app}
/// A [MaterialApp] which sets the `home` to [CounterPage].
/// {@endtemplate}
class CounterApp extends MaterialApp {
  /// {@macro counter_app}
  const CounterApp({super.key}) : super(home: const CounterPage());
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/counter.dart
================================================
export 'cubit/counter_cubit.dart';
export 'view/view.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/cubit/counter_cubit.dart
================================================
import 'package:bloc/bloc.dart';

/// {@template counter_cubit}
/// A [Cubit] which manages an [int] as its state.
/// {@endtemplate}
class CounterCubit extends Cubit<int> {
  /// {@macro counter_cubit}
  CounterCubit() : super(0);

  /// Add 1 to the current state.
  void increment() => emit(state + 1);

  /// Subtract 1 from the current state.
  void decrement() => emit(state - 1);
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/view/counter_page.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_counter/counter/counter.dart';

/// {@template counter_page}
/// A [StatelessWidget] which is responsible for providing a
/// [CounterCubit] instance to the [CounterView].
/// {@endtemplate}
class CounterPage extends StatelessWidget {
  /// {@macro counter_page}
  const CounterPage({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (_) => CounterCubit(),
      child: const CounterView(),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/view/counter_view.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_counter/counter/counter.dart';

/// {@template counter_view}
/// A [StatelessWidget] which reacts to the provided
/// [CounterCubit] state and notifies it in response to user input.
/// {@endtemplate}
class CounterView extends StatelessWidget {
  /// {@macro counter_view}
  const CounterView({super.key});

  @override
  Widget build(BuildContext context) {
    final textTheme = Theme.of(context).textTheme;
    return Scaffold(
      appBar: AppBar(title: const Text('Counter')),
      body: Center(
        child: BlocBuilder<CounterCubit, int>(
          builder: (context, state) {
            return Text('$state', style: textTheme.displayMedium);
          },
        ),
      ),
      floatingActionButton: Column(
        mainAxisAlignment: MainAxisAlignment.end,
        crossAxisAlignment: CrossAxisAlignment.end,
        children: <Widget>[
          FloatingActionButton(
            key: const Key('counterView_increment_floatingActionButton'),
            child: const Icon(Icons.add),
            onPressed: () => context.read<CounterCubit>().increment(),
          ),
          const SizedBox(height: 8),
          FloatingActionButton(
            key: const Key('counterView_decrement_floatingActionButton'),
            child: const Icon(Icons.remove),
            onPressed: () => context.read<CounterCubit>().decrement(),
          ),
        ],
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/view/view.dart
================================================
export 'counter_page.dart';
export 'counter_view.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter_observer.dart
================================================
import 'package:bloc/bloc.dart';

/// {@template counter_observer}
/// [BlocObserver] for the counter application which
/// observes all state changes.
/// {@endtemplate}
class CounterObserver extends BlocObserver {
  /// {@macro counter_observer}
  const CounterObserver();

  @override
  void onChange(BlocBase<dynamic> bloc, Change<dynamic> change) {
    super.onChange(bloc, change);
    // ignore: avoid_print
    print('${bloc.runtimeType} $change');
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/main.dart
================================================
import 'package:bloc/bloc.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_counter/app.dart';
import 'package:flutter_counter/counter_observer.dart';

void main() {
  Bloc.observer = const CounterObserver();
  runApp(const CounterApp());
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/.gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.pub-cache/
.pub/
/build/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b06b8b2710955028a6b562f5aa6fe62941d6febf
  channel: stable

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf
      base_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf
    - platform: android
      create_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf
      base_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf
    - platform: ios
      create_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf
      base_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/app.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_dynamic_form/new_car/new_car.dart';
import 'package:flutter_dynamic_form/new_car_repository.dart';

class MyApp extends StatelessWidget {
  const MyApp({required this.newCarRepository, super.key});

  final NewCarRepository newCarRepository;

  @override
  Widget build(BuildContext context) {
    return RepositoryProvider.value(
      value: newCarRepository,
      child: const MaterialApp(home: NewCarPage()),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/main.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_dynamic_form/app.dart';
import 'package:flutter_dynamic_form/new_car_repository.dart';

void main() => runApp(MyApp(newCarRepository: NewCarRepository()));


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/bloc/new_car_bloc.dart
================================================
import 'package:bloc/bloc.dart';
import 'package:bloc_concurrency/bloc_concurrency.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_dynamic_form/new_car_repository.dart';

part 'new_car_event.dart';
part 'new_car_state.dart';

class NewCarBloc extends Bloc<NewCarEvent, NewCarState> {
  NewCarBloc({required NewCarRepository newCarRepository})
      : _newCarRepository = newCarRepository,
        super(const NewCarState.initial()) {
    on<NewCarEvent>(_onEvent, transformer: sequential());
  }

  final NewCarRepository _newCarRepository;

  Future<void> _onEvent(NewCarEvent event, Emitter<NewCarState> emit) async {
    return switch (event) {
      final NewCarFormLoaded e => _onNewCarFormLoaded(e, emit),
      final NewCarBrandChanged e => _onNewCarBrandChanged(e, emit),
      final NewCarModelChanged e => _onNewCarModelChanged(e, emit),
      final NewCarYearChanged e => _onNewCarYearChanged(e, emit),
    };
  }

  Future<void> _onNewCarFormLoaded(
    NewCarFormLoaded event,
    Emitter<NewCarState> emit,
  ) async {
    emit(const NewCarState.brandsLoadInProgress());
    final brands = await _newCarRepository.fetchBrands();
    emit(NewCarState.brandsLoadSuccess(brands: brands));
  }

  Future<void> _onNewCarBrandChanged(
    NewCarBrandChanged event,
    Emitter<NewCarState> emit,
  ) async {
    emit(
      NewCarState.modelsLoadInProgress(
        brands: state.brands,
        brand: event.brand,
      ),
    );
    final models = await _newCarRepository.fetchModels(brand: event.brand);
    emit(
      NewCarState.modelsLoadSuccess(
        brands: state.brands,
        brand: event.brand,
        models: models,
      ),
    );
  }

  Future<void> _onNewCarModelChanged(
    NewCarModelChanged event,
    Emitter<NewCarState> emit,
  ) async {
    emit(
      NewCarState.yearsLoadInProgress(
        brands: state.brands,
        brand: state.brand,
        models: state.models,
        model: event.model,
      ),
    );
    final years = await _newCarRepository.fetchYears(
      brand: state.brand,
      model: event.model,
    );
    emit(
      NewCarState.yearsLoadSuccess(
        brands: state.brands,
        brand: state.brand,
        models: state.models,
        model: event.model,
        years: years,
      ),
    );
  }

  Future<void> _onNewCarYearChanged(
    NewCarYearChanged event,
    Emitter<NewCarState> emit,
  ) async {
    emit(state.copyWith(year: event.year));
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/bloc/new_car_event.dart
================================================
part of 'new_car_bloc.dart';

sealed class NewCarEvent extends Equatable {
  const NewCarEvent();

  @override
  List<Object?> get props => [];
}

final class NewCarFormLoaded extends NewCarEvent {
  const NewCarFormLoaded();
}

final class NewCarBrandChanged extends NewCarEvent {
  const NewCarBrandChanged({this.brand});

  final String? brand;

  @override
  List<Object?> get props => [brand];
}

final class NewCarModelChanged extends NewCarEvent {
  const NewCarModelChanged({this.model});

  final String? model;

  @override
  List<Object?> get props => [model];
}

final class NewCarYearChanged extends NewCarEvent {
  const NewCarYearChanged({this.year});

  final String? year;

  @override
  List<Object?> get props => [year];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/bloc/new_car_state.dart
================================================
part of 'new_car_bloc.dart';

final class NewCarState extends Equatable {
  const NewCarState._({
    this.brands = const <String>[],
    this.brand,
    this.models = const <String>[],
    this.model,
    this.years = const <String>[],
    this.year,
  });

  const NewCarState.initial() : this._();

  const NewCarState.brandsLoadInProgress() : this._();

  const NewCarState.brandsLoadSuccess({required List<String> brands})
      : this._(brands: brands);

  const NewCarState.modelsLoadInProgress({
    required List<String> brands,
    String? brand,
  }) : this._(brands: brands, brand: brand);

  const NewCarState.modelsLoadSuccess({
    required List<String> brands,
    required String? brand,
    required List<String> models,
  }) : this._(brands: brands, brand: brand, models: models);

  const NewCarState.yearsLoadInProgress({
    required List<String> brands,
    required String? brand,
    required List<String> models,
    required String? model,
  }) : this._(brands: brands, brand: brand, models: models, model: model);

  const NewCarState.yearsLoadSuccess({
    required List<String> brands,
    required String? brand,
    required List<String> models,
    required String? model,
    required List<String> years,
  }) : this._(
          brands: brands,
          brand: brand,
          models: models,
          model: model,
          years: years,
        );

  NewCarState copyWith({
    List<String>? brands,
    String? brand,
    List<String>? models,
    String? model,
    List<String>? years,
    String? year,
  }) {
    return NewCarState._(
      brands: brands ?? this.brands,
      brand: brand ?? this.brand,
      models: models ?? this.models,
      model: model ?? this.model,
      years: years ?? this.years,
      year: year ?? this.year,
    );
  }

  final List<String> brands;
  final String? brand;

  final List<String> models;
  final String? model;

  final List<String> years;
  final String? year;

  bool get isComplete => brand != null && model != null && year != null;

  @override
  List<Object?> get props => [brands, brand, models, model, years, year];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/new_car.dart
================================================
export 'bloc/new_car_bloc.dart';
export 'view/new_car_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/view/new_car_page.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_dynamic_form/new_car/new_car.dart';
import 'package:flutter_dynamic_form/new_car_repository.dart';

class NewCarPage extends StatelessWidget {
  const NewCarPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Flutter Dynamic Form')),
      body: BlocProvider(
        create: (_) => NewCarBloc(
          newCarRepository: context.read<NewCarRepository>(),
        )..add(const NewCarFormLoaded()),
        child: const NewCarForm(),
      ),
    );
  }
}

class NewCarForm extends StatelessWidget {
  const NewCarForm({super.key});

  @override
  Widget build(BuildContext context) {
    return const Column(
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: <Widget>[
        _BrandDropdownButton(),
        _ModelDropdownButton(),
        _YearDropdownButton(),
        _FormSubmitButton(),
      ],
    );
  }
}

class _BrandDropdownButton extends StatelessWidget {
  const _BrandDropdownButton();

  @override
  Widget build(BuildContext context) {
    final brands = context.select((NewCarBloc bloc) => bloc.state.brands);
    final brand = context.select((NewCarBloc bloc) => bloc.state.brand);
    return Material(
      child: DropdownButton<String>(
        key: const Key('newCarForm_brand_dropdownButton'),
        items: brands.isNotEmpty
            ? brands.map((brand) {
                return DropdownMenuItem(value: brand, child: Text(brand));
              }).toList()
            : const [],
        value: brand,
        hint: const Text('Select a Brand'),
        onChanged: (brand) {
          context.read<NewCarBloc>().add(NewCarBrandChanged(brand: brand));
        },
      ),
    );
  }
}

class _ModelDropdownButton extends StatelessWidget {
  const _ModelDropdownButton();

  @override
  Widget build(BuildContext context) {
    final models = context.select((NewCarBloc bloc) => bloc.state.models);
    final model = context.select((NewCarBloc bloc) => bloc.state.model);
    return Material(
      child: DropdownButton<String>(
        key: const Key('newCarForm_model_dropdownButton'),
        items: models.isNotEmpty
            ? models.map((model) {
                return DropdownMenuItem(value: model, child: Text(model));
              }).toList()
            : const [],
        value: model,
        hint: const Text('Select a Model'),
        onChanged: (model) {
          context.read<NewCarBloc>().add(NewCarModelChanged(model: model));
        },
      ),
    );
  }
}

class _YearDropdownButton extends StatelessWidget {
  const _YearDropdownButton();

  @override
  Widget build(BuildContext context) {
    final years = context.select((NewCarBloc bloc) => bloc.state.years);
    final year = context.select((NewCarBloc bloc) => bloc.state.year);
    return Material(
      child: DropdownButton<String>(
        key: const Key('newCarForm_year_dropdownButton'),
        items: years.isNotEmpty
            ? years.map((year) {
                return DropdownMenuItem(value: year, child: Text(year));
              }).toList()
            : const [],
        value: year,
        hint: const Text('Select a Year'),
        onChanged: (year) {
          context.read<NewCarBloc>().add(NewCarYearChanged(year: year));
        },
      ),
    );
  }
}

class _FormSubmitButton extends StatelessWidget {
  const _FormSubmitButton();

  @override
  Widget build(BuildContext context) {
    final state = context.watch<NewCarBloc>().state;

    void onFormSubmitted() {
      ScaffoldMessenger.of(context)
        ..hideCurrentSnackBar()
        ..showSnackBar(
          SnackBar(
            content:
                Text('Submitted ${state.brand} ${state.model} ${state.year}'),
          ),
        );
    }

    return ElevatedButton(
      onPressed: state.isComplete ? onFormSubmitted : null,
      child: const Text('Submit'),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car_repository.dart
================================================
const _delay = Duration(milliseconds: 300);
Future<void> wait() => Future.delayed(_delay);

class NewCarRepository {
  Future<List<String>> fetchBrands() async {
    await wait();
    return ['Chevy', 'Toyota', 'Honda'];
  }

  Future<List<String>> fetchModels({String? brand}) async {
    await wait();
    switch (brand) {
      case 'Chevy':
        return ['Malibu', 'Impala'];
      case 'Toyota':
        return ['Corolla', 'Supra'];
      case 'Honda':
        return ['Civic', 'Accord'];
      default:
        return [];
    }
  }

  Future<List<String>> fetchYears({String? brand, String? model}) async {
    await wait();
    switch (brand) {
      case 'Chevy':
        switch (model) {
          case 'Malibu':
            return ['2019', '2018'];
          case 'Impala':
            return ['2017', '2016'];
          default:
            return [];
        }
      case 'Toyota':
        switch (model) {
          case 'Corolla':
            return ['2015', '2014'];
          case 'Supra':
            return ['2013', '2012'];
          default:
            return [];
        }
      case 'Honda':
        switch (model) {
          case 'Civic':
            return ['2011', '2010'];
          case 'Accord':
            return ['2009', '2008'];
          default:
            return [];
        }
      default:
        return [];
    }
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/.gitignore
================================================
# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.pub-cache/
.pub/
build/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
**/android/app/google-services.json

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# Firebase related
.firebase/

# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
  channel: beta

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: android
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: ios
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/app.dart
================================================
export 'bloc/app_bloc.dart';
export 'bloc_observer.dart';
export 'routes/routes.dart';
export 'view/app.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc/app_bloc.dart
================================================
import 'dart:async';

import 'package:authentication_repository/authentication_repository.dart';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';

part 'app_event.dart';
part 'app_state.dart';

class AppBloc extends Bloc<AppEvent, AppState> {
  AppBloc({required AuthenticationRepository authenticationRepository})
      : _authenticationRepository = authenticationRepository,
        super(
          authenticationRepository.currentUser.isNotEmpty
              ? AppState.authenticated(authenticationRepository.currentUser)
              : const AppState.unauthenticated(),
        ) {
    on<_AppUserChanged>(_onUserChanged);
    on<AppLogoutRequested>(_onLogoutRequested);
    _userSubscription = _authenticationRepository.user.listen(
      (user) => add(_AppUserChanged(user)),
    );
  }

  final AuthenticationRepository _authenticationRepository;
  late final StreamSubscription<User> _userSubscription;

  void _onUserChanged(_AppUserChanged event, Emitter<AppState> emit) {
    emit(
      event.user.isNotEmpty
          ? AppState.authenticated(event.user)
          : const AppState.unauthenticated(),
    );
  }

  void _onLogoutRequested(AppLogoutRequested event, Emitter<AppState> emit) {
    unawaited(_authenticationRepository.logOut());
  }

  @override
  Future<void> close() {
    _userSubscription.cancel();
    return super.close();
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc/app_event.dart
================================================
part of 'app_bloc.dart';

sealed class AppEvent {
  const AppEvent();
}

final class AppLogoutRequested extends AppEvent {
  const AppLogoutRequested();
}

final class _AppUserChanged extends AppEvent {
  const _AppUserChanged(this.user);

  final User user;
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc/app_state.dart
================================================
part of 'app_bloc.dart';

enum AppStatus {
  authenticated,
  unauthenticated,
}

final class AppState extends Equatable {
  const AppState._({
    required this.status,
    this.user = User.empty,
  });

  const AppState.authenticated(User user)
      : this._(status: AppStatus.authenticated, user: user);

  const AppState.unauthenticated() : this._(status: AppStatus.unauthenticated);

  final AppStatus status;
  final User user;

  @override
  List<Object> get props => [status, user];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc_observer.dart
================================================
// ignore_for_file: avoid_print
import 'package:bloc/bloc.dart';

class AppBlocObserver extends BlocObserver {
  const AppBlocObserver();

  @override
  void onEvent(Bloc<dynamic, dynamic> bloc, Object? event) {
    super.onEvent(bloc, event);
    print(event);
  }

  @override
  void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace) {
    print(error);
    super.onError(bloc, error, stackTrace);
  }

  @override
  void onChange(BlocBase<dynamic> bloc, Change<dynamic> change) {
    super.onChange(bloc, change);
    print(change);
  }

  @override
  void onTransition(
    Bloc<dynamic, dynamic> bloc,
    Transition<dynamic, dynamic> transition,
  ) {
    super.onTransition(bloc, transition);
    print(transition);
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/routes/routes.dart
================================================
import 'package:flutter/widgets.dart';
import 'package:flutter_firebase_login/app/app.dart';
import 'package:flutter_firebase_login/home/home.dart';
import 'package:flutter_firebase_login/login/login.dart';

List<Page<dynamic>> onGenerateAppViewPages(
  AppStatus state,
  List<Page<dynamic>> pages,
) {
  switch (state) {
    case AppStatus.authenticated:
      return [HomePage.page()];
    case AppStatus.unauthenticated:
      return [LoginPage.page()];
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/view/app.dart
================================================
import 'package:authentication_repository/authentication_repository.dart';
import 'package:flow_builder/flow_builder.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_firebase_login/app/app.dart';
import 'package:flutter_firebase_login/theme.dart';

class App extends StatelessWidget {
  const App({
    required AuthenticationRepository authenticationRepository,
    super.key,
  }) : _authenticationRepository = authenticationRepository;

  final AuthenticationRepository _authenticationRepository;

  @override
  Widget build(BuildContext context) {
    return RepositoryProvider.value(
      value: _authenticationRepository,
      child: BlocProvider(
        create: (_) => AppBloc(
          authenticationRepository: _authenticationRepository,
        ),
        child: const AppView(),
      ),
    );
  }
}

class AppView extends StatelessWidget {
  const AppView({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: theme,
      home: FlowBuilder<AppStatus>(
        state: context.select((AppBloc bloc) => bloc.state.status),
        onGeneratePages: onGenerateAppViewPages,
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/generated_plugin_registrant.dart
================================================
//
// Generated file. Do not edit.
//

// ignore_for_file: directives_ordering
// ignore_for_file: lines_longer_than_80_chars
// ignore_for_file: depend_on_referenced_packages

import 'package:firebase_auth_web/firebase_auth_web.dart';
import 'package:firebase_core_web/firebase_core_web.dart';
import 'package:google_sign_in_web/google_sign_in_web.dart';

import 'package:flutter_web_plugins/flutter_web_plugins.dart';

// ignore: public_member_api_docs
void registerPlugins(Registrar registrar) {
  FirebaseAuthWeb.registerWith(registrar);
  FirebaseCoreWeb.registerWith(registrar);
  GoogleSignInPlugin.registerWith(registrar);
  registrar.registerMessageHandler();
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/home.dart
================================================
export 'view/home_page.dart';
export 'widgets/widgets.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/view/home_page.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_firebase_login/app/app.dart';
import 'package:flutter_firebase_login/home/home.dart';

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  static Page<void> page() => const MaterialPage<void>(child: HomePage());

  @override
  Widget build(BuildContext context) {
    final textTheme = Theme.of(context).textTheme;
    final user = context.select((AppBloc bloc) => bloc.state.user);
    return Scaffold(
      appBar: AppBar(
        title: const Text('Home'),
        actions: <Widget>[
          IconButton(
            key: const Key('homePage_logout_iconButton'),
            icon: const Icon(Icons.exit_to_app),
            onPressed: () {
              context.read<AppBloc>().add(const AppLogoutRequested());
            },
          ),
        ],
      ),
      body: Align(
        alignment: const Alignment(0, -1 / 3),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            Avatar(photo: user.photo),
            const SizedBox(height: 4),
            Text(user.email ?? '', style: textTheme.titleLarge),
            const SizedBox(height: 4),
            Text(user.name ?? '', style: textTheme.headlineSmall),
          ],
        ),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/widgets/avatar.dart
================================================
import 'package:flutter/material.dart';

const _avatarSize = 48.0;

class Avatar extends StatelessWidget {
  const Avatar({super.key, this.photo});

  final String? photo;

  @override
  Widget build(BuildContext context) {
    final photo = this.photo;
    return CircleAvatar(
      radius: _avatarSize,
      backgroundImage: photo != null ? NetworkImage(photo) : null,
      child: photo == null
          ? const Icon(Icons.person_outline, size: _avatarSize)
          : null,
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/widgets/widgets.dart
================================================
export 'avatar.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/cubit/login_cubit.dart
================================================
import 'package:authentication_repository/authentication_repository.dart';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:form_inputs/form_inputs.dart';
import 'package:formz/formz.dart';

part 'login_state.dart';

class LoginCubit extends Cubit<LoginState> {
  LoginCubit(this._authenticationRepository) : super(const LoginState());

  final AuthenticationRepository _authenticationRepository;

  void emailChanged(String value) {
    final email = Email.dirty(value);
    emit(
      state.copyWith(
        email: email,
        isValid: Formz.validate([email, state.password]),
      ),
    );
  }

  void passwordChanged(String value) {
    final password = Password.dirty(value);
    emit(
      state.copyWith(
        password: password,
        isValid: Formz.validate([state.email, password]),
      ),
    );
  }

  Future<void> logInWithCredentials() async {
    if (!state.isValid) return;
    emit(state.copyWith(status: FormzSubmissionStatus.inProgress));
    try {
      await _authenticationRepository.logInWithEmailAndPassword(
        email: state.email.value,
        password: state.password.value,
      );
      emit(state.copyWith(status: FormzSubmissionStatus.success));
    } on LogInWithEmailAndPasswordFailure catch (e) {
      emit(
        state.copyWith(
          errorMessage: e.message,
          status: FormzSubmissionStatus.failure,
        ),
      );
    } catch (_) {
      emit(state.copyWith(status: FormzSubmissionStatus.failure));
    }
  }

  Future<void> logInWithGoogle() async {
    emit(state.copyWith(status: FormzSubmissionStatus.inProgress));
    try {
      await _authenticationRepository.logInWithGoogle();
      emit(state.copyWith(status: FormzSubmissionStatus.success));
    } on LogInWithGoogleFailure catch (e) {
      emit(
        state.copyWith(
          errorMessage: e.message,
          status: FormzSubmissionStatus.failure,
        ),
      );
    } catch (_) {
      emit(state.copyWith(status: FormzSubmissionStatus.failure));
    }
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/cubit/login_state.dart
================================================
part of 'login_cubit.dart';

final class LoginState extends Equatable {
  const LoginState({
    this.email = const Email.pure(),
    this.password = const Password.pure(),
    this.status = FormzSubmissionStatus.initial,
    this.isValid = false,
    this.errorMessage,
  });

  final Email email;
  final Password password;
  final FormzSubmissionStatus status;
  final bool isValid;
  final String? errorMessage;

  @override
  List<Object?> get props => [email, password, status, isValid, errorMessage];

  LoginState copyWith({
    Email? email,
    Password? password,
    FormzSubmissionStatus? status,
    bool? isValid,
    String? errorMessage,
  }) {
    return LoginState(
      email: email ?? this.email,
      password: password ?? this.password,
      status: status ?? this.status,
      isValid: isValid ?? this.isValid,
      errorMessage: errorMessage ?? this.errorMessage,
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/login.dart
================================================
export 'cubit/login_cubit.dart';
export 'view/view.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/view/login_form.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_firebase_login/login/login.dart';
import 'package:flutter_firebase_login/sign_up/sign_up.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:formz/formz.dart';

class LoginForm extends StatelessWidget {
  const LoginForm({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocListener<LoginCubit, LoginState>(
      listener: (context, state) {
        if (state.status.isFailure) {
          ScaffoldMessenger.of(context)
            ..hideCurrentSnackBar()
            ..showSnackBar(
              SnackBar(
                content: Text(state.errorMessage ?? 'Authentication Failure'),
              ),
            );
        }
      },
      child: Align(
        alignment: const Alignment(0, -1 / 3),
        child: SingleChildScrollView(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              Image.asset(
                'assets/bloc_logo_small.png',
                height: 120,
              ),
              const SizedBox(height: 16),
              _EmailInput(),
              const SizedBox(height: 8),
              _PasswordInput(),
              const SizedBox(height: 8),
              _LoginButton(),
              const SizedBox(height: 8),
              _GoogleLoginButton(),
              const SizedBox(height: 4),
              _SignUpButton(),
            ],
          ),
        ),
      ),
    );
  }
}

class _EmailInput extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<LoginCubit, LoginState>(
      buildWhen: (previous, current) => previous.email != current.email,
      builder: (context, state) {
        return TextField(
          key: const Key('loginForm_emailInput_textField'),
          onChanged: (email) => context.read<LoginCubit>().emailChanged(email),
          keyboardType: TextInputType.emailAddress,
          decoration: InputDecoration(
            labelText: 'email',
            helperText: '',
            errorText:
                state.email.displayError != null ? 'invalid email' : null,
          ),
        );
      },
    );
  }
}

class _PasswordInput extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<LoginCubit, LoginState>(
      buildWhen: (previous, current) => previous.password != current.password,
      builder: (context, state) {
        return TextField(
          key: const Key('loginForm_passwordInput_textField'),
          onChanged: (password) =>
              context.read<LoginCubit>().passwordChanged(password),
          obscureText: true,
          decoration: InputDecoration(
            labelText: 'password',
            helperText: '',
            errorText:
                state.password.displayError != null ? 'invalid password' : null,
          ),
        );
      },
    );
  }
}

class _LoginButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<LoginCubit, LoginState>(
      builder: (context, state) {
        return state.status.isInProgress
            ? const CircularProgressIndicator()
            : ElevatedButton(
                key: const Key('loginForm_continue_raisedButton'),
                style: ElevatedButton.styleFrom(
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(30),
                  ),
                  backgroundColor: const Color(0xFFFFD600),
                ),
                onPressed: state.isValid
                    ? () => context.read<LoginCubit>().logInWithCredentials()
                    : null,
                child: const Text('LOGIN'),
              );
      },
    );
  }
}

class _GoogleLoginButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);
    return ElevatedButton.icon(
      key: const Key('loginForm_googleLogin_raisedButton'),
      label: const Text(
        'SIGN IN WITH GOOGLE',
        style: TextStyle(color: Colors.white),
      ),
      style: ElevatedButton.styleFrom(
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(30),
        ),
        backgroundColor: theme.colorScheme.secondary,
      ),
      icon: const Icon(FontAwesomeIcons.google, color: Colors.white),
      onPressed: () => context.read<LoginCubit>().logInWithGoogle(),
    );
  }
}

class _SignUpButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);
    return TextButton(
      key: const Key('loginForm_createAccount_flatButton'),
      onPressed: () => Navigator.of(context).push<void>(SignUpPage.route()),
      child: Text(
        'CREATE ACCOUNT',
        style: TextStyle(color: theme.primaryColor),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/view/login_page.dart
================================================
import 'package:authentication_repository/authentication_repository.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_firebase_login/login/login.dart';

class LoginPage extends StatelessWidget {
  const LoginPage({super.key});

  static Page<void> page() => const MaterialPage<void>(child: LoginPage());

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Login')),
      body: Padding(
        padding: const EdgeInsets.all(8),
        child: BlocProvider(
          create: (_) => LoginCubit(context.read<AuthenticationRepository>()),
          child: const LoginForm(),
        ),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/view/view.dart
================================================
export 'login_form.dart';
export 'login_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/main.dart
================================================
import 'package:authentication_repository/authentication_repository.dart';
import 'package:bloc/bloc.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_firebase_login/app/app.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  Bloc.observer = const AppBlocObserver();

  await Firebase.initializeApp();

  final authenticationRepository = AuthenticationRepository();
  await authenticationRepository.user.first;

  runApp(App(authenticationRepository: authenticationRepository));
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/cubit/sign_up_cubit.dart
================================================
import 'package:authentication_repository/authentication_repository.dart';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:form_inputs/form_inputs.dart';
import 'package:formz/formz.dart';

part 'sign_up_state.dart';

class SignUpCubit extends Cubit<SignUpState> {
  SignUpCubit(this._authenticationRepository) : super(const SignUpState());

  final AuthenticationRepository _authenticationRepository;

  void emailChanged(String value) {
    final email = Email.dirty(value);
    emit(
      state.copyWith(
        email: email,
        isValid: Formz.validate([
          email,
          state.password,
          state.confirmedPassword,
        ]),
      ),
    );
  }

  void passwordChanged(String value) {
    final password = Password.dirty(value);
    final confirmedPassword = ConfirmedPassword.dirty(
      password: password.value,
      value: state.confirmedPassword.value,
    );
    emit(
      state.copyWith(
        password: password,
        confirmedPassword: confirmedPassword,
        isValid: Formz.validate([
          state.email,
          password,
          confirmedPassword,
        ]),
      ),
    );
  }

  void confirmedPasswordChanged(String value) {
    final confirmedPassword = ConfirmedPassword.dirty(
      password: state.password.value,
      value: value,
    );
    emit(
      state.copyWith(
        confirmedPassword: confirmedPassword,
        isValid: Formz.validate([
          state.email,
          state.password,
          confirmedPassword,
        ]),
      ),
    );
  }

  Future<void> signUpFormSubmitted() async {
    if (!state.isValid) return;
    emit(state.copyWith(status: FormzSubmissionStatus.inProgress));
    try {
      await _authenticationRepository.signUp(
        email: state.email.value,
        password: state.password.value,
      );
      emit(state.copyWith(status: FormzSubmissionStatus.success));
    } on SignUpWithEmailAndPasswordFailure catch (e) {
      emit(
        state.copyWith(
          errorMessage: e.message,
          status: FormzSubmissionStatus.failure,
        ),
      );
    } catch (_) {
      emit(state.copyWith(status: FormzSubmissionStatus.failure));
    }
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/cubit/sign_up_state.dart
================================================
part of 'sign_up_cubit.dart';

enum ConfirmPasswordValidationError { invalid }

final class SignUpState extends Equatable {
  const SignUpState({
    this.email = const Email.pure(),
    this.password = const Password.pure(),
    this.confirmedPassword = const ConfirmedPassword.pure(),
    this.status = FormzSubmissionStatus.initial,
    this.isValid = false,
    this.errorMessage,
  });

  final Email email;
  final Password password;
  final ConfirmedPassword confirmedPassword;
  final FormzSubmissionStatus status;
  final bool isValid;
  final String? errorMessage;

  @override
  List<Object?> get props => [
        email,
        password,
        confirmedPassword,
        status,
        isValid,
        errorMessage,
      ];

  SignUpState copyWith({
    Email? email,
    Password? password,
    ConfirmedPassword? confirmedPassword,
    FormzSubmissionStatus? status,
    bool? isValid,
    String? errorMessage,
  }) {
    return SignUpState(
      email: email ?? this.email,
      password: password ?? this.password,
      confirmedPassword: confirmedPassword ?? this.confirmedPassword,
      status: status ?? this.status,
      isValid: isValid ?? this.isValid,
      errorMessage: errorMessage ?? this.errorMessage,
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/sign_up.dart
================================================
export 'cubit/sign_up_cubit.dart';
export 'view/view.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/view/sign_up_form.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_firebase_login/sign_up/sign_up.dart';
import 'package:formz/formz.dart';

class SignUpForm extends StatelessWidget {
  const SignUpForm({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocListener<SignUpCubit, SignUpState>(
      listener: (context, state) {
        if (state.status.isSuccess) {
          Navigator.of(context).pop();
        } else if (state.status.isFailure) {
          ScaffoldMessenger.of(context)
            ..hideCurrentSnackBar()
            ..showSnackBar(
              SnackBar(content: Text(state.errorMessage ?? 'Sign Up Failure')),
            );
        }
      },
      child: Align(
        alignment: const Alignment(0, -1 / 3),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            _EmailInput(),
            const SizedBox(height: 8),
            _PasswordInput(),
            const SizedBox(height: 8),
            _ConfirmPasswordInput(),
            const SizedBox(height: 8),
            _SignUpButton(),
          ],
        ),
      ),
    );
  }
}

class _EmailInput extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<SignUpCubit, SignUpState>(
      buildWhen: (previous, current) => previous.email != current.email,
      builder: (context, state) {
        return TextField(
          key: const Key('signUpForm_emailInput_textField'),
          onChanged: (email) => context.read<SignUpCubit>().emailChanged(email),
          keyboardType: TextInputType.emailAddress,
          decoration: InputDecoration(
            labelText: 'email',
            helperText: '',
            errorText:
                state.email.displayError != null ? 'invalid email' : null,
          ),
        );
      },
    );
  }
}

class _PasswordInput extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<SignUpCubit, SignUpState>(
      buildWhen: (previous, current) => previous.password != current.password,
      builder: (context, state) {
        return TextField(
          key: const Key('signUpForm_passwordInput_textField'),
          onChanged: (password) =>
              context.read<SignUpCubit>().passwordChanged(password),
          obscureText: true,
          decoration: InputDecoration(
            labelText: 'password',
            helperText: '',
            errorText:
                state.password.displayError != null ? 'invalid password' : null,
          ),
        );
      },
    );
  }
}

class _ConfirmPasswordInput extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<SignUpCubit, SignUpState>(
      buildWhen: (previous, current) =>
          previous.password != current.password ||
          previous.confirmedPassword != current.confirmedPassword,
      builder: (context, state) {
        return TextField(
          key: const Key('signUpForm_confirmedPasswordInput_textField'),
          onChanged: (confirmPassword) => context
              .read<SignUpCubit>()
              .confirmedPasswordChanged(confirmPassword),
          obscureText: true,
          decoration: InputDecoration(
            labelText: 'confirm password',
            helperText: '',
            errorText: state.confirmedPassword.displayError != null
                ? 'passwords do not match'
                : null,
          ),
        );
      },
    );
  }
}

class _SignUpButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<SignUpCubit, SignUpState>(
      builder: (context, state) {
        return state.status.isInProgress
            ? const CircularProgressIndicator()
            : ElevatedButton(
                key: const Key('signUpForm_continue_raisedButton'),
                style: ElevatedButton.styleFrom(
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(30),
                  ),
                  backgroundColor: Colors.orangeAccent,
                ),
                onPressed: state.isValid
                    ? () => context.read<SignUpCubit>().signUpFormSubmitted()
                    : null,
                child: const Text('SIGN UP'),
              );
      },
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/view/sign_up_page.dart
================================================
import 'package:authentication_repository/authentication_repository.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_firebase_login/sign_up/sign_up.dart';

class SignUpPage extends StatelessWidget {
  const SignUpPage({super.key});

  static Route<void> route() {
    return MaterialPageRoute<void>(builder: (_) => const SignUpPage());
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Sign Up')),
      body: Padding(
        padding: const EdgeInsets.all(8),
        child: BlocProvider<SignUpCubit>(
          create: (_) => SignUpCubit(context.read<AuthenticationRepository>()),
          child: const SignUpForm(),
        ),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/view/view.dart
================================================
export 'sign_up_form.dart';
export 'sign_up_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/theme.dart
================================================
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';

final theme = ThemeData(
  textTheme: GoogleFonts.openSansTextTheme(),
  primaryColorDark: const Color(0xFF0097A7),
  primaryColorLight: const Color(0xFFB2EBF2),
  primaryColor: const Color(0xFF00BCD4),
  colorScheme: const ColorScheme.light(secondary: Color(0xFF009688)),
  scaffoldBackgroundColor: const Color(0xFFE0F2F1),
  inputDecorationTheme: InputDecorationTheme(
    border: OutlineInputBorder(
      borderRadius: BorderRadius.circular(8),
    ),
  ),
);


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/.gitignore
================================================
# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.pub-cache/
.pub/
build/
.last_build_id

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
  channel: beta

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: android
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: ios
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/bloc/my_form_bloc.dart
================================================
import 'dart:async';

import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_form_validation/models/models.dart';
import 'package:formz/formz.dart';

part 'my_form_event.dart';
part 'my_form_state.dart';

class MyFormBloc extends Bloc<MyFormEvent, MyFormState> {
  MyFormBloc() : super(const MyFormState()) {
    on<EmailChanged>(_onEmailChanged);
    on<PasswordChanged>(_onPasswordChanged);
    on<EmailUnfocused>(_onEmailUnfocused);
    on<PasswordUnfocused>(_onPasswordUnfocused);
    on<FormSubmitted>(_onFormSubmitted);
  }

  void _onEmailChanged(EmailChanged event, Emitter<MyFormState> emit) {
    final email = Email.dirty(event.email);
    emit(
      state.copyWith(
        email: email.isValid ? email : Email.pure(event.email),
        isValid: Formz.validate([email, state.password]),
      ),
    );
  }

  void _onPasswordChanged(PasswordChanged event, Emitter<MyFormState> emit) {
    final password = Password.dirty(event.password);
    emit(
      state.copyWith(
        password: password.isValid ? password : Password.pure(event.password),
        isValid: Formz.validate([state.email, password]),
      ),
    );
  }

  void _onEmailUnfocused(EmailUnfocused event, Emitter<MyFormState> emit) {
    final email = Email.dirty(state.email.value);
    emit(
      state.copyWith(
        email: email,
        isValid: Formz.validate([email, state.password]),
      ),
    );
  }

  void _onPasswordUnfocused(
    PasswordUnfocused event,
    Emitter<MyFormState> emit,
  ) {
    final password = Password.dirty(state.password.value);
    emit(
      state.copyWith(
        password: password,
        isValid: Formz.validate([state.email, password]),
      ),
    );
  }

  Future<void> _onFormSubmitted(
    FormSubmitted event,
    Emitter<MyFormState> emit,
  ) async {
    final email = Email.dirty(state.email.value);
    final password = Password.dirty(state.password.value);
    emit(
      state.copyWith(
        email: email,
        password: password,
        isValid: Formz.validate([email, password]),
      ),
    );
    if (state.isValid) {
      emit(state.copyWith(status: FormzSubmissionStatus.inProgress));
      await Future<void>.delayed(const Duration(seconds: 1));
      emit(state.copyWith(status: FormzSubmissionStatus.success));
    }
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/bloc/my_form_event.dart
================================================
part of 'my_form_bloc.dart';

sealed class MyFormEvent extends Equatable {
  const MyFormEvent();

  @override
  List<Object> get props => [];
}

final class EmailChanged extends MyFormEvent {
  const EmailChanged({required this.email});

  final String email;

  @override
  List<Object> get props => [email];
}

final class EmailUnfocused extends MyFormEvent {}

final class PasswordChanged extends MyFormEvent {
  const PasswordChanged({required this.password});

  final String password;

  @override
  List<Object> get props => [password];
}

final class PasswordUnfocused extends MyFormEvent {}

final class FormSubmitted extends MyFormEvent {}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/bloc/my_form_state.dart
================================================
part of 'my_form_bloc.dart';

final class MyFormState extends Equatable {
  const MyFormState({
    this.email = const Email.pure(),
    this.password = const Password.pure(),
    this.isValid = false,
    this.status = FormzSubmissionStatus.initial,
  });

  final Email email;
  final Password password;
  final bool isValid;
  final FormzSubmissionStatus status;

  MyFormState copyWith({
    Email? email,
    Password? password,
    bool? isValid,
    FormzSubmissionStatus? status,
  }) {
    return MyFormState(
      email: email ?? this.email,
      password: password ?? this.password,
      isValid: isValid ?? this.isValid,
      status: status ?? this.status,
    );
  }

  @override
  List<Object> get props => [email, password, status];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/main.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_form_validation/bloc/my_form_bloc.dart';
import 'package:formz/formz.dart';

void main() => runApp(const App());

class App extends StatelessWidget {
  const App({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Flutter Form Validation')),
        body: BlocProvider(
          create: (_) => MyFormBloc(),
          child: const MyForm(),
        ),
      ),
    );
  }
}

class MyForm extends StatefulWidget {
  const MyForm({super.key});

  @override
  State<MyForm> createState() => _MyFormState();
}

class _MyFormState extends State<MyForm> {
  final _emailFocusNode = FocusNode();
  final _passwordFocusNode = FocusNode();

  @override
  void initState() {
    super.initState();
    _emailFocusNode.addListener(() {
      if (!_emailFocusNode.hasFocus) {
        context.read<MyFormBloc>().add(EmailUnfocused());
        FocusScope.of(context).requestFocus(_passwordFocusNode);
      }
    });
    _passwordFocusNode.addListener(() {
      if (!_passwordFocusNode.hasFocus) {
        context.read<MyFormBloc>().add(PasswordUnfocused());
      }
    });
  }

  @override
  void dispose() {
    _emailFocusNode.dispose();
    _passwordFocusNode.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return BlocListener<MyFormBloc, MyFormState>(
      listener: (context, state) {
        if (state.status.isSuccess) {
          ScaffoldMessenger.of(context).hideCurrentSnackBar();
          showDialog<void>(
            context: context,
            builder: (_) => const SuccessDialog(),
          );
        }
        if (state.status.isInProgress) {
          ScaffoldMessenger.of(context)
            ..hideCurrentSnackBar()
            ..showSnackBar(
              const SnackBar(content: Text('Submitting...')),
            );
        }
      },
      child: Padding(
        padding: const EdgeInsets.all(8),
        child: Column(
          children: <Widget>[
            EmailInput(focusNode: _emailFocusNode),
            PasswordInput(focusNode: _passwordFocusNode),
            const SubmitButton(),
          ],
        ),
      ),
    );
  }
}

class EmailInput extends StatelessWidget {
  const EmailInput({required this.focusNode, super.key});

  final FocusNode focusNode;

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<MyFormBloc, MyFormState>(
      builder: (context, state) {
        return TextFormField(
          initialValue: state.email.value,
          focusNode: focusNode,
          decoration: InputDecoration(
            icon: const Icon(Icons.email),
            labelText: 'Email',
            helperText: 'A complete, valid email e.g. joe@gmail.com',
            errorText: state.email.displayError != null
                ? 'Please ensure the email entered is valid'
                : null,
          ),
          keyboardType: TextInputType.emailAddress,
          onChanged: (value) {
            context.read<MyFormBloc>().add(EmailChanged(email: value));
          },
          textInputAction: TextInputAction.next,
        );
      },
    );
  }
}

class PasswordInput extends StatelessWidget {
  const PasswordInput({required this.focusNode, super.key});

  final FocusNode focusNode;

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<MyFormBloc, MyFormState>(
      builder: (context, state) {
        return TextFormField(
          initialValue: state.password.value,
          focusNode: focusNode,
          decoration: InputDecoration(
            icon: const Icon(Icons.lock),
            helperText:
                '''Password should be at least 8 characters with at least one letter and number''',
            helperMaxLines: 2,
            labelText: 'Password',
            errorMaxLines: 2,
            errorText: state.password.displayError != null
                ? '''Password must be at least 8 characters and contain at least one letter and number'''
                : null,
          ),
          obscureText: true,
          onChanged: (value) {
            context.read<MyFormBloc>().add(PasswordChanged(password: value));
          },
          textInputAction: TextInputAction.done,
        );
      },
    );
  }
}

class SubmitButton extends StatelessWidget {
  const SubmitButton({super.key});

  @override
  Widget build(BuildContext context) {
    final isValid = context.select((MyFormBloc bloc) => bloc.state.isValid);
    return ElevatedButton(
      onPressed: isValid
          ? () => context.read<MyFormBloc>().add(FormSubmitted())
          : null,
      child: const Text('Submit'),
    );
  }
}

class SuccessDialog extends StatelessWidget {
  const SuccessDialog({super.key});

  @override
  Widget build(BuildContext context) {
    return Dialog(
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(8),
      ),
      child: Padding(
        padding: const EdgeInsets.all(8),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            const Row(
              children: <Widget>[
                Icon(Icons.info),
                Flexible(
                  child: Padding(
                    padding: EdgeInsets.all(10),
                    child: Text(
                      'Form Submitted Successfully!',
                      softWrap: true,
                    ),
                  ),
                ),
              ],
            ),
            ElevatedButton(
              child: const Text('OK'),
              onPressed: () => Navigator.of(context).pop(),
            ),
          ],
        ),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/models/email.dart
================================================
import 'package:formz/formz.dart';

enum EmailValidationError { invalid }

final class Email extends FormzInput<String, EmailValidationError> {
  const Email.pure([super.value = '']) : super.pure();
  const Email.dirty([super.value = '']) : super.dirty();

  static final _emailRegex = RegExp(
    r'^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$',
  );

  @override
  EmailValidationError? validator(String? value) {
    return _emailRegex.hasMatch(value ?? '')
        ? null
        : EmailValidationError.invalid;
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/models/models.dart
================================================
export 'email.dart';
export 'password.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/models/password.dart
================================================
import 'package:formz/formz.dart';

enum PasswordValidationError { invalid }

final class Password extends FormzInput<String, PasswordValidationError> {
  const Password.pure([super.value = '']) : super.pure();
  const Password.dirty([super.value = '']) : super.dirty();

  static final _passwordRegex =
      RegExp(r'^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$');

  @override
  PasswordValidationError? validator(String? value) {
    return _passwordRegex.hasMatch(value ?? '')
        ? null
        : PasswordValidationError.invalid;
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/.gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
  channel: beta

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: android
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: ios
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: linux
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: macos
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: web
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: windows
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/app.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_infinite_list/posts/posts.dart';

class App extends MaterialApp {
  const App({super.key}) : super(home: const PostsPage());
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/main.dart
================================================
import 'package:bloc/bloc.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_infinite_list/app.dart';
import 'package:flutter_infinite_list/simple_bloc_observer.dart';

void main() {
  Bloc.observer = const SimpleBlocObserver();
  runApp(const App());
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/bloc/post_bloc.dart
================================================
import 'dart:async';
import 'dart:convert';

import 'package:bloc/bloc.dart';
import 'package:bloc_concurrency/bloc_concurrency.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_infinite_list/posts/posts.dart';
import 'package:http/http.dart' as http;
import 'package:stream_transform/stream_transform.dart';

part 'post_event.dart';
part 'post_state.dart';

const _postLimit = 20;
const throttleDuration = Duration(milliseconds: 100);

EventTransformer<E> throttleDroppable<E>(Duration duration) {
  return (events, mapper) {
    return droppable<E>().call(events.throttle(duration), mapper);
  };
}

class PostBloc extends Bloc<PostEvent, PostState> {
  PostBloc({required this.httpClient}) : super(const PostState()) {
    on<PostFetched>(
      _onPostFetched,
      transformer: throttleDroppable(throttleDuration),
    );
  }

  final http.Client httpClient;

  Future<void> _onPostFetched(
    PostFetched event,
    Emitter<PostState> emit,
  ) async {
    if (state.hasReachedMax) return;
    try {
      if (state.status == PostStatus.initial) {
        final posts = await _fetchPosts();
        return emit(
          state.copyWith(
            status: PostStatus.success,
            posts: posts,
            hasReachedMax: false,
          ),
        );
      }
      final posts = await _fetchPosts(state.posts.length);
      posts.isEmpty
          ? emit(state.copyWith(hasReachedMax: true))
          : emit(
              state.copyWith(
                status: PostStatus.success,
                posts: List.of(state.posts)..addAll(posts),
                hasReachedMax: false,
              ),
            );
    } catch (_) {
      emit(state.copyWith(status: PostStatus.failure));
    }
  }

  Future<List<Post>> _fetchPosts([int startIndex = 0]) async {
    final response = await httpClient.get(
      Uri.https(
        'jsonplaceholder.typicode.com',
        '/posts',
        <String, String>{'_start': '$startIndex', '_limit': '$_postLimit'},
      ),
    );
    if (response.statusCode == 200) {
      final body = json.decode(response.body) as List;
      return body.map((dynamic json) {
        final map = json as Map<String, dynamic>;
        return Post(
          id: map['id'] as int,
          title: map['title'] as String,
          body: map['body'] as String,
        );
      }).toList();
    }
    throw Exception('error fetching posts');
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/bloc/post_event.dart
================================================
part of 'post_bloc.dart';

sealed class PostEvent extends Equatable {
  @override
  List<Object> get props => [];
}

final class PostFetched extends PostEvent {}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/bloc/post_state.dart
================================================
part of 'post_bloc.dart';

enum PostStatus { initial, success, failure }

final class PostState extends Equatable {
  const PostState({
    this.status = PostStatus.initial,
    this.posts = const <Post>[],
    this.hasReachedMax = false,
  });

  final PostStatus status;
  final List<Post> posts;
  final bool hasReachedMax;

  PostState copyWith({
    PostStatus? status,
    List<Post>? posts,
    bool? hasReachedMax,
  }) {
    return PostState(
      status: status ?? this.status,
      posts: posts ?? this.posts,
      hasReachedMax: hasReachedMax ?? this.hasReachedMax,
    );
  }

  @override
  String toString() {
    return '''PostState { status: $status, hasReachedMax: $hasReachedMax, posts: ${posts.length} }''';
  }

  @override
  List<Object> get props => [status, posts, hasReachedMax];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/models/models.dart
================================================
export './post.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/models/post.dart
================================================
import 'package:equatable/equatable.dart';

final class Post extends Equatable {
  const Post({required this.id, required this.title, required this.body});

  final int id;
  final String title;
  final String body;

  @override
  List<Object> get props => [id, title, body];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/posts.dart
================================================
export 'bloc/post_bloc.dart';
export 'models/models.dart';
export 'view/view.dart';
export 'widgets/widgets.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/view/posts_list.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_infinite_list/posts/posts.dart';

class PostsList extends StatefulWidget {
  const PostsList({super.key});

  @override
  State<PostsList> createState() => _PostsListState();
}

class _PostsListState extends State<PostsList> {
  final _scrollController = ScrollController();

  @override
  void initState() {
    super.initState();
    _scrollController.addListener(_onScroll);
  }

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<PostBloc, PostState>(
      builder: (context, state) {
        switch (state.status) {
          case PostStatus.failure:
            return const Center(child: Text('failed to fetch posts'));
          case PostStatus.success:
            if (state.posts.isEmpty) {
              return const Center(child: Text('no posts'));
            }
            return ListView.builder(
              itemBuilder: (BuildContext context, int index) {
                return index >= state.posts.length
                    ? const BottomLoader()
                    : PostListItem(post: state.posts[index]);
              },
              itemCount: state.hasReachedMax
                  ? state.posts.length
                  : state.posts.length + 1,
              controller: _scrollController,
            );
          case PostStatus.initial:
            return const Center(child: CircularProgressIndicator());
        }
      },
    );
  }

  @override
  void dispose() {
    _scrollController
      ..removeListener(_onScroll)
      ..dispose();
    super.dispose();
  }

  void _onScroll() {
    if (_isBottom) context.read<PostBloc>().add(PostFetched());
  }

  bool get _isBottom {
    if (!_scrollController.hasClients) return false;
    final maxScroll = _scrollController.position.maxScrollExtent;
    final currentScroll = _scrollController.offset;
    return currentScroll >= (maxScroll * 0.9);
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/view/posts_page.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_infinite_list/posts/posts.dart';
import 'package:http/http.dart' as http;

class PostsPage extends StatelessWidget {
  const PostsPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Posts')),
      body: BlocProvider(
        create: (_) => PostBloc(httpClient: http.Client())..add(PostFetched()),
        child: const PostsList(),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/view/view.dart
================================================
export 'posts_list.dart';
export 'posts_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/widgets/bottom_loader.dart
================================================
import 'package:flutter/material.dart';

class BottomLoader extends StatelessWidget {
  const BottomLoader({super.key});

  @override
  Widget build(BuildContext context) {
    return const Center(
      child: SizedBox(
        height: 24,
        width: 24,
        child: CircularProgressIndicator(strokeWidth: 1.5),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/widgets/post_list_item.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_infinite_list/posts/posts.dart';

class PostListItem extends StatelessWidget {
  const PostListItem({required this.post, super.key});

  final Post post;

  @override
  Widget build(BuildContext context) {
    final textTheme = Theme.of(context).textTheme;
    return Material(
      child: ListTile(
        leading: Text('${post.id}', style: textTheme.bodySmall),
        title: Text(post.title),
        isThreeLine: true,
        subtitle: Text(post.body),
        dense: true,
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/widgets/widgets.dart
================================================
export 'bottom_loader.dart';
export 'post_list_item.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/simple_bloc_observer.dart
================================================
// ignore_for_file: avoid_print

import 'package:bloc/bloc.dart';

class SimpleBlocObserver extends BlocObserver {
  const SimpleBlocObserver();

  @override
  void onTransition(
    Bloc<dynamic, dynamic> bloc,
    Transition<dynamic, dynamic> transition,
  ) {
    super.onTransition(bloc, transition);
    print(transition);
  }

  @override
  void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace) {
    print(error);
    super.onError(bloc, error, stackTrace);
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/.gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Exceptions to above rules.
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
  channel: beta

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: android
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: ios
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: linux
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: macos
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: web
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: windows
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/app.dart
================================================
import 'package:authentication_repository/authentication_repository.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_login/authentication/authentication.dart';
import 'package:flutter_login/home/home.dart';
import 'package:flutter_login/login/login.dart';
import 'package:flutter_login/splash/splash.dart';
import 'package:user_repository/user_repository.dart';

class App extends StatefulWidget {
  const App({super.key});

  @override
  State<App> createState() => _AppState();
}

class _AppState extends State<App> {
  late final AuthenticationRepository _authenticationRepository;
  late final UserRepository _userRepository;

  @override
  void initState() {
    super.initState();
    _authenticationRepository = AuthenticationRepository();
    _userRepository = UserRepository();
  }

  @override
  void dispose() {
    _authenticationRepository.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return RepositoryProvider.value(
      value: _authenticationRepository,
      child: BlocProvider(
        create: (_) => AuthenticationBloc(
          authenticationRepository: _authenticationRepository,
          userRepository: _userRepository,
        ),
        child: const AppView(),
      ),
    );
  }
}

class AppView extends StatefulWidget {
  const AppView({super.key});

  @override
  State<AppView> createState() => _AppViewState();
}

class _AppViewState extends State<AppView> {
  final _navigatorKey = GlobalKey<NavigatorState>();

  NavigatorState get _navigator => _navigatorKey.currentState!;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      navigatorKey: _navigatorKey,
      builder: (context, child) {
        return BlocListener<AuthenticationBloc, AuthenticationState>(
          listener: (context, state) {
            switch (state.status) {
              case AuthenticationStatus.authenticated:
                _navigator.pushAndRemoveUntil<void>(
                  HomePage.route(),
                  (route) => false,
                );
              case AuthenticationStatus.unauthenticated:
                _navigator.pushAndRemoveUntil<void>(
                  LoginPage.route(),
                  (route) => false,
                );
              case AuthenticationStatus.unknown:
                break;
            }
          },
          child: child,
        );
      },
      onGenerateRoute: (_) => SplashPage.route(),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/authentication.dart
================================================
export 'bloc/authentication_bloc.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/bloc/authentication_bloc.dart
================================================
import 'dart:async';

import 'package:authentication_repository/authentication_repository.dart';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:user_repository/user_repository.dart';

part 'authentication_event.dart';
part 'authentication_state.dart';

class AuthenticationBloc
    extends Bloc<AuthenticationEvent, AuthenticationState> {
  AuthenticationBloc({
    required AuthenticationRepository authenticationRepository,
    required UserRepository userRepository,
  })  : _authenticationRepository = authenticationRepository,
        _userRepository = userRepository,
        super(const AuthenticationState.unknown()) {
    on<_AuthenticationStatusChanged>(_onAuthenticationStatusChanged);
    on<AuthenticationLogoutRequested>(_onAuthenticationLogoutRequested);
    _authenticationStatusSubscription = _authenticationRepository.status.listen(
      (status) => add(_AuthenticationStatusChanged(status)),
    );
  }

  final AuthenticationRepository _authenticationRepository;
  final UserRepository _userRepository;
  late StreamSubscription<AuthenticationStatus>
      _authenticationStatusSubscription;

  @override
  Future<void> close() {
    _authenticationStatusSubscription.cancel();
    return super.close();
  }

  Future<void> _onAuthenticationStatusChanged(
    _AuthenticationStatusChanged event,
    Emitter<AuthenticationState> emit,
  ) async {
    switch (event.status) {
      case AuthenticationStatus.unauthenticated:
        return emit(const AuthenticationState.unauthenticated());
      case AuthenticationStatus.authenticated:
        final user = await _tryGetUser();
        return emit(
          user != null
              ? AuthenticationState.authenticated(user)
              : const AuthenticationState.unauthenticated(),
        );
      case AuthenticationStatus.unknown:
        return emit(const AuthenticationState.unknown());
    }
  }

  void _onAuthenticationLogoutRequested(
    AuthenticationLogoutRequested event,
    Emitter<AuthenticationState> emit,
  ) {
    _authenticationRepository.logOut();
  }

  Future<User?> _tryGetUser() async {
    try {
      final user = await _userRepository.getUser();
      return user;
    } catch (_) {
      return null;
    }
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/bloc/authentication_event.dart
================================================
part of 'authentication_bloc.dart';

sealed class AuthenticationEvent {
  const AuthenticationEvent();
}

final class _AuthenticationStatusChanged extends AuthenticationEvent {
  const _AuthenticationStatusChanged(this.status);

  final AuthenticationStatus status;
}

final class AuthenticationLogoutRequested extends AuthenticationEvent {}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/bloc/authentication_state.dart
================================================
part of 'authentication_bloc.dart';

class AuthenticationState extends Equatable {
  const AuthenticationState._({
    this.status = AuthenticationStatus.unknown,
    this.user = User.empty,
  });

  const AuthenticationState.unknown() : this._();

  const AuthenticationState.authenticated(User user)
      : this._(status: AuthenticationStatus.authenticated, user: user);

  const AuthenticationState.unauthenticated()
      : this._(status: AuthenticationStatus.unauthenticated);

  final AuthenticationStatus status;
  final User user;

  @override
  List<Object> get props => [status, user];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/home/home.dart
================================================
export 'view/home_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/home/view/home_page.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_login/authentication/authentication.dart';

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  static Route<void> route() {
    return MaterialPageRoute<void>(builder: (_) => const HomePage());
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Home')),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            Builder(
              builder: (context) {
                final userId = context.select(
                  (AuthenticationBloc bloc) => bloc.state.user.id,
                );
                return Text('UserID: $userId');
              },
            ),
            ElevatedButton(
              child: const Text('Logout'),
              onPressed: () {
                context
                    .read<AuthenticationBloc>()
                    .add(AuthenticationLogoutRequested());
              },
            ),
          ],
        ),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/bloc/login_bloc.dart
================================================
import 'package:authentication_repository/authentication_repository.dart';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_login/login/login.dart';
import 'package:formz/formz.dart';

part 'login_event.dart';
part 'login_state.dart';

class LoginBloc extends Bloc<LoginEvent, LoginState> {
  LoginBloc({
    required AuthenticationRepository authenticationRepository,
  })  : _authenticationRepository = authenticationRepository,
        super(const LoginState()) {
    on<LoginUsernameChanged>(_onUsernameChanged);
    on<LoginPasswordChanged>(_onPasswordChanged);
    on<LoginSubmitted>(_onSubmitted);
  }

  final AuthenticationRepository _authenticationRepository;

  void _onUsernameChanged(
    LoginUsernameChanged event,
    Emitter<LoginState> emit,
  ) {
    final username = Username.dirty(event.username);
    emit(
      state.copyWith(
        username: username,
        isValid: Formz.validate([state.password, username]),
      ),
    );
  }

  void _onPasswordChanged(
    LoginPasswordChanged event,
    Emitter<LoginState> emit,
  ) {
    final password = Password.dirty(event.password);
    emit(
      state.copyWith(
        password: password,
        isValid: Formz.validate([password, state.username]),
      ),
    );
  }

  Future<void> _onSubmitted(
    LoginSubmitted event,
    Emitter<LoginState> emit,
  ) async {
    if (state.isValid) {
      emit(state.copyWith(status: FormzSubmissionStatus.inProgress));
      try {
        await _authenticationRepository.logIn(
          username: state.username.value,
          password: state.password.value,
        );
        emit(state.copyWith(status: FormzSubmissionStatus.success));
      } catch (_) {
        emit(state.copyWith(status: FormzSubmissionStatus.failure));
      }
    }
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/bloc/login_event.dart
================================================
part of 'login_bloc.dart';

sealed class LoginEvent extends Equatable {
  const LoginEvent();

  @override
  List<Object> get props => [];
}

final class LoginUsernameChanged extends LoginEvent {
  const LoginUsernameChanged(this.username);

  final String username;

  @override
  List<Object> get props => [username];
}

final class LoginPasswordChanged extends LoginEvent {
  const LoginPasswordChanged(this.password);

  final String password;

  @override
  List<Object> get props => [password];
}

final class LoginSubmitted extends LoginEvent {
  const LoginSubmitted();
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/bloc/login_state.dart
================================================
part of 'login_bloc.dart';

final class LoginState extends Equatable {
  const LoginState({
    this.status = FormzSubmissionStatus.initial,
    this.username = const Username.pure(),
    this.password = const Password.pure(),
    this.isValid = false,
  });

  final FormzSubmissionStatus status;
  final Username username;
  final Password password;
  final bool isValid;

  LoginState copyWith({
    FormzSubmissionStatus? status,
    Username? username,
    Password? password,
    bool? isValid,
  }) {
    return LoginState(
      status: status ?? this.status,
      username: username ?? this.username,
      password: password ?? this.password,
      isValid: isValid ?? this.isValid,
    );
  }

  @override
  List<Object> get props => [status, username, password];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/login.dart
================================================
export 'bloc/login_bloc.dart';
export 'models/models.dart';
export 'view/view.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/models/models.dart
================================================
export 'password.dart';
export 'username.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/models/password.dart
================================================
import 'package:formz/formz.dart';

enum PasswordValidationError { empty }

class Password extends FormzInput<String, PasswordValidationError> {
  const Password.pure() : super.pure('');
  const Password.dirty([super.value = '']) : super.dirty();

  @override
  PasswordValidationError? validator(String value) {
    if (value.isEmpty) return PasswordValidationError.empty;
    return null;
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/models/username.dart
================================================
import 'package:formz/formz.dart';

enum UsernameValidationError { empty }

class Username extends FormzInput<String, UsernameValidationError> {
  const Username.pure() : super.pure('');
  const Username.dirty([super.value = '']) : super.dirty();

  @override
  UsernameValidationError? validator(String value) {
    if (value.isEmpty) return UsernameValidationError.empty;
    return null;
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/view/login_form.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_login/login/login.dart';
import 'package:formz/formz.dart';

class LoginForm extends StatelessWidget {
  const LoginForm({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocListener<LoginBloc, LoginState>(
      listener: (context, state) {
        if (state.status.isFailure) {
          ScaffoldMessenger.of(context)
            ..hideCurrentSnackBar()
            ..showSnackBar(
              const SnackBar(content: Text('Authentication Failure')),
            );
        }
      },
      child: Align(
        alignment: const Alignment(0, -1 / 3),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            _UsernameInput(),
            const Padding(padding: EdgeInsets.all(12)),
            _PasswordInput(),
            const Padding(padding: EdgeInsets.all(12)),
            _LoginButton(),
          ],
        ),
      ),
    );
  }
}

class _UsernameInput extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<LoginBloc, LoginState>(
      buildWhen: (previous, current) => previous.username != current.username,
      builder: (context, state) {
        return TextField(
          key: const Key('loginForm_usernameInput_textField'),
          onChanged: (username) =>
              context.read<LoginBloc>().add(LoginUsernameChanged(username)),
          decoration: InputDecoration(
            labelText: 'username',
            errorText:
                state.username.displayError != null ? 'invalid username' : null,
          ),
        );
      },
    );
  }
}

class _PasswordInput extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<LoginBloc, LoginState>(
      buildWhen: (previous, current) => previous.password != current.password,
      builder: (context, state) {
        return TextField(
          key: const Key('loginForm_passwordInput_textField'),
          onChanged: (password) =>
              context.read<LoginBloc>().add(LoginPasswordChanged(password)),
          obscureText: true,
          decoration: InputDecoration(
            labelText: 'password',
            errorText:
                state.password.displayError != null ? 'invalid password' : null,
          ),
        );
      },
    );
  }
}

class _LoginButton extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocBuilder<LoginBloc, LoginState>(
      builder: (context, state) {
        return state.status.isInProgress
            ? const CircularProgressIndicator()
            : ElevatedButton(
                key: const Key('loginForm_continue_raisedButton'),
                onPressed: state.isValid
                    ? () {
                        context.read<LoginBloc>().add(const LoginSubmitted());
                      }
                    : null,
                child: const Text('Login'),
              );
      },
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/view/login_page.dart
================================================
import 'package:authentication_repository/authentication_repository.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_login/login/login.dart';

class LoginPage extends StatelessWidget {
  const LoginPage({super.key});

  static Route<void> route() {
    return MaterialPageRoute<void>(builder: (_) => const LoginPage());
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Login')),
      body: Padding(
        padding: const EdgeInsets.all(12),
        child: BlocProvider(
          create: (context) {
            return LoginBloc(
              authenticationRepository:
                  RepositoryProvider.of<AuthenticationRepository>(context),
            );
          },
          child: const LoginForm(),
        ),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/view/view.dart
================================================
export 'login_form.dart';
export 'login_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/main.dart
================================================
import 'package:flutter/widgets.dart';
import 'package:flutter_login/app.dart';

void main() => runApp(const App());


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/splash/splash.dart
================================================
export 'view/splash_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/splash/view/splash_page.dart
================================================
import 'package:flutter/material.dart';

class SplashPage extends StatelessWidget {
  const SplashPage({super.key});

  static Route<void> route() {
    return MaterialPageRoute<void>(builder: (_) => const SplashPage());
  }

  @override
  Widget build(BuildContext context) {
    return const Scaffold(
      body: Center(child: CircularProgressIndicator()),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/.gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.pub-cache/
.pub/
/build/

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
  channel: beta

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: android
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: ios
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: linux
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: macos
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: web
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: windows
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae

  # User provided section

  # List of Local paths (relative to this file) that should be
  # ignored by the migrate tool.
  #
  # Files that are not part of the templates will be ignored by default.
  unmanaged_files:
    - 'lib/main.dart'
    - 'ios/Runner.xcodeproj/project.pbxproj'


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/app.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_shopping_cart/cart/cart.dart';
import 'package:flutter_shopping_cart/catalog/catalog.dart';
import 'package:flutter_shopping_cart/shopping_repository.dart';

class App extends StatelessWidget {
  const App({required this.shoppingRepository, super.key});

  final ShoppingRepository shoppingRepository;

  @override
  Widget build(BuildContext context) {
    return MultiBlocProvider(
      providers: [
        BlocProvider(
          create: (_) => CatalogBloc(
            shoppingRepository: shoppingRepository,
          )..add(CatalogStarted()),
        ),
        BlocProvider(
          create: (_) => CartBloc(
            shoppingRepository: shoppingRepository,
          )..add(CartStarted()),
        ),
      ],
      child: MaterialApp(
        title: 'Flutter Bloc Shopping Cart',
        initialRoute: '/',
        routes: {
          '/': (_) => const CatalogPage(),
          '/cart': (_) => const CartPage(),
        },
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/bloc/cart_bloc.dart
================================================
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_shopping_cart/cart/cart.dart';
import 'package:flutter_shopping_cart/catalog/catalog.dart';
import 'package:flutter_shopping_cart/shopping_repository.dart';
import 'package:meta/meta.dart';

part 'cart_event.dart';
part 'cart_state.dart';

class CartBloc extends Bloc<CartEvent, CartState> {
  CartBloc({required this.shoppingRepository}) : super(CartLoading()) {
    on<CartStarted>(_onStarted);
    on<CartItemAdded>(_onItemAdded);
    on<CartItemRemoved>(_onItemRemoved);
  }

  final ShoppingRepository shoppingRepository;

  Future<void> _onStarted(CartStarted event, Emitter<CartState> emit) async {
    emit(CartLoading());
    try {
      final items = await shoppingRepository.loadCartItems();
      emit(CartLoaded(cart: Cart(items: [...items])));
    } catch (_) {
      emit(CartError());
    }
  }

  Future<void> _onItemAdded(
    CartItemAdded event,
    Emitter<CartState> emit,
  ) async {
    final state = this.state;
    if (state is CartLoaded) {
      try {
        shoppingRepository.addItemToCart(event.item);
        emit(CartLoaded(cart: Cart(items: [...state.cart.items, event.item])));
      } catch (_) {
        emit(CartError());
      }
    }
  }

  void _onItemRemoved(CartItemRemoved event, Emitter<CartState> emit) {
    final state = this.state;
    if (state is CartLoaded) {
      try {
        shoppingRepository.removeItemFromCart(event.item);
        emit(
          CartLoaded(
            cart: Cart(
              items: [...state.cart.items]..remove(event.item),
            ),
          ),
        );
      } catch (_) {
        emit(CartError());
      }
    }
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/bloc/cart_event.dart
================================================
part of 'cart_bloc.dart';

@immutable
sealed class CartEvent extends Equatable {
  const CartEvent();
}

final class CartStarted extends CartEvent {
  @override
  List<Object> get props => [];
}

final class CartItemAdded extends CartEvent {
  const CartItemAdded(this.item);

  final Item item;

  @override
  List<Object> get props => [item];
}

final class CartItemRemoved extends CartEvent {
  const CartItemRemoved(this.item);

  final Item item;

  @override
  List<Object> get props => [item];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/bloc/cart_state.dart
================================================
part of 'cart_bloc.dart';

@immutable
sealed class CartState extends Equatable {
  const CartState();
}

final class CartLoading extends CartState {
  @override
  List<Object> get props => [];
}

final class CartLoaded extends CartState {
  const CartLoaded({this.cart = const Cart()});

  final Cart cart;

  @override
  List<Object> get props => [cart];
}

final class CartError extends CartState {
  @override
  List<Object> get props => [];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/cart.dart
================================================
export 'bloc/cart_bloc.dart';
export 'models/models.dart';
export 'view/cart_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/models/cart.dart
================================================
import 'package:equatable/equatable.dart';
import 'package:flutter_shopping_cart/catalog/catalog.dart';

class Cart extends Equatable {
  const Cart({this.items = const <Item>[]});

  final List<Item> items;

  int get totalPrice {
    return items.fold(0, (total, current) => total + current.price);
  }

  @override
  List<Object> get props => [items];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/models/models.dart
================================================
export 'cart.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/view/cart_page.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_shopping_cart/cart/cart.dart';

class CartPage extends StatelessWidget {
  const CartPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Cart')),
      body: const ColoredBox(
        color: Colors.yellow,
        child: Column(
          children: [
            Expanded(
              child: Padding(
                padding: EdgeInsets.all(32),
                child: CartList(),
              ),
            ),
            Divider(height: 4, color: Colors.black),
            CartTotal(),
          ],
        ),
      ),
    );
  }
}

class CartList extends StatelessWidget {
  const CartList({super.key});

  @override
  Widget build(BuildContext context) {
    final itemNameStyle = Theme.of(context).textTheme.titleLarge;

    return BlocBuilder<CartBloc, CartState>(
      builder: (context, state) {
        return switch (state) {
          CartLoading() => const CircularProgressIndicator(),
          CartError() => const Text('Something went wrong!'),
          CartLoaded() => ListView.separated(
              itemCount: state.cart.items.length,
              separatorBuilder: (_, __) => const SizedBox(height: 4),
              itemBuilder: (context, index) {
                final item = state.cart.items[index];
                return Material(
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(16),
                  ),
                  clipBehavior: Clip.hardEdge,
                  child: ListTile(
                    leading: const Icon(Icons.done),
                    title: Text(item.name, style: itemNameStyle),
                    onLongPress: () {
                      context.read<CartBloc>().add(CartItemRemoved(item));
                    },
                  ),
                );
              },
            ),
        };
      },
    );
  }
}

class CartTotal extends StatelessWidget {
  const CartTotal({super.key});

  @override
  Widget build(BuildContext context) {
    final hugeStyle =
        Theme.of(context).textTheme.displayLarge?.copyWith(fontSize: 48);

    return SizedBox(
      height: 200,
      child: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            BlocBuilder<CartBloc, CartState>(
              builder: (context, state) {
                return switch (state) {
                  CartLoading() => const CircularProgressIndicator(),
                  CartError() => const Text('Something went wrong!'),
                  CartLoaded() =>
                    Text('\$${state.cart.totalPrice}', style: hugeStyle),
                };
              },
            ),
            const SizedBox(width: 24),
            ElevatedButton(
              onPressed: () {
                ScaffoldMessenger.of(context).showSnackBar(
                  const SnackBar(content: Text('Buying not supported yet.')),
                );
              },
              style: ElevatedButton.styleFrom(backgroundColor: Colors.black),
              child: const Text('BUY'),
            ),
          ],
        ),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/bloc/catalog_bloc.dart
================================================
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:flutter_shopping_cart/catalog/catalog.dart';
import 'package:flutter_shopping_cart/shopping_repository.dart';

part 'catalog_event.dart';
part 'catalog_state.dart';

class CatalogBloc extends Bloc<CatalogEvent, CatalogState> {
  CatalogBloc({required this.shoppingRepository}) : super(CatalogLoading()) {
    on<CatalogStarted>(_onStarted);
  }

  final ShoppingRepository shoppingRepository;

  Future<void> _onStarted(
    CatalogStarted event,
    Emitter<CatalogState> emit,
  ) async {
    emit(CatalogLoading());
    try {
      final catalog = await shoppingRepository.loadCatalog();
      emit(CatalogLoaded(Catalog(itemNames: catalog)));
    } catch (_) {
      emit(CatalogError());
    }
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/bloc/catalog_event.dart
================================================
part of 'catalog_bloc.dart';

sealed class CatalogEvent extends Equatable {
  const CatalogEvent();
}

final class CatalogStarted extends CatalogEvent {
  @override
  List<Object> get props => [];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/bloc/catalog_state.dart
================================================
part of 'catalog_bloc.dart';

sealed class CatalogState extends Equatable {
  const CatalogState();

  @override
  List<Object> get props => [];
}

final class CatalogLoading extends CatalogState {}

final class CatalogLoaded extends CatalogState {
  const CatalogLoaded(this.catalog);

  final Catalog catalog;

  @override
  List<Object> get props => [catalog];
}

final class CatalogError extends CatalogState {}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/catalog.dart
================================================
export 'bloc/catalog_bloc.dart';
export 'models/models.dart';
export 'view/catalog_page.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/models/catalog.dart
================================================
import 'package:equatable/equatable.dart';
import 'package:flutter_shopping_cart/catalog/catalog.dart';

class Catalog extends Equatable {
  const Catalog({required this.itemNames});

  final List<String> itemNames;

  Item getById(int id) => Item(id, itemNames[id % itemNames.length]);

  Item getByPosition(int position) => getById(position);

  @override
  List<Object> get props => [itemNames];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/models/item.dart
================================================
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';

class Item extends Equatable {
  Item(this.id, this.name)
      : color = Colors.primaries[id % Colors.primaries.length];

  final int id;
  final String name;
  final Color color;
  final int price = 42;

  @override
  List<Object> get props => [id, name, color, price];
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/models/models.dart
================================================
export 'catalog.dart';
export 'item.dart';


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/view/catalog_page.dart
================================================
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_shopping_cart/cart/cart.dart';
import 'package:flutter_shopping_cart/catalog/catalog.dart';

class CatalogPage extends StatelessWidget {
  const CatalogPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: CustomScrollView(
        slivers: [
          const CatalogAppBar(),
          const SliverToBoxAdapter(child: SizedBox(height: 12)),
          BlocBuilder<CatalogBloc, CatalogState>(
            builder: (context, state) {
              return switch (state) {
                CatalogLoading() => const SliverFillRemaining(
                    child: Center(child: CircularProgressIndicator()),
                  ),
                CatalogError() => const SliverFillRemaining(
                    child: Text('Something went wrong!'),
                  ),
                CatalogLoaded() => SliverList(
                    delegate: SliverChildBuilderDelegate(
                      (context, index) => CatalogListItem(
                        state.catalog.getByPosition(index),
                      ),
                      childCount: state.catalog.itemNames.length,
                    ),
                  )
              };
            },
          ),
        ],
      ),
    );
  }
}

class AddButton extends StatelessWidget {
  const AddButton({required this.item, super.key});

  final Item item;

  @override
  Widget build(BuildContext context) {
    final theme = Theme.of(context);
    return BlocBuilder<CartBloc, CartState>(
      builder: (context, state) {
        return switch (state) {
          CartLoading() => const CircularProgressIndicator(),
          CartError() => const Text('Something went wrong!'),
          CartLoaded() => Builder(
              builder: (context) {
                final isInCart = state.cart.items.contains(item);
                return TextButton(
                  style: TextButton.styleFrom(
                    disabledForegroundColor: theme.primaryColor,
                  ),
                  onPressed: isInCart
                      ? null
                      : () => context.read<CartBloc>().add(CartItemAdded(item)),
                  child: isInCart
                      ? const Icon(Icons.check, semanticLabel: 'ADDED')
                      : const Text('ADD'),
                );
              },
            )
        };
      },
    );
  }
}

class CatalogAppBar extends StatelessWidget {
  const CatalogAppBar({super.key});

  @override
  Widget build(BuildContext context) {
    return SliverAppBar(
      title: const Text('Catalog'),
      floating: true,
      actions: [
        IconButton(
          icon: const Icon(Icons.shopping_cart),
          onPressed: () => Navigator.of(context).pushNamed('/cart'),
        ),
      ],
    );
  }
}

class CatalogListItem extends StatelessWidget {
  const CatalogListItem(this.item, {super.key});

  final Item item;

  @override
  Widget build(BuildContext context) {
    final textTheme = Theme.of(context).textTheme.titleLarge;
    return Padding(
      padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
      child: LimitedBox(
        maxHeight: 48,
        child: Row(
          children: [
            AspectRatio(aspectRatio: 1, child: ColoredBox(color: item.color)),
            const SizedBox(width: 24),
            Expanded(child: Text(item.name, style: textTheme)),
            const SizedBox(width: 24),
            AddButton(item: item),
          ],
        ),
      ),
    );
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/main.dart
================================================
import 'package:flutter/widgets.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_shopping_cart/app.dart';
import 'package:flutter_shopping_cart/shopping_repository.dart';
import 'package:flutter_shopping_cart/simple_bloc_observer.dart';

void main() {
  Bloc.observer = const SimpleBlocObserver();
  runApp(App(shoppingRepository: ShoppingRepository()));
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/shopping_repository.dart
================================================
import 'dart:async';

import 'package:flutter_shopping_cart/catalog/catalog.dart';

const _delay = Duration(milliseconds: 800);

const _catalog = [
  'Code Smell',
  'Control Flow',
  'Interpreter',
  'Recursion',
  'Sprint',
  'Heisenbug',
  'Spaghetti',
  'Hydra Code',
  'Off-By-One',
  'Scope',
  'Callback',
  'Closure',
  'Automata',
  'Bit Shift',
  'Currying',
];

class ShoppingRepository {
  final _items = <Item>[];

  Future<List<String>> loadCatalog() => Future.delayed(_delay, () => _catalog);

  Future<List<Item>> loadCartItems() => Future.delayed(_delay, () => _items);

  void addItemToCart(Item item) => _items.add(item);

  void removeItemFromCart(Item item) => _items.remove(item);
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/simple_bloc_observer.dart
================================================
import 'dart:developer';

import 'package:bloc/bloc.dart';

class SimpleBlocObserver extends BlocObserver {
  const SimpleBlocObserver();

  @override
  void onEvent(Bloc<dynamic, dynamic> bloc, Object? event) {
    super.onEvent(bloc, event);
    log('${bloc.runtimeType} $event');
  }

  @override
  void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace) {
    log('${bloc.runtimeType} $error');
    super.onError(bloc, error, stackTrace);
  }

  @override
  void onTransition(
    Bloc<dynamic, dynamic> bloc,
    Transition<dynamic, dynamic> transition,
  ) {
    super.onTransition(bloc, transition);
    log('$transition');
  }
}


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/.gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# Visual Studio Code related
.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release


================================================
FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/.metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.

version:
  revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
  channel: beta

project_type: app

# Tracks metadata for the flutter migrate command
migration:
  platforms:
    - platform: root
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: android
      create_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
      base_revision: b1c77b7ed32346fe829c0ca97bd85d19290d54ae
    - platform: ios
      create_revision: b1c77b7ed32346fe829c0c
Download .txt
gitextract_6tcd7rgx/

├── .github/
│   └── FUNDING.yml
├── C++ GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       └── standards
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Firebase GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       └── standards
├── Flutter GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       ├── examples/
│       │   ├── .github/
│       │   │   ├── CODEOWNERS
│       │   │   ├── DOCS_ISSUE_TEMPLATE.md
│       │   │   ├── FUNDING.yml
│       │   │   ├── ISSUE_TEMPLATE/
│       │   │   │   ├── bug_report.md
│       │   │   │   ├── build.md
│       │   │   │   ├── chore.md
│       │   │   │   ├── ci.md
│       │   │   │   ├── config.yml
│       │   │   │   ├── documentation.md
│       │   │   │   ├── feature_request.md
│       │   │   │   ├── performance.md
│       │   │   │   ├── refactor.md
│       │   │   │   ├── revert.md
│       │   │   │   ├── style.md
│       │   │   │   └── test.md
│       │   │   ├── PULL_REQUEST_TEMPLATE.md
│       │   │   └── workflows/
│       │   │       ├── angular_bloc.yaml
│       │   │       ├── angular_dart_examples.yaml
│       │   │       ├── bloc.yaml
│       │   │       ├── bloc_concurrency.yaml
│       │   │       ├── bloc_test.yaml
│       │   │       ├── bloc_tools.yaml
│       │   │       ├── build.yaml
│       │   │       ├── docs.yaml
│       │   │       ├── flutter_bloc.yaml
│       │   │       ├── flutter_examples.yaml
│       │   │       ├── hydrated_bloc.yaml
│       │   │       └── replay_bloc.yaml
│       │   ├── .gitignore
│       │   └── flutter_bloc/
│       │       ├── angular_counter/
│       │       │   ├── .gitignore
│       │       │   └── counter_bloc.dart
│       │       ├── flutter_bloc_with_stream/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── bloc/
│       │       │   │   ├── ticker_bloc.dart
│       │       │   │   ├── ticker_event.dart
│       │       │   │   └── ticker_state.dart
│       │       │   ├── main.dart
│       │       │   └── ticker/
│       │       │       └── ticker.dart
│       │       ├── flutter_complex_list/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── complex_list/
│       │       │   │   ├── complex_list.dart
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── complex_list_cubit.dart
│       │       │   │   │   └── complex_list_state.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── item.dart
│       │       │   │   │   └── models.dart
│       │       │   │   └── view/
│       │       │   │       ├── complex_list_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── main.dart
│       │       │   ├── repository.dart
│       │       │   └── simple_bloc_observer.dart
│       │       ├── flutter_counter/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── counter/
│       │       │   │   ├── counter.dart
│       │       │   │   ├── cubit/
│       │       │   │   │   └── counter_cubit.dart
│       │       │   │   └── view/
│       │       │   │       ├── counter_page.dart
│       │       │   │       ├── counter_view.dart
│       │       │   │       └── view.dart
│       │       │   ├── counter_observer.dart
│       │       │   └── main.dart
│       │       ├── flutter_dynamic_form/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── main.dart
│       │       │   ├── new_car/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── new_car_bloc.dart
│       │       │   │   │   ├── new_car_event.dart
│       │       │   │   │   └── new_car_state.dart
│       │       │   │   ├── new_car.dart
│       │       │   │   └── view/
│       │       │   │       └── new_car_page.dart
│       │       │   └── new_car_repository.dart
│       │       ├── flutter_firebase_login/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app/
│       │       │   │   ├── app.dart
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── app_bloc.dart
│       │       │   │   │   ├── app_event.dart
│       │       │   │   │   └── app_state.dart
│       │       │   │   ├── bloc_observer.dart
│       │       │   │   ├── routes/
│       │       │   │   │   └── routes.dart
│       │       │   │   └── view/
│       │       │   │       └── app.dart
│       │       │   ├── generated_plugin_registrant.dart
│       │       │   ├── home/
│       │       │   │   ├── home.dart
│       │       │   │   ├── view/
│       │       │   │   │   └── home_page.dart
│       │       │   │   └── widgets/
│       │       │   │       ├── avatar.dart
│       │       │   │       └── widgets.dart
│       │       │   ├── login/
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── login_cubit.dart
│       │       │   │   │   └── login_state.dart
│       │       │   │   ├── login.dart
│       │       │   │   └── view/
│       │       │   │       ├── login_form.dart
│       │       │   │       ├── login_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── main.dart
│       │       │   ├── sign_up/
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── sign_up_cubit.dart
│       │       │   │   │   └── sign_up_state.dart
│       │       │   │   ├── sign_up.dart
│       │       │   │   └── view/
│       │       │   │       ├── sign_up_form.dart
│       │       │   │       ├── sign_up_page.dart
│       │       │   │       └── view.dart
│       │       │   └── theme.dart
│       │       ├── flutter_form_validation/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── bloc/
│       │       │   │   ├── my_form_bloc.dart
│       │       │   │   ├── my_form_event.dart
│       │       │   │   └── my_form_state.dart
│       │       │   ├── main.dart
│       │       │   └── models/
│       │       │       ├── email.dart
│       │       │       ├── models.dart
│       │       │       └── password.dart
│       │       ├── flutter_infinite_list/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── main.dart
│       │       │   ├── posts/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── post_bloc.dart
│       │       │   │   │   ├── post_event.dart
│       │       │   │   │   └── post_state.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── models.dart
│       │       │   │   │   └── post.dart
│       │       │   │   ├── posts.dart
│       │       │   │   ├── view/
│       │       │   │   │   ├── posts_list.dart
│       │       │   │   │   ├── posts_page.dart
│       │       │   │   │   └── view.dart
│       │       │   │   └── widgets/
│       │       │   │       ├── bottom_loader.dart
│       │       │   │       ├── post_list_item.dart
│       │       │   │       └── widgets.dart
│       │       │   └── simple_bloc_observer.dart
│       │       ├── flutter_login/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── authentication/
│       │       │   │   ├── authentication.dart
│       │       │   │   └── bloc/
│       │       │   │       ├── authentication_bloc.dart
│       │       │   │       ├── authentication_event.dart
│       │       │   │       └── authentication_state.dart
│       │       │   ├── home/
│       │       │   │   ├── home.dart
│       │       │   │   └── view/
│       │       │   │       └── home_page.dart
│       │       │   ├── login/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── login_bloc.dart
│       │       │   │   │   ├── login_event.dart
│       │       │   │   │   └── login_state.dart
│       │       │   │   ├── login.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── models.dart
│       │       │   │   │   ├── password.dart
│       │       │   │   │   └── username.dart
│       │       │   │   └── view/
│       │       │   │       ├── login_form.dart
│       │       │   │       ├── login_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── main.dart
│       │       │   └── splash/
│       │       │       ├── splash.dart
│       │       │       └── view/
│       │       │           └── splash_page.dart
│       │       ├── flutter_shopping_cart/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── cart/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── cart_bloc.dart
│       │       │   │   │   ├── cart_event.dart
│       │       │   │   │   └── cart_state.dart
│       │       │   │   ├── cart.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── cart.dart
│       │       │   │   │   └── models.dart
│       │       │   │   └── view/
│       │       │   │       └── cart_page.dart
│       │       │   ├── catalog/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── catalog_bloc.dart
│       │       │   │   │   ├── catalog_event.dart
│       │       │   │   │   └── catalog_state.dart
│       │       │   │   ├── catalog.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── catalog.dart
│       │       │   │   │   ├── item.dart
│       │       │   │   │   └── models.dart
│       │       │   │   └── view/
│       │       │   │       └── catalog_page.dart
│       │       │   ├── main.dart
│       │       │   ├── shopping_repository.dart
│       │       │   └── simple_bloc_observer.dart
│       │       ├── flutter_timer/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── main.dart
│       │       │   ├── ticker.dart
│       │       │   └── timer/
│       │       │       ├── bloc/
│       │       │       │   ├── timer_bloc.dart
│       │       │       │   ├── timer_event.dart
│       │       │       │   └── timer_state.dart
│       │       │       ├── timer.dart
│       │       │       └── view/
│       │       │           └── timer_page.dart
│       │       ├── flutter_todos/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── .vscode/
│       │       │   │   └── launch.json
│       │       │   ├── app/
│       │       │   │   ├── app.dart
│       │       │   │   └── app_bloc_observer.dart
│       │       │   ├── bootstrap.dart
│       │       │   ├── edit_todo/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── edit_todo_bloc.dart
│       │       │   │   │   ├── edit_todo_event.dart
│       │       │   │   │   └── edit_todo_state.dart
│       │       │   │   ├── edit_todo.dart
│       │       │   │   └── view/
│       │       │   │       ├── edit_todo_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── generated_plugin_registrant.dart
│       │       │   ├── home/
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── home_cubit.dart
│       │       │   │   │   └── home_state.dart
│       │       │   │   ├── home.dart
│       │       │   │   └── view/
│       │       │   │       ├── home_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── l10n/
│       │       │   │   ├── arb/
│       │       │   │   │   └── app_en.arb
│       │       │   │   └── l10n.dart
│       │       │   ├── main_development.dart
│       │       │   ├── main_production.dart
│       │       │   ├── main_staging.dart
│       │       │   ├── stats/
│       │       │   │   ├── bloc/
│       │       │   │   │   ├── stats_bloc.dart
│       │       │   │   │   ├── stats_event.dart
│       │       │   │   │   └── stats_state.dart
│       │       │   │   ├── stats.dart
│       │       │   │   └── view/
│       │       │   │       ├── stats_page.dart
│       │       │   │       └── view.dart
│       │       │   ├── theme/
│       │       │   │   └── theme.dart
│       │       │   └── todos_overview/
│       │       │       ├── bloc/
│       │       │       │   ├── todos_overview_bloc.dart
│       │       │       │   ├── todos_overview_event.dart
│       │       │       │   └── todos_overview_state.dart
│       │       │       ├── models/
│       │       │       │   ├── models.dart
│       │       │       │   └── todos_view_filter.dart
│       │       │       ├── todos_overview.dart
│       │       │       ├── view/
│       │       │       │   ├── todos_overview_page.dart
│       │       │       │   └── view.dart
│       │       │       └── widgets/
│       │       │           ├── todo_list_tile.dart
│       │       │           ├── todos_overview_filter_button.dart
│       │       │           ├── todos_overview_options_button.dart
│       │       │           └── widgets.dart
│       │       ├── flutter_weather/
│       │       │   ├── .gitignore
│       │       │   ├── .metadata
│       │       │   ├── app.dart
│       │       │   ├── main.dart
│       │       │   ├── search/
│       │       │   │   ├── search.dart
│       │       │   │   └── view/
│       │       │   │       └── search_page.dart
│       │       │   ├── settings/
│       │       │   │   ├── settings.dart
│       │       │   │   └── view/
│       │       │   │       └── settings_page.dart
│       │       │   ├── theme/
│       │       │   │   ├── cubit/
│       │       │   │   │   └── theme_cubit.dart
│       │       │   │   └── theme.dart
│       │       │   ├── weather/
│       │       │   │   ├── cubit/
│       │       │   │   │   ├── weather_cubit.dart
│       │       │   │   │   ├── weather_cubit.g.dart
│       │       │   │   │   └── weather_state.dart
│       │       │   │   ├── models/
│       │       │   │   │   ├── models.dart
│       │       │   │   │   ├── weather.dart
│       │       │   │   │   └── weather.g.dart
│       │       │   │   ├── view/
│       │       │   │   │   └── weather_page.dart
│       │       │   │   ├── weather.dart
│       │       │   │   └── widgets/
│       │       │   │       ├── weather_empty.dart
│       │       │   │       ├── weather_error.dart
│       │       │   │       ├── weather_loading.dart
│       │       │   │       ├── weather_populated.dart
│       │       │   │       └── widgets.dart
│       │       │   └── weather_bloc_observer.dart
│       │       └── flutter_wizard/
│       │           ├── .gitignore
│       │           ├── .metadata
│       │           ├── bloc/
│       │           │   ├── profile_wizard_bloc.dart
│       │           │   ├── profile_wizard_event.dart
│       │           │   └── profile_wizard_state.dart
│       │           └── main.dart
│       ├── examples.txt
│       └── standards
├── Git Assistant/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       └── standards
├── LICENSE
├── Node_js GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       └── standards
├── Python GPT/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── MatPlotLibAssistant/
│   │   ├── .github/
│   │   │   └── FUNDING.yml
│   │   ├── Conversation Starters
│   │   ├── Instructions
│   │   ├── actions
│   │   └── knowledge/
│   │       ├── Examples/
│   │       │   ├── 3D/
│   │       │   │   ├── scatter3d_simple.py
│   │       │   │   ├── surface3d_simple.py
│   │       │   │   ├── trisurf3d_simple.py
│   │       │   │   ├── voxels_simple.py
│   │       │   │   └── wire3d_simple.py
│   │       │   ├── arrays/
│   │       │   │   ├── barbs.py
│   │       │   │   ├── contour.py
│   │       │   │   ├── contourf.py
│   │       │   │   ├── imshow.py
│   │       │   │   ├── pcolormesh.py
│   │       │   │   ├── quiver.py
│   │       │   │   └── streamplot.py
│   │       │   ├── basic/
│   │       │   │   ├── bar.py
│   │       │   │   ├── fill_between.py
│   │       │   │   ├── plot.py
│   │       │   │   ├── scatter_plot.py
│   │       │   │   ├── stackplot.py
│   │       │   │   ├── stairs.py
│   │       │   │   └── stem.py
│   │       │   ├── stats/
│   │       │   │   ├── boxplot_plot.py
│   │       │   │   ├── ecdf.py
│   │       │   │   ├── errorbar_plot.py
│   │       │   │   ├── eventplot.py
│   │       │   │   ├── hexbin.py
│   │       │   │   ├── hist2d.py
│   │       │   │   ├── hist_plot.py
│   │       │   │   ├── pie.py
│   │       │   │   └── violin.py
│   │       │   └── unstructured/
│   │       │       ├── tricontour.py
│   │       │       ├── tricontourf.py
│   │       │       ├── tripcolor.py
│   │       │       └── triplot.py
│   │       └── standards.txt
│   ├── actions
│   └── knowledge/
│       ├── advanced topics
│       ├── standards
│       └── subAssistants.txt
├── README.md
├── SECURITY.md
├── inventory.json
├── regex/
│   ├── .github/
│   │   └── FUNDING.yml
│   ├── Conversation Starters
│   ├── Instructions
│   ├── actions
│   └── knowledge/
│       ├── ECMA
│       ├── Go
│       ├── Java 8
│       ├── PCRE2
│       ├── Python
│       ├── Rust
│       ├── javascript
│       ├── net
│       └── standards
└── template/
    ├── .github/
    │   └── FUNDING.yml
    ├── Conversation Starters
    ├── Instructions
    ├── actions
    └── knowledge/
        └── standards
Download .txt
SYMBOL INDEX (547 symbols across 145 files)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/angular_counter/counter_bloc.dart
  class CounterEvent (line 4) | sealed class CounterEvent {}
  class CounterIncrementPressed (line 7) | final class CounterIncrementPressed extends CounterEvent {}
  class CounterDecrementPressed (line 10) | final class CounterDecrementPressed extends CounterEvent {}
  class CounterBloc (line 15) | class CounterBloc extends Bloc<CounterEvent, int> {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/bloc/ticker_bloc.dart
  class TickerBloc (line 13) | class TickerBloc extends Bloc<TickerEvent, TickerState> {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/bloc/ticker_event.dart
  class TickerEvent (line 7) | sealed class TickerEvent extends Equatable {
  class TickerStarted (line 19) | final class TickerStarted extends TickerEvent {
  class _TickerTicked (line 24) | final class _TickerTicked extends TickerEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/bloc/ticker_state.dart
  class TickerState (line 7) | sealed class TickerState extends Equatable {
  class TickerInitial (line 16) | final class TickerInitial extends TickerState {}
  class TickerTickSuccess (line 22) | final class TickerTickSuccess extends TickerState {
  class TickerComplete (line 36) | final class TickerComplete extends TickerState {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/main.dart
  function main (line 6) | void main()
  class TickerApp (line 13) | class TickerApp extends MaterialApp {
  class TickerPage (line 30) | class TickerPage extends StatelessWidget {
    method build (line 35) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/ticker/ticker.dart
  class Ticker (line 4) | class Ticker {
    method tick (line 6) | Stream<int> tick()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/app.dart
  class App (line 6) | class App extends MaterialApp {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/cubit/complex_list_cubit.dart
  class ComplexListCubit (line 10) | class ComplexListCubit extends Cubit<ComplexListState> {
    method fetchList (line 16) | Future<void> fetchList()
    method deleteItem (line 25) | Future<void> deleteItem(String id)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/cubit/complex_list_state.dart
  type ListStatus (line 3) | enum ListStatus { loading, success, failure }
  class ComplexListState (line 5) | final class ComplexListState extends Equatable {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/models/item.dart
  class Item (line 3) | class Item extends Equatable {
    method copyWith (line 14) | Item copyWith({String? id, String? value, bool? isDeleting})

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/view/complex_list_page.dart
  class ComplexListPage (line 6) | class ComplexListPage extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)
  class ComplexListView (line 23) | class ComplexListView extends StatelessWidget {
    method build (line 27) | Widget build(BuildContext context)
  class ItemView (line 40) | class ItemView extends StatelessWidget {
    method build (line 46) | Widget build(BuildContext context)
  class ItemTile (line 63) | class ItemTile extends StatelessWidget {
    method build (line 74) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/main.dart
  function main (line 8) | void main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/repository.dart
  class Repository (line 6) | class Repository {
    method _randomRange (line 9) | int _randomRange(int min, int max)
    method fetchItems (line 11) | Future<List<Item>> fetchItems()
    method _generateItemsList (line 16) | List<Item> _generateItemsList(int length)
    method deleteItem (line 23) | Future<void> deleteItem(String id)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/simple_bloc_observer.dart
  class SimpleBlocObserver (line 3) | class SimpleBlocObserver extends BlocObserver {
    method onError (line 7) | void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace)
    method onChange (line 14) | void onChange(BlocBase<dynamic> bloc, Change<dynamic> change)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/app.dart
  class CounterApp (line 7) | class CounterApp extends MaterialApp {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/cubit/counter_cubit.dart
  class CounterCubit (line 6) | class CounterCubit extends Cubit<int> {
    method increment (line 11) | void increment()
    method decrement (line 14) | void decrement()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/view/counter_page.dart
  class CounterPage (line 9) | class CounterPage extends StatelessWidget {
    method build (line 14) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/view/counter_view.dart
  class CounterView (line 9) | class CounterView extends StatelessWidget {
    method build (line 14) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter_observer.dart
  class CounterObserver (line 7) | class CounterObserver extends BlocObserver {
    method onChange (line 12) | void onChange(BlocBase<dynamic> bloc, Change<dynamic> change)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/main.dart
  function main (line 6) | void main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/app.dart
  class MyApp (line 6) | class MyApp extends StatelessWidget {
    method build (line 12) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/main.dart
  function main (line 5) | void main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/bloc/new_car_bloc.dart
  class NewCarBloc (line 9) | class NewCarBloc extends Bloc<NewCarEvent, NewCarState> {
    method _onEvent (line 18) | Future<void> _onEvent(NewCarEvent event, Emitter<NewCarState> emit)
    method _onNewCarFormLoaded (line 27) | Future<void> _onNewCarFormLoaded(
    method _onNewCarBrandChanged (line 36) | Future<void> _onNewCarBrandChanged(
    method _onNewCarModelChanged (line 56) | Future<void> _onNewCarModelChanged(
    method _onNewCarYearChanged (line 83) | Future<void> _onNewCarYearChanged(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/bloc/new_car_event.dart
  class NewCarEvent (line 3) | sealed class NewCarEvent extends Equatable {
  class NewCarFormLoaded (line 10) | final class NewCarFormLoaded extends NewCarEvent {
  class NewCarBrandChanged (line 14) | final class NewCarBrandChanged extends NewCarEvent {
  class NewCarModelChanged (line 23) | final class NewCarModelChanged extends NewCarEvent {
  class NewCarYearChanged (line 32) | final class NewCarYearChanged extends NewCarEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/bloc/new_car_state.dart
  class NewCarState (line 3) | final class NewCarState extends Equatable {
    method copyWith (line 52) | NewCarState copyWith({

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/view/new_car_page.dart
  class NewCarPage (line 6) | class NewCarPage extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)
  class NewCarForm (line 23) | class NewCarForm extends StatelessWidget {
    method build (line 27) | Widget build(BuildContext context)
  class _BrandDropdownButton (line 40) | class _BrandDropdownButton extends StatelessWidget {
    method build (line 44) | Widget build(BuildContext context)
  class _ModelDropdownButton (line 65) | class _ModelDropdownButton extends StatelessWidget {
    method build (line 69) | Widget build(BuildContext context)
  class _YearDropdownButton (line 90) | class _YearDropdownButton extends StatelessWidget {
    method build (line 94) | Widget build(BuildContext context)
  class _FormSubmitButton (line 115) | class _FormSubmitButton extends StatelessWidget {
    method build (line 119) | Widget build(BuildContext context)
    method onFormSubmitted (line 122) | void onFormSubmitted()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car_repository.dart
  function wait (line 2) | Future<void> wait()
  class NewCarRepository (line 4) | class NewCarRepository {
    method fetchBrands (line 5) | Future<List<String>> fetchBrands()
    method fetchModels (line 10) | Future<List<String>> fetchModels({String? brand})
    method fetchYears (line 24) | Future<List<String>> fetchYears({String? brand, String? model})

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc/app_bloc.dart
  class AppBloc (line 10) | class AppBloc extends Bloc<AppEvent, AppState> {
    method _onUserChanged (line 28) | void _onUserChanged(_AppUserChanged event, Emitter<AppState> emit)
    method _onLogoutRequested (line 36) | void _onLogoutRequested(AppLogoutRequested event, Emitter<AppState> emit)
    method close (line 41) | Future<void> close()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc/app_event.dart
  class AppEvent (line 3) | sealed class AppEvent {
  class AppLogoutRequested (line 7) | final class AppLogoutRequested extends AppEvent {
  class _AppUserChanged (line 11) | final class _AppUserChanged extends AppEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc/app_state.dart
  type AppStatus (line 3) | enum AppStatus {
  class AppState (line 8) | final class AppState extends Equatable {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc_observer.dart
  class AppBlocObserver (line 4) | class AppBlocObserver extends BlocObserver {
    method onEvent (line 8) | void onEvent(Bloc<dynamic, dynamic> bloc, Object? event)
    method onError (line 14) | void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace)
    method onChange (line 20) | void onChange(BlocBase<dynamic> bloc, Change<dynamic> change)
    method onTransition (line 26) | void onTransition(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/routes/routes.dart
  function onGenerateAppViewPages (line 6) | List<Page<dynamic>> onGenerateAppViewPages(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/view/app.dart
  class App (line 8) | class App extends StatelessWidget {
    method build (line 17) | Widget build(BuildContext context)
  class AppView (line 30) | class AppView extends StatelessWidget {
    method build (line 34) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/generated_plugin_registrant.dart
  function registerPlugins (line 16) | void registerPlugins(Registrar registrar)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/view/home_page.dart
  class HomePage (line 6) | class HomePage extends StatelessWidget {
    method page (line 9) | Page<void> page()
    method build (line 12) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/widgets/avatar.dart
  class Avatar (line 5) | class Avatar extends StatelessWidget {
    method build (line 11) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/cubit/login_cubit.dart
  class LoginCubit (line 9) | class LoginCubit extends Cubit<LoginState> {
    method emailChanged (line 14) | void emailChanged(String value)
    method passwordChanged (line 24) | void passwordChanged(String value)
    method logInWithCredentials (line 34) | Future<void> logInWithCredentials()
    method logInWithGoogle (line 55) | Future<void> logInWithGoogle()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/cubit/login_state.dart
  class LoginState (line 3) | final class LoginState extends Equatable {
    method copyWith (line 21) | LoginState copyWith({

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/view/login_form.dart
  class LoginForm (line 8) | class LoginForm extends StatelessWidget {
    method build (line 12) | Widget build(BuildContext context)
  class _EmailInput (line 53) | class _EmailInput extends StatelessWidget {
    method build (line 55) | Widget build(BuildContext context)
  class _PasswordInput (line 75) | class _PasswordInput extends StatelessWidget {
    method build (line 77) | Widget build(BuildContext context)
  class _LoginButton (line 98) | class _LoginButton extends StatelessWidget {
    method build (line 100) | Widget build(BuildContext context)
  class _GoogleLoginButton (line 123) | class _GoogleLoginButton extends StatelessWidget {
    method build (line 125) | Widget build(BuildContext context)
  class _SignUpButton (line 145) | class _SignUpButton extends StatelessWidget {
    method build (line 147) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/view/login_page.dart
  class LoginPage (line 6) | class LoginPage extends StatelessWidget {
    method page (line 9) | Page<void> page()
    method build (line 12) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/main.dart
  function main (line 7) | Future<void> main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/cubit/sign_up_cubit.dart
  class SignUpCubit (line 9) | class SignUpCubit extends Cubit<SignUpState> {
    method emailChanged (line 14) | void emailChanged(String value)
    method passwordChanged (line 28) | void passwordChanged(String value)
    method confirmedPasswordChanged (line 47) | void confirmedPasswordChanged(String value)
    method signUpFormSubmitted (line 64) | Future<void> signUpFormSubmitted()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/cubit/sign_up_state.dart
  type ConfirmPasswordValidationError (line 3) | enum ConfirmPasswordValidationError { invalid }
  class SignUpState (line 5) | final class SignUpState extends Equatable {
    method copyWith (line 32) | SignUpState copyWith({

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/view/sign_up_form.dart
  class SignUpForm (line 6) | class SignUpForm extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)
  class _EmailInput (line 42) | class _EmailInput extends StatelessWidget {
    method build (line 44) | Widget build(BuildContext context)
  class _PasswordInput (line 64) | class _PasswordInput extends StatelessWidget {
    method build (line 66) | Widget build(BuildContext context)
  class _ConfirmPasswordInput (line 87) | class _ConfirmPasswordInput extends StatelessWidget {
    method build (line 89) | Widget build(BuildContext context)
  class _SignUpButton (line 114) | class _SignUpButton extends StatelessWidget {
    method build (line 116) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/view/sign_up_page.dart
  class SignUpPage (line 6) | class SignUpPage extends StatelessWidget {
    method route (line 9) | Route<void> route()
    method build (line 14) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/bloc/my_form_bloc.dart
  class MyFormBloc (line 11) | class MyFormBloc extends Bloc<MyFormEvent, MyFormState> {
    method _onEmailChanged (line 20) | void _onEmailChanged(EmailChanged event, Emitter<MyFormState> emit)
    method _onPasswordChanged (line 30) | void _onPasswordChanged(PasswordChanged event, Emitter<MyFormState> emit)
    method _onEmailUnfocused (line 40) | void _onEmailUnfocused(EmailUnfocused event, Emitter<MyFormState> emit)
    method _onPasswordUnfocused (line 50) | void _onPasswordUnfocused(
    method _onFormSubmitted (line 63) | Future<void> _onFormSubmitted(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/bloc/my_form_event.dart
  class MyFormEvent (line 3) | sealed class MyFormEvent extends Equatable {
  class EmailChanged (line 10) | final class EmailChanged extends MyFormEvent {
  class EmailUnfocused (line 19) | final class EmailUnfocused extends MyFormEvent {}
  class PasswordChanged (line 21) | final class PasswordChanged extends MyFormEvent {
  class PasswordUnfocused (line 30) | final class PasswordUnfocused extends MyFormEvent {}
  class FormSubmitted (line 32) | final class FormSubmitted extends MyFormEvent {}

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/bloc/my_form_state.dart
  class MyFormState (line 3) | final class MyFormState extends Equatable {
    method copyWith (line 16) | MyFormState copyWith({

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/main.dart
  function main (line 6) | void main()
  class App (line 8) | class App extends StatelessWidget {
    method build (line 12) | Widget build(BuildContext context)
  class MyForm (line 25) | class MyForm extends StatefulWidget {
    method createState (line 29) | State<MyForm> createState()
  class _MyFormState (line 32) | class _MyFormState extends State<MyForm> {
    method initState (line 37) | void initState()
    method dispose (line 53) | void dispose()
    method build (line 60) | Widget build(BuildContext context)
  class EmailInput (line 92) | class EmailInput extends StatelessWidget {
    method build (line 98) | Widget build(BuildContext context)
  class PasswordInput (line 123) | class PasswordInput extends StatelessWidget {
    method build (line 129) | Widget build(BuildContext context)
  class SubmitButton (line 157) | class SubmitButton extends StatelessWidget {
    method build (line 161) | Widget build(BuildContext context)
  class SuccessDialog (line 172) | class SuccessDialog extends StatelessWidget {
    method build (line 176) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/models/email.dart
  type EmailValidationError (line 3) | enum EmailValidationError { invalid }
  class Email (line 5) | final class Email extends FormzInput<String, EmailValidationError> {
    method validator (line 14) | EmailValidationError? validator(String? value)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/models/password.dart
  type PasswordValidationError (line 3) | enum PasswordValidationError { invalid }
  class Password (line 5) | final class Password extends FormzInput<String, PasswordValidationError> {
    method validator (line 13) | PasswordValidationError? validator(String? value)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/app.dart
  class App (line 4) | class App extends MaterialApp {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/main.dart
  function main (line 7) | void main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/bloc/post_bloc.dart
  function throttleDroppable (line 17) | EventTransformer<E> throttleDroppable<E>(Duration duration)
  class PostBloc (line 23) | class PostBloc extends Bloc<PostEvent, PostState> {
    method _onPostFetched (line 33) | Future<void> _onPostFetched(
    method _fetchPosts (line 64) | Future<List<Post>> _fetchPosts([int startIndex = 0])

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/bloc/post_event.dart
  class PostEvent (line 3) | sealed class PostEvent extends Equatable {
  class PostFetched (line 8) | final class PostFetched extends PostEvent {}

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/bloc/post_state.dart
  type PostStatus (line 3) | enum PostStatus { initial, success, failure }
  class PostState (line 5) | final class PostState extends Equatable {
    method copyWith (line 16) | PostState copyWith({
    method toString (line 29) | String toString()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/models/post.dart
  class Post (line 3) | final class Post extends Equatable {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/view/posts_list.dart
  class PostsList (line 5) | class PostsList extends StatefulWidget {
    method createState (line 9) | State<PostsList> createState()
  class _PostsListState (line 12) | class _PostsListState extends State<PostsList> {
    method initState (line 16) | void initState()
    method build (line 22) | Widget build(BuildContext context)
    method dispose (line 51) | void dispose()
    method _onScroll (line 58) | void _onScroll()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/view/posts_page.dart
  class PostsPage (line 6) | class PostsPage extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/widgets/bottom_loader.dart
  class BottomLoader (line 3) | class BottomLoader extends StatelessWidget {
    method build (line 7) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/widgets/post_list_item.dart
  class PostListItem (line 4) | class PostListItem extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/simple_bloc_observer.dart
  class SimpleBlocObserver (line 5) | class SimpleBlocObserver extends BlocObserver {
    method onTransition (line 9) | void onTransition(
    method onError (line 18) | void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/app.dart
  class App (line 10) | class App extends StatefulWidget {
    method createState (line 14) | State<App> createState()
  class _AppState (line 17) | class _AppState extends State<App> {
    method initState (line 22) | void initState()
    method dispose (line 29) | void dispose()
    method build (line 35) | Widget build(BuildContext context)
  class AppView (line 49) | class AppView extends StatefulWidget {
    method createState (line 53) | State<AppView> createState()
  class _AppViewState (line 56) | class _AppViewState extends State<AppView> {
    method build (line 62) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/bloc/authentication_bloc.dart
  class AuthenticationBloc (line 11) | class AuthenticationBloc
    method close (line 32) | Future<void> close()
    method _onAuthenticationStatusChanged (line 37) | Future<void> _onAuthenticationStatusChanged(
    method _onAuthenticationLogoutRequested (line 56) | void _onAuthenticationLogoutRequested(
    method _tryGetUser (line 63) | Future<User?> _tryGetUser()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/bloc/authentication_event.dart
  class AuthenticationEvent (line 3) | sealed class AuthenticationEvent {
  class _AuthenticationStatusChanged (line 7) | final class _AuthenticationStatusChanged extends AuthenticationEvent {
  class AuthenticationLogoutRequested (line 13) | final class AuthenticationLogoutRequested extends AuthenticationEvent {}

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/bloc/authentication_state.dart
  class AuthenticationState (line 3) | class AuthenticationState extends Equatable {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/home/view/home_page.dart
  class HomePage (line 5) | class HomePage extends StatelessWidget {
    method route (line 8) | Route<void> route()
    method build (line 13) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/bloc/login_bloc.dart
  class LoginBloc (line 10) | class LoginBloc extends Bloc<LoginEvent, LoginState> {
    method _onUsernameChanged (line 22) | void _onUsernameChanged(
    method _onPasswordChanged (line 35) | void _onPasswordChanged(
    method _onSubmitted (line 48) | Future<void> _onSubmitted(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/bloc/login_event.dart
  class LoginEvent (line 3) | sealed class LoginEvent extends Equatable {
  class LoginUsernameChanged (line 10) | final class LoginUsernameChanged extends LoginEvent {
  class LoginPasswordChanged (line 19) | final class LoginPasswordChanged extends LoginEvent {
  class LoginSubmitted (line 28) | final class LoginSubmitted extends LoginEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/bloc/login_state.dart
  class LoginState (line 3) | final class LoginState extends Equatable {
    method copyWith (line 16) | LoginState copyWith({

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/models/password.dart
  type PasswordValidationError (line 3) | enum PasswordValidationError { empty }
  class Password (line 5) | class Password extends FormzInput<String, PasswordValidationError> {
    method validator (line 10) | PasswordValidationError? validator(String value)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/models/username.dart
  type UsernameValidationError (line 3) | enum UsernameValidationError { empty }
  class Username (line 5) | class Username extends FormzInput<String, UsernameValidationError> {
    method validator (line 10) | UsernameValidationError? validator(String value)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/view/login_form.dart
  class LoginForm (line 6) | class LoginForm extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)
  class _UsernameInput (line 38) | class _UsernameInput extends StatelessWidget {
    method build (line 40) | Widget build(BuildContext context)
  class _PasswordInput (line 59) | class _PasswordInput extends StatelessWidget {
    method build (line 61) | Widget build(BuildContext context)
  class _LoginButton (line 81) | class _LoginButton extends StatelessWidget {
    method build (line 83) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/view/login_page.dart
  class LoginPage (line 6) | class LoginPage extends StatelessWidget {
    method route (line 9) | Route<void> route()
    method build (line 14) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/main.dart
  function main (line 4) | void main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/splash/view/splash_page.dart
  class SplashPage (line 3) | class SplashPage extends StatelessWidget {
    method route (line 6) | Route<void> route()
    method build (line 11) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/app.dart
  class App (line 7) | class App extends StatelessWidget {
    method build (line 13) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/bloc/cart_bloc.dart
  class CartBloc (line 11) | class CartBloc extends Bloc<CartEvent, CartState> {
    method _onStarted (line 20) | Future<void> _onStarted(CartStarted event, Emitter<CartState> emit)
    method _onItemAdded (line 30) | Future<void> _onItemAdded(
    method _onItemRemoved (line 45) | void _onItemRemoved(CartItemRemoved event, Emitter<CartState> emit)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/bloc/cart_event.dart
  class CartEvent (line 3) | @immutable
  class CartStarted (line 8) | final class CartStarted extends CartEvent {
  class CartItemAdded (line 13) | final class CartItemAdded extends CartEvent {
  class CartItemRemoved (line 22) | final class CartItemRemoved extends CartEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/bloc/cart_state.dart
  class CartState (line 3) | @immutable
  class CartLoading (line 8) | final class CartLoading extends CartState {
  class CartLoaded (line 13) | final class CartLoaded extends CartState {
  class CartError (line 22) | final class CartError extends CartState {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/models/cart.dart
  class Cart (line 4) | class Cart extends Equatable {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/view/cart_page.dart
  class CartPage (line 5) | class CartPage extends StatelessWidget {
    method build (line 9) | Widget build(BuildContext context)
  class CartList (line 31) | class CartList extends StatelessWidget {
    method build (line 35) | Widget build(BuildContext context)
  class CartTotal (line 69) | class CartTotal extends StatelessWidget {
    method build (line 73) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/bloc/catalog_bloc.dart
  class CatalogBloc (line 9) | class CatalogBloc extends Bloc<CatalogEvent, CatalogState> {
    method _onStarted (line 16) | Future<void> _onStarted(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/bloc/catalog_event.dart
  class CatalogEvent (line 3) | sealed class CatalogEvent extends Equatable {
  class CatalogStarted (line 7) | final class CatalogStarted extends CatalogEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/bloc/catalog_state.dart
  class CatalogState (line 3) | sealed class CatalogState extends Equatable {
  class CatalogLoading (line 10) | final class CatalogLoading extends CatalogState {}
  class CatalogLoaded (line 12) | final class CatalogLoaded extends CatalogState {
  class CatalogError (line 21) | final class CatalogError extends CatalogState {}

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/models/catalog.dart
  class Catalog (line 4) | class Catalog extends Equatable {
    method getById (line 9) | Item getById(int id)
    method getByPosition (line 11) | Item getByPosition(int position)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/models/item.dart
  class Item (line 4) | class Item extends Equatable {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/view/catalog_page.dart
  class CatalogPage (line 6) | class CatalogPage extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)
  class AddButton (line 42) | class AddButton extends StatelessWidget {
    method build (line 48) | Widget build(BuildContext context)
  class CatalogAppBar (line 77) | class CatalogAppBar extends StatelessWidget {
    method build (line 81) | Widget build(BuildContext context)
  class CatalogListItem (line 95) | class CatalogListItem extends StatelessWidget {
    method build (line 101) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/main.dart
  function main (line 7) | void main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/shopping_repository.dart
  class ShoppingRepository (line 25) | class ShoppingRepository {
    method loadCatalog (line 28) | Future<List<String>> loadCatalog()
    method loadCartItems (line 30) | Future<List<Item>> loadCartItems()
    method addItemToCart (line 32) | void addItemToCart(Item item)
    method removeItemFromCart (line 34) | void removeItemFromCart(Item item)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/simple_bloc_observer.dart
  class SimpleBlocObserver (line 5) | class SimpleBlocObserver extends BlocObserver {
    method onEvent (line 9) | void onEvent(Bloc<dynamic, dynamic> bloc, Object? event)
    method onError (line 15) | void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace)
    method onTransition (line 21) | void onTransition(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/app.dart
  class App (line 4) | class App extends StatelessWidget {
    method build (line 8) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/main.dart
  function main (line 4) | void main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/ticker.dart
  class Ticker (line 1) | class Ticker {
    method tick (line 3) | Stream<int> tick({required int ticks})

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/timer/bloc/timer_bloc.dart
  class TimerBloc (line 10) | class TimerBloc extends Bloc<TimerEvent, TimerState> {
    method close (line 27) | Future<void> close()
    method _onStarted (line 32) | void _onStarted(TimerStarted event, Emitter<TimerState> emit)
    method _onPaused (line 40) | void _onPaused(TimerPaused event, Emitter<TimerState> emit)
    method _onResumed (line 47) | void _onResumed(TimerResumed resume, Emitter<TimerState> emit)
    method _onReset (line 54) | void _onReset(TimerReset event, Emitter<TimerState> emit)
    method _onTicked (line 59) | void _onTicked(_TimerTicked event, Emitter<TimerState> emit)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/timer/bloc/timer_event.dart
  class TimerEvent (line 3) | sealed class TimerEvent {
  class TimerStarted (line 7) | final class TimerStarted extends TimerEvent {
  class TimerPaused (line 12) | final class TimerPaused extends TimerEvent {
  class TimerResumed (line 16) | final class TimerResumed extends TimerEvent {
  class TimerReset (line 20) | class TimerReset extends TimerEvent {
  class _TimerTicked (line 24) | class _TimerTicked extends TimerEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/timer/bloc/timer_state.dart
  class TimerState (line 3) | sealed class TimerState extends Equatable {
  class TimerInitial (line 11) | final class TimerInitial extends TimerState {
    method toString (line 15) | String toString()
  class TimerRunPause (line 18) | final class TimerRunPause extends TimerState {
    method toString (line 22) | String toString()
  class TimerRunInProgress (line 25) | final class TimerRunInProgress extends TimerState {
    method toString (line 29) | String toString()
  class TimerRunComplete (line 32) | final class TimerRunComplete extends TimerState {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/timer/view/timer_page.dart
  class TimerPage (line 6) | class TimerPage extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)
  class TimerView (line 18) | class TimerView extends StatelessWidget {
    method build (line 22) | Widget build(BuildContext context)
  class TimerText (line 44) | class TimerText extends StatelessWidget {
    method build (line 48) | Widget build(BuildContext context)
  class Actions (line 60) | class Actions extends StatelessWidget {
    method build (line 64) | Widget build(BuildContext context)
  class Background (line 119) | class Background extends StatelessWidget {
    method build (line 123) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/app/app.dart
  class App (line 8) | class App extends StatelessWidget {
    method build (line 14) | Widget build(BuildContext context)
  class AppView (line 22) | class AppView extends StatelessWidget {
    method build (line 26) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/app/app_bloc_observer.dart
  class AppBlocObserver (line 5) | class AppBlocObserver extends BlocObserver {
    method onChange (line 9) | void onChange(BlocBase<dynamic> bloc, Change<dynamic> change)
    method onError (line 15) | void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/bootstrap.dart
  function bootstrap (line 11) | void bootstrap({required TodosApi todosApi})

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/edit_todo/bloc/edit_todo_bloc.dart
  class EditTodoBloc (line 8) | class EditTodoBloc extends Bloc<EditTodoEvent, EditTodoState> {
    method _onTitleChanged (line 27) | void _onTitleChanged(
    method _onDescriptionChanged (line 34) | void _onDescriptionChanged(
    method _onSubmitted (line 41) | Future<void> _onSubmitted(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/edit_todo/bloc/edit_todo_event.dart
  class EditTodoEvent (line 3) | sealed class EditTodoEvent extends Equatable {
  class EditTodoTitleChanged (line 10) | final class EditTodoTitleChanged extends EditTodoEvent {
  class EditTodoDescriptionChanged (line 19) | final class EditTodoDescriptionChanged extends EditTodoEvent {
  class EditTodoSubmitted (line 28) | final class EditTodoSubmitted extends EditTodoEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/edit_todo/bloc/edit_todo_state.dart
  type EditTodoStatus (line 3) | enum EditTodoStatus { initial, loading, success, failure }
  class EditTodoState (line 12) | final class EditTodoState extends Equatable {
    method copyWith (line 27) | EditTodoState copyWith({

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/edit_todo/view/edit_todo_page.dart
  class EditTodoPage (line 9) | class EditTodoPage extends StatelessWidget {
    method route (line 12) | Route<void> route({Todo? initialTodo})
    method build (line 26) | Widget build(BuildContext context)
  class EditTodoView (line 37) | class EditTodoView extends StatelessWidget {
    method build (line 41) | Widget build(BuildContext context)
  class _TitleField (line 89) | class _TitleField extends StatelessWidget {
    method build (line 93) | Widget build(BuildContext context)
  class _DescriptionField (line 118) | class _DescriptionField extends StatelessWidget {
    method build (line 122) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/generated_plugin_registrant.dart
  function registerPlugins (line 14) | void registerPlugins(Registrar registrar)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/home/cubit/home_cubit.dart
  class HomeCubit (line 6) | class HomeCubit extends Cubit<HomeState> {
    method setTab (line 9) | void setTab(HomeTab tab)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/home/cubit/home_state.dart
  type HomeTab (line 3) | enum HomeTab { todos, stats }
  class HomeState (line 5) | final class HomeState extends Equatable {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/home/view/home_page.dart
  class HomePage (line 8) | class HomePage extends StatelessWidget {
    method build (line 12) | Widget build(BuildContext context)
  class HomeView (line 20) | class HomeView extends StatelessWidget {
    method build (line 24) | Widget build(BuildContext context)
  class _HomeTabButton (line 60) | class _HomeTabButton extends StatelessWidget {
    method build (line 72) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/main_development.dart
  function main (line 5) | Future<void> main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/main_production.dart
  function main (line 5) | Future<void> main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/main_staging.dart
  function main (line 5) | Future<void> main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/stats/bloc/stats_bloc.dart
  class StatsBloc (line 8) | class StatsBloc extends Bloc<StatsEvent, StatsState> {
    method _onSubscriptionRequested (line 18) | Future<void> _onSubscriptionRequested(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/stats/bloc/stats_event.dart
  class StatsEvent (line 3) | sealed class StatsEvent extends Equatable {
  class StatsSubscriptionRequested (line 10) | final class StatsSubscriptionRequested extends StatsEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/stats/bloc/stats_state.dart
  type StatsStatus (line 3) | enum StatsStatus { initial, loading, success, failure }
  class StatsState (line 5) | final class StatsState extends Equatable {
    method copyWith (line 19) | StatsState copyWith({

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/stats/view/stats_page.dart
  class StatsPage (line 7) | class StatsPage extends StatelessWidget {
    method build (line 11) | Widget build(BuildContext context)
  class StatsView (line 21) | class StatsView extends StatelessWidget {
    method build (line 25) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/theme/theme.dart
  class FlutterTodosTheme (line 3) | class FlutterTodosTheme {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/todos_overview/bloc/todos_overview_bloc.dart
  class TodosOverviewBloc (line 9) | class TodosOverviewBloc extends Bloc<TodosOverviewEvent, TodosOverviewSt...
    method _onSubscriptionRequested (line 25) | Future<void> _onSubscriptionRequested(
    method _onTodoCompletionToggled (line 43) | Future<void> _onTodoCompletionToggled(
    method _onTodoDeleted (line 51) | Future<void> _onTodoDeleted(
    method _onUndoDeletionRequested (line 59) | Future<void> _onUndoDeletionRequested(
    method _onFilterChanged (line 73) | void _onFilterChanged(
    method _onToggleAllRequested (line 80) | Future<void> _onToggleAllRequested(
    method _onClearCompletedRequested (line 88) | Future<void> _onClearCompletedRequested(

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/todos_overview/bloc/todos_overview_event.dart
  class TodosOverviewEvent (line 3) | sealed class TodosOverviewEvent extends Equatable {
  class TodosOverviewSubscriptionRequested (line 10) | final class TodosOverviewSubscriptionRequested extends TodosOverviewEvent {
  class TodosOverviewTodoCompletionToggled (line 14) | final class TodosOverviewTodoCompletionToggled extends TodosOverviewEvent {
  class TodosOverviewTodoDeleted (line 27) | final class TodosOverviewTodoDeleted extends TodosOverviewEvent {
  class TodosOverviewUndoDeletionRequested (line 36) | final class TodosOverviewUndoDeletionRequested extends TodosOverviewEvent {
  class TodosOverviewFilterChanged (line 40) | class TodosOverviewFilterChanged extends TodosOverviewEvent {
  class TodosOverviewToggleAllRequested (line 49) | class TodosOverviewToggleAllRequested extends TodosOverviewEvent {
  class TodosOverviewClearCompletedRequested (line 53) | class TodosOverviewClearCompletedRequested extends TodosOverviewEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/todos_overview/bloc/todos_overview_state.dart
  type TodosOverviewStatus (line 3) | enum TodosOverviewStatus { initial, loading, success, failure }
  class TodosOverviewState (line 5) | final class TodosOverviewState extends Equatable {
    method copyWith (line 20) | TodosOverviewState copyWith({

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/todos_overview/models/todos_view_filter.dart
  type TodosViewFilter (line 3) | enum TodosViewFilter { all, activeOnly, completedOnly }
  function apply (line 6) | bool apply(Todo todo)
  function applyAll (line 17) | Iterable<Todo> applyAll(Iterable<Todo> todos)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/todos_overview/view/todos_overview_page.dart
  class TodosOverviewPage (line 9) | class TodosOverviewPage extends StatelessWidget {
    method build (line 13) | Widget build(BuildContext context)
  class TodosOverviewView (line 23) | class TodosOverviewView extends StatelessWidget {
    method build (line 27) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/todos_overview/widgets/todo_list_tile.dart
  class TodoListTile (line 4) | class TodoListTile extends StatelessWidget {
    method build (line 19) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/todos_overview/widgets/todos_overview_filter_button.dart
  class TodosOverviewFilterButton (line 6) | class TodosOverviewFilterButton extends StatelessWidget {
    method build (line 10) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/todos_overview/widgets/todos_overview_options_button.dart
  type TodosOverviewOption (line 6) | @visibleForTesting
  class TodosOverviewOptionsButton (line 9) | class TodosOverviewOptionsButton extends StatelessWidget {
    method build (line 13) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/app.dart
  class WeatherApp (line 8) | class WeatherApp extends StatelessWidget {
    method build (line 15) | Widget build(BuildContext context)
  class WeatherAppView (line 26) | class WeatherAppView extends StatelessWidget {
    method build (line 30) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/main.dart
  function main (line 9) | void main()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/search/view/search_page.dart
  class SearchPage (line 3) | class SearchPage extends StatefulWidget {
    method route (line 6) | Route<String> route()
    method createState (line 11) | State<SearchPage> createState()
  class _SearchPageState (line 14) | class _SearchPageState extends State<SearchPage> {
    method dispose (line 20) | void dispose()
    method build (line 26) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/settings/view/settings_page.dart
  class SettingsPage (line 5) | class SettingsPage extends StatelessWidget {
    method route (line 8) | Route<void> route(WeatherCubit weatherCubit)
    method build (line 18) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/theme/cubit/theme_cubit.dart
  class ThemeCubit (line 5) | class ThemeCubit extends HydratedCubit<Color> {
    method updateTheme (line 10) | void updateTheme(Weather? weather)
    method fromJson (line 15) | Color fromJson(Map<String, dynamic> json)
    method toJson (line 20) | Map<String, dynamic> toJson(Color state)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/cubit/weather_cubit.dart
  class WeatherCubit (line 11) | class WeatherCubit extends HydratedCubit<WeatherState> {
    method fetchWeather (line 16) | Future<void> fetchWeather(String? city)
    method refreshWeather (line 42) | Future<void> refreshWeather()
    method toggleUnits (line 66) | void toggleUnits()
    method fromJson (line 92) | WeatherState fromJson(Map<String, dynamic> json)
    method toJson (line 96) | Map<String, dynamic> toJson(WeatherState state)
  function toFahrenheit (line 100) | double toFahrenheit()
  function toCelsius (line 101) | double toCelsius()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/cubit/weather_cubit.g.dart
  function _$WeatherStateFromJson (line 9) | WeatherState _$WeatherStateFromJson(Map<String, dynamic> json)
  function _$WeatherStateToJson (line 36) | Map<String, dynamic> _$WeatherStateToJson(WeatherState instance)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/cubit/weather_state.dart
  type WeatherStatus (line 3) | enum WeatherStatus { initial, loading, success, failure }
  class WeatherState (line 12) | @JsonSerializable()
    method copyWith (line 27) | WeatherState copyWith({
    method toJson (line 39) | Map<String, dynamic> toJson()

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/models/weather.dart
  type TemperatureUnits (line 9) | enum TemperatureUnits { fahrenheit, celsius }
  class Temperature (line 16) | @JsonSerializable()
    method toJson (line 25) | Map<String, dynamic> toJson()
  class Weather (line 31) | @JsonSerializable()
    method toJson (line 67) | Map<String, dynamic> toJson()
    method copyWith (line 69) | Weather copyWith({

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/models/weather.g.dart
  function _$TemperatureFromJson (line 9) | Temperature _$TemperatureFromJson(Map<String, dynamic> json)
  function _$TemperatureToJson (line 20) | Map<String, dynamic> _$TemperatureToJson(Temperature instance)
  function _$WeatherFromJson (line 25) | Weather _$WeatherFromJson(Map<String, dynamic> json)
  function _$WeatherToJson (line 43) | Map<String, dynamic> _$WeatherToJson(Weather instance)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/view/weather_page.dart
  class WeatherPage (line 9) | class WeatherPage extends StatelessWidget {
    method build (line 13) | Widget build(BuildContext context)
  class WeatherView (line 21) | class WeatherView extends StatefulWidget {
    method createState (line 25) | State<WeatherView> createState()
  class _WeatherViewState (line 28) | class _WeatherViewState extends State<WeatherView> {
    method build (line 30) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/widgets/weather_empty.dart
  class WeatherEmpty (line 3) | class WeatherEmpty extends StatelessWidget {
    method build (line 7) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/widgets/weather_error.dart
  class WeatherError (line 3) | class WeatherError extends StatelessWidget {
    method build (line 7) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/widgets/weather_loading.dart
  class WeatherLoading (line 3) | class WeatherLoading extends StatelessWidget {
    method build (line 7) | Widget build(BuildContext context)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather/widgets/weather_populated.dart
  class WeatherPopulated (line 4) | class WeatherPopulated extends StatelessWidget {
    method build (line 17) | Widget build(BuildContext context)
  class _WeatherIcon (line 57) | class _WeatherIcon extends StatelessWidget {
    method build (line 65) | Widget build(BuildContext context)
  class _WeatherBackground (line 90) | class _WeatherBackground extends StatelessWidget {
    method build (line 92) | Widget build(BuildContext context)
  function brighten (line 115) | Color brighten([int percent = 10])
  function formattedTemperature (line 131) | String formattedTemperature(TemperatureUnits units)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_weather/weather_bloc_observer.dart
  class WeatherBlocObserver (line 5) | class WeatherBlocObserver extends BlocObserver {
    method onEvent (line 9) | void onEvent(Bloc<dynamic, dynamic> bloc, Object? event)
    method onChange (line 15) | void onChange(BlocBase<dynamic> bloc, Change<dynamic> change)
    method onTransition (line 21) | void onTransition(
    method onError (line 30) | void onError(BlocBase<dynamic> bloc, Object error, StackTrace stackTrace)

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_wizard/bloc/profile_wizard_bloc.dart
  class ProfileWizardBloc (line 7) | class ProfileWizardBloc extends Bloc<ProfileWizardEvent, ProfileWizardSt...

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_wizard/bloc/profile_wizard_event.dart
  class ProfileWizardEvent (line 3) | sealed class ProfileWizardEvent extends Equatable {
  class ProfileWizardNameSubmitted (line 10) | final class ProfileWizardNameSubmitted extends ProfileWizardEvent {
  class ProfileWizardAgeSubmitted (line 19) | final class ProfileWizardAgeSubmitted extends ProfileWizardEvent {

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_wizard/bloc/profile_wizard_state.dart
  class Profile (line 3) | final class Profile extends Equatable {
    method copyWith (line 9) | Profile copyWith({String? name, int? age})
  class ProfileWizardState (line 20) | final class ProfileWizardState extends Equatable {
    method copyWith (line 29) | ProfileWizardState copyWith({Profile? profile})

FILE: Flutter GPT/knowledge/examples/flutter_bloc/flutter_wizard/main.dart
  function main (line 6) | void main()
  class MyApp (line 8) | class MyApp extends StatelessWidget {
    method build (line 12) | Widget build(BuildContext context)
  class Home (line 15) | class Home extends StatefulWidget {
    method createState (line 19) | State<Home> createState()
  class _HomeState (line 22) | class _HomeState extends State<Home> {
    method build (line 24) | Widget build(BuildContext context)
  class ProfileWizard (line 49) | class ProfileWizard extends StatelessWidget {
    method route (line 52) | Route<Profile> route()
    method build (line 57) | Widget build(BuildContext context)
  class ProfileWizardFlow (line 67) | class ProfileWizardFlow extends StatelessWidget {
    method build (line 73) | Widget build(BuildContext context)
  class ProfileNameForm (line 90) | class ProfileNameForm extends StatefulWidget {
    method page (line 93) | Page<void> page()
    method createState (line 98) | State<ProfileNameForm> createState()
  class _ProfileNameFormState (line 101) | class _ProfileNameFormState extends State<ProfileNameForm> {
    method build (line 105) | Widget build(BuildContext context)
  class ProfileAgeForm (line 133) | class ProfileAgeForm extends StatefulWidget {
    method page (line 136) | Page<void> page()
    method createState (line 139) | State<ProfileAgeForm> createState()
  class _ProfileAgeFormState (line 142) | class _ProfileAgeFormState extends State<ProfileAgeForm> {
    method build (line 146) | Widget build(BuildContext context)
Condensed preview — 345 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (374K chars).
[
  {
    "path": ".github/FUNDING.yml",
    "chars": 115,
    "preview": "# These are supported funding model platforms\n\ncustom: ['https://www.paypal.com/paypalme/seller/Hadrio/dashboard']\n"
  },
  {
    "path": "C++ GPT/.github/FUNDING.yml",
    "chars": 115,
    "preview": "# These are supported funding model platforms\n\ncustom: ['https://www.paypal.com/paypalme/seller/Hadrio/dashboard']\n"
  },
  {
    "path": "C++ GPT/Conversation Starters",
    "chars": 138,
    "preview": "How do I optimize this C++ code?\nExplain C++ polymorphism.\nWhat's wrong with my C++ function?\nBest practices for memory "
  },
  {
    "path": "C++ GPT/Instructions",
    "chars": 388,
    "preview": "The GPT is an expert in C++ programming. It can provide detailed and accurate responses on C++ concepts, code optimizati"
  },
  {
    "path": "C++ GPT/actions",
    "chars": 1314,
    "preview": "!! In progress. This file is not live yet\n\n{\n  \"openapi\": \"3.1.0\",\n  \"info\": {\n    \"title\": \"GitHub Code Repository Data"
  },
  {
    "path": "C++ GPT/knowledge/standards",
    "chars": 200,
    "preview": "This guide contains standards for the assistant to adhere to.\nAdhering to standards is suggested but not required if it "
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5223,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 1393,
    "preview": "# Contribution Guidelines\n\nThank you for considering contributing to our project! We highly value your input and appreci"
  },
  {
    "path": "Firebase GPT/.github/FUNDING.yml",
    "chars": 115,
    "preview": "# These are supported funding model platforms\n\ncustom: ['https://www.paypal.com/paypalme/seller/Hadrio/dashboard']\n"
  },
  {
    "path": "Firebase GPT/Conversation Starters",
    "chars": 173,
    "preview": "How do I integrate Firebase Authentication?\nTell me about Firebase Cloud Functions.\nBest practices for Firebase Realtime"
  },
  {
    "path": "Firebase GPT/Instructions",
    "chars": 738,
    "preview": "This GPT is an expert in Firebase plugins and integration, providing detailed assistance and guidance on implementing an"
  },
  {
    "path": "Firebase GPT/actions",
    "chars": 1314,
    "preview": "!! In progress. This file is not live yet\n\n{\n  \"openapi\": \"3.1.0\",\n  \"info\": {\n    \"title\": \"GitHub Code Repository Data"
  },
  {
    "path": "Firebase GPT/knowledge/standards",
    "chars": 200,
    "preview": "This guide contains standards for the assistant to adhere to.\nAdhering to standards is suggested but not required if it "
  },
  {
    "path": "Flutter GPT/.github/FUNDING.yml",
    "chars": 115,
    "preview": "# These are supported funding model platforms\n\ncustom: ['https://www.paypal.com/paypalme/seller/Hadrio/dashboard']\n"
  },
  {
    "path": "Flutter GPT/Conversation Starters",
    "chars": 151,
    "preview": "Create a new page\nHow do I start with Flutter?\nCreate a Stateful widget & constructor\nTips for optimizing Flutter perfor"
  },
  {
    "path": "Flutter GPT/Instructions",
    "chars": 859,
    "preview": "You are Flutter GPT, a specialized assistant for Flutter development queries. Your role is to provide expert advice and "
  },
  {
    "path": "Flutter GPT/actions",
    "chars": 1314,
    "preview": "!! In progress. This file is not live yet\n\n{\n  \"openapi\": \"3.1.0\",\n  \"info\": {\n    \"title\": \"GitHub Code Repository Data"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/CODEOWNERS",
    "chars": 62,
    "preview": "# Every request must be reviewed and accepted by:\n\n*\t@felangel"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/DOCS_ISSUE_TEMPLATE.md",
    "chars": 395,
    "preview": "---\ntitle: \"[Translations] Update docs\"\nlabels: documentation, translation\n---\nUpdate Translations to include changes fr"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/FUNDING.yml",
    "chars": 59,
    "preview": "github: [felangel]\npatreon: felangel\nopen_collective: bloc\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 495,
    "preview": "---\nname: Bug Report\nabout: Create a report to help us improve\ntitle: \"fix: \"\nlabels: bug\n---\n\n**Description**\nA clear a"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/build.md",
    "chars": 211,
    "preview": "---\nname: Build System\nabout: Changes that affect the build system or external dependencies\ntitle: \"build: \"\nlabels: bui"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/chore.md",
    "chars": 231,
    "preview": "---\nname: Chore\nabout: Other changes that don't modify src or test files\ntitle: \"chore: \"\nlabels: chore\n---\n\n**Descripti"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/ci.md",
    "chars": 203,
    "preview": "---\nname: Continuous Integration\nabout: Changes to the CI configuration files and scripts\ntitle: \"ci: \"\nlabels: ci\n---\n\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/config.yml",
    "chars": 27,
    "preview": "blank_issues_enabled: false"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/documentation.md",
    "chars": 237,
    "preview": "---\nname: Documentation\nabout: Improve the documentation so all collaborators have a common understanding\ntitle: \"docs: "
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 523,
    "preview": "---\nname: Feature Request\nabout: A new feature to be added to the project\ntitle: \"feat: \"\nlabels: feature\n---\n\n**Descrip"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/performance.md",
    "chars": 229,
    "preview": "---\nname: Performance Update\nabout: A code change that improves performance\ntitle: \"perf: \"\nlabels: performance\n---\n\n**D"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/refactor.md",
    "chars": 293,
    "preview": "---\nname: Refactor\nabout: A code change that neither fixes a bug nor adds a feature\ntitle: \"refactor: \"\nlabels: refactor"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/revert.md",
    "chars": 182,
    "preview": "---\nname: Revert Commit\nabout: Reverts a previous commit\ntitle: \"revert: \"\nlabels: revert\n---\n\n**Description**\n\nProvide "
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/style.md",
    "chars": 244,
    "preview": "---\nname: Style Changes\nabout: Changes that do not affect the meaning of the code (white-space, formatting, missing semi"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/ISSUE_TEMPLATE/test.md",
    "chars": 256,
    "preview": "---\nname: Test\nabout: Adding missing tests or correcting existing tests\ntitle: \"test: \"\nlabels: test\n---\n\n**Description*"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/PULL_REQUEST_TEMPLATE.md",
    "chars": 723,
    "preview": "<!--\n  Thanks for contributing!\n\n  Provide a description of your changes below and a general summary in the title\n\n  Ple"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/angular_bloc.yaml",
    "chars": 1714,
    "preview": "name: angular_bloc\n\non:\n  push:\n    paths:\n      - \"packages/angular_bloc/**\"\n      - \".github/workflows/angular_bloc.ya"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/angular_dart_examples.yaml",
    "chars": 1877,
    "preview": "name: angular_dart_examples\n\non:\n  push:\n    paths:\n      - \".github/workflows/angular_dart_examples.yaml\"\n      - \"pack"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/bloc.yaml",
    "chars": 1611,
    "preview": "name: bloc\n\non:\n  push:\n    paths:\n      - \"packages/bloc/**\"\n      - \".github/workflows/bloc.yaml\"\n\n  pull_request:\n   "
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/bloc_concurrency.yaml",
    "chars": 1707,
    "preview": "name: bloc_concurrency\n\non:\n  push:\n    paths:\n      - \"packages/bloc_concurrency/**\"\n      - \".github/workflows/bloc_co"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/bloc_test.yaml",
    "chars": 1651,
    "preview": "name: bloc_test\n\non:\n  push:\n    paths:\n      - \"packages/bloc_test/**\"\n      - \".github/workflows/bloc_test.yaml\"\n\n  pu"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/bloc_tools.yaml",
    "chars": 1584,
    "preview": "name: bloc_tools\n\non:\n  pull_request:\n    paths:\n      - \".github/workflows/bloc_tools.yaml\"\n      - \"packages/bloc_tool"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/build.yaml",
    "chars": 373,
    "preview": "name: build\n\non:\n  pull_request:\n    branches:\n      - master\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    "
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/docs.yaml",
    "chars": 394,
    "preview": "name: docs\n\non:\n  push:\n    branches:\n    - master\n    paths:\n    - '.github/workflows/docs.yaml'\n    - 'README.md'\n    "
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/flutter_bloc.yaml",
    "chars": 1505,
    "preview": "name: flutter_bloc\n\non:\n  push:\n    paths:\n      - \"packages/flutter_bloc/**\"\n      - \".github/workflows/flutter_bloc.ya"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/flutter_examples.yaml",
    "chars": 3169,
    "preview": "name: flutter_examples\n\non:\n  push:\n    paths:\n      - \".github/workflows/flutter_examples.yaml\"\n      - \"packages/flutt"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/hydrated_bloc.yaml",
    "chars": 1517,
    "preview": "name: hydrated_bloc\n\non:\n  push:\n    paths:\n      - \"packages/hydrated_bloc/**\"\n      - \".github/workflows/hydrated_bloc"
  },
  {
    "path": "Flutter GPT/knowledge/examples/.github/workflows/replay_bloc.yaml",
    "chars": 1497,
    "preview": "name: replay_bloc\n\non:\n  push:\n    paths:\n      - \"packages/replay_bloc/**\"\n      - \".github/workflows/replay_bloc.yaml\""
  },
  {
    "path": "Flutter GPT/knowledge/examples/.gitignore",
    "chars": 2051,
    "preview": "# Miscellaneous\n*.class\n*.lock\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*."
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/angular_counter/.gitignore",
    "chars": 236,
    "preview": "# Files and directories created by pub\n.dart_tool/\n.packages\n# Remove the following pattern if you wish to check in your"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/angular_counter/counter_bloc.dart",
    "chars": 639,
    "preview": "import 'package:bloc/bloc.dart';\n\n/// Base counter event.\nsealed class CounterEvent {}\n\n/// Notifies bloc to increment s"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/.gitignore",
    "chars": 1294,
    "preview": "# Miscellaneous\n*.class\n*.lock\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*."
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/.metadata",
    "chars": 1074,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/bloc/ticker_bloc.dart",
    "chars": 870,
    "preview": "import 'package:bloc/bloc.dart';\nimport 'package:bloc_concurrency/bloc_concurrency.dart';\nimport 'package:equatable/equa"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/bloc/ticker_event.dart",
    "chars": 729,
    "preview": "part of 'ticker_bloc.dart';\n\n/// {@template ticker_event}\n/// Base class for all [TickerEvent]s which are\n/// handled by"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/bloc/ticker_state.dart",
    "chars": 1015,
    "preview": "part of 'ticker_bloc.dart';\n\n/// {@template ticker_state}\n/// Base class for all [TickerState]s which are\n/// managed by"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/main.dart",
    "chars": 1872,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_bloc_wi"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_bloc_with_stream/ticker/ticker.dart",
    "chars": 257,
    "preview": "import 'dart:async';\n\n/// Class which exposes a `tick` method to emit values periodically.\nclass Ticker {\n  /// Emits a "
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/.gitignore",
    "chars": 1318,
    "preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.i"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/.metadata",
    "chars": 1074,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/app.dart",
    "chars": 456,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_complex"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/complex_list.dart",
    "chars": 94,
    "preview": "export 'cubit/complex_list_cubit.dart';\nexport 'models/models.dart';\nexport 'view/view.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/cubit/complex_list_cubit.dart",
    "chars": 1146,
    "preview": "import 'dart:async';\n\nimport 'package:bloc/bloc.dart';\nimport 'package:equatable/equatable.dart';\nimport 'package:flutte"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/cubit/complex_list_state.dart",
    "chars": 584,
    "preview": "part of 'complex_list_cubit.dart';\n\nenum ListStatus { loading, success, failure }\n\nfinal class ComplexListState extends "
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/models/item.dart",
    "chars": 509,
    "preview": "import 'package:equatable/equatable.dart';\n\nclass Item extends Equatable {\n  const Item({\n    required this.id,\n    requ"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/models/models.dart",
    "chars": 20,
    "preview": "export 'item.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/view/complex_list_page.dart",
    "chars": 2411,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_complex"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/complex_list/view/view.dart",
    "chars": 33,
    "preview": "export 'complex_list_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/main.dart",
    "chars": 393,
    "preview": "import 'package:bloc/bloc.dart';\nimport 'package:flutter/widgets.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/repository.dart",
    "chars": 677,
    "preview": "import 'dart:async';\nimport 'dart:math';\n\nimport 'package:flutter_complex_list/complex_list/complex_list.dart';\n\nclass R"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_complex_list/simple_bloc_observer.dart",
    "chars": 461,
    "preview": "import 'package:bloc/bloc.dart';\n\nclass SimpleBlocObserver extends BlocObserver {\n  const SimpleBlocObserver();\n\n  @over"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/.gitignore",
    "chars": 692,
    "preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.i"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/.metadata",
    "chars": 1666,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/app.dart",
    "chars": 339,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_counter/counter/counter.dart';\n\n/// {@template counter_a"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/counter.dart",
    "chars": 60,
    "preview": "export 'cubit/counter_cubit.dart';\nexport 'view/view.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/cubit/counter_cubit.dart",
    "chars": 389,
    "preview": "import 'package:bloc/bloc.dart';\n\n/// {@template counter_cubit}\n/// A [Cubit] which manages an [int] as its state.\n/// {"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/view/counter_page.dart",
    "chars": 571,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_counter"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/view/counter_view.dart",
    "chars": 1504,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_counter"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter/view/view.dart",
    "chars": 56,
    "preview": "export 'counter_page.dart';\nexport 'counter_view.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/counter_observer.dart",
    "chars": 463,
    "preview": "import 'package:bloc/bloc.dart';\n\n/// {@template counter_observer}\n/// [BlocObserver] for the counter application which\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_counter/main.dart",
    "chars": 261,
    "preview": "import 'package:bloc/bloc.dart';\nimport 'package:flutter/widgets.dart';\nimport 'package:flutter_counter/app.dart';\nimpor"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/.gitignore",
    "chars": 1446,
    "preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.i"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/.metadata",
    "chars": 1076,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/app.dart",
    "chars": 540,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_dynamic"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/main.dart",
    "chars": 220,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_dynamic_form/app.dart';\nimport 'package:flutter_dynamic_"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/bloc/new_car_bloc.dart",
    "chars": 2461,
    "preview": "import 'package:bloc/bloc.dart';\nimport 'package:bloc_concurrency/bloc_concurrency.dart';\nimport 'package:equatable/equa"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/bloc/new_car_event.dart",
    "chars": 742,
    "preview": "part of 'new_car_bloc.dart';\n\nsealed class NewCarEvent extends Equatable {\n  const NewCarEvent();\n\n  @override\n  List<Ob"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/bloc/new_car_state.dart",
    "chars": 2119,
    "preview": "part of 'new_car_bloc.dart';\n\nfinal class NewCarState extends Equatable {\n  const NewCarState._({\n    this.brands = cons"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/new_car.dart",
    "chars": 66,
    "preview": "export 'bloc/new_car_bloc.dart';\nexport 'view/new_car_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car/view/new_car_page.dart",
    "chars": 4004,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_dynamic"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_dynamic_form/new_car_repository.dart",
    "chars": 1363,
    "preview": "const _delay = Duration(milliseconds: 300);\nFuture<void> wait() => Future.delayed(_delay);\n\nclass NewCarRepository {\n  F"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/.gitignore",
    "chars": 1361,
    "preview": "# Miscellaneous\n*.class\n*.lock\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*."
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/.metadata",
    "chars": 1074,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/app.dart",
    "chars": 111,
    "preview": "export 'bloc/app_bloc.dart';\nexport 'bloc_observer.dart';\nexport 'routes/routes.dart';\nexport 'view/app.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc/app_bloc.dart",
    "chars": 1391,
    "preview": "import 'dart:async';\n\nimport 'package:authentication_repository/authentication_repository.dart';\nimport 'package:bloc/bl"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc/app_event.dart",
    "chars": 261,
    "preview": "part of 'app_bloc.dart';\n\nsealed class AppEvent {\n  const AppEvent();\n}\n\nfinal class AppLogoutRequested extends AppEvent"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc/app_state.dart",
    "chars": 494,
    "preview": "part of 'app_bloc.dart';\n\nenum AppStatus {\n  authenticated,\n  unauthenticated,\n}\n\nfinal class AppState extends Equatable"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/bloc_observer.dart",
    "chars": 748,
    "preview": "// ignore_for_file: avoid_print\nimport 'package:bloc/bloc.dart';\n\nclass AppBlocObserver extends BlocObserver {\n  const A"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/routes/routes.dart",
    "chars": 464,
    "preview": "import 'package:flutter/widgets.dart';\nimport 'package:flutter_firebase_login/app/app.dart';\nimport 'package:flutter_fir"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/app/view/app.dart",
    "chars": 1229,
    "preview": "import 'package:authentication_repository/authentication_repository.dart';\nimport 'package:flow_builder/flow_builder.dar"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/generated_plugin_registrant.dart",
    "chars": 671,
    "preview": "//\n// Generated file. Do not edit.\n//\n\n// ignore_for_file: directives_ordering\n// ignore_for_file: lines_longer_than_80_"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/home.dart",
    "chars": 61,
    "preview": "export 'view/home_page.dart';\nexport 'widgets/widgets.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/view/home_page.dart",
    "chars": 1356,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_firebas"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/widgets/avatar.dart",
    "chars": 495,
    "preview": "import 'package:flutter/material.dart';\n\nconst _avatarSize = 48.0;\n\nclass Avatar extends StatelessWidget {\n  const Avata"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/home/widgets/widgets.dart",
    "chars": 22,
    "preview": "export 'avatar.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/cubit/login_cubit.dart",
    "chars": 2055,
    "preview": "import 'package:authentication_repository/authentication_repository.dart';\nimport 'package:bloc/bloc.dart';\nimport 'pack"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/cubit/login_state.dart",
    "chars": 907,
    "preview": "part of 'login_cubit.dart';\n\nfinal class LoginState extends Equatable {\n  const LoginState({\n    this.email = const Emai"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/login.dart",
    "chars": 58,
    "preview": "export 'cubit/login_cubit.dart';\nexport 'view/view.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/view/login_form.dart",
    "chars": 4971,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_firebas"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/view/login_page.dart",
    "chars": 737,
    "preview": "import 'package:authentication_repository/authentication_repository.dart';\nimport 'package:flutter/material.dart';\nimpor"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/login/view/view.dart",
    "chars": 52,
    "preview": "export 'login_form.dart';\nexport 'login_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/main.dart",
    "chars": 583,
    "preview": "import 'package:authentication_repository/authentication_repository.dart';\nimport 'package:bloc/bloc.dart';\nimport 'pack"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/cubit/sign_up_cubit.dart",
    "chars": 2220,
    "preview": "import 'package:authentication_repository/authentication_repository.dart';\nimport 'package:bloc/bloc.dart';\nimport 'pack"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/cubit/sign_up_state.dart",
    "chars": 1256,
    "preview": "part of 'sign_up_cubit.dart';\n\nenum ConfirmPasswordValidationError { invalid }\n\nfinal class SignUpState extends Equatabl"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/sign_up.dart",
    "chars": 60,
    "preview": "export 'cubit/sign_up_cubit.dart';\nexport 'view/view.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/view/sign_up_form.dart",
    "chars": 4400,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_firebas"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/view/sign_up_page.dart",
    "chars": 791,
    "preview": "import 'package:authentication_repository/authentication_repository.dart';\nimport 'package:flutter/material.dart';\nimpor"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/sign_up/view/view.dart",
    "chars": 56,
    "preview": "export 'sign_up_form.dart';\nexport 'sign_up_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_firebase_login/theme.dart",
    "chars": 554,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:google_fonts/google_fonts.dart';\n\nfinal theme = ThemeData(\n  tex"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/.gitignore",
    "chars": 1309,
    "preview": "# Miscellaneous\n*.class\n*.lock\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*."
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/.metadata",
    "chars": 1074,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/bloc/my_form_bloc.dart",
    "chars": 2336,
    "preview": "import 'dart:async';\n\nimport 'package:bloc/bloc.dart';\nimport 'package:equatable/equatable.dart';\nimport 'package:flutte"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/bloc/my_form_event.dart",
    "chars": 651,
    "preview": "part of 'my_form_bloc.dart';\n\nsealed class MyFormEvent extends Equatable {\n  const MyFormEvent();\n\n  @override\n  List<Ob"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/bloc/my_form_state.dart",
    "chars": 754,
    "preview": "part of 'my_form_bloc.dart';\n\nfinal class MyFormState extends Equatable {\n  const MyFormState({\n    this.email = const E"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/main.dart",
    "chars": 5808,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_form_va"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/models/email.dart",
    "chars": 546,
    "preview": "import 'package:formz/formz.dart';\n\nenum EmailValidationError { invalid }\n\nfinal class Email extends FormzInput<String, "
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/models/models.dart",
    "chars": 45,
    "preview": "export 'email.dart';\nexport 'password.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_form_validation/models/password.dart",
    "chars": 540,
    "preview": "import 'package:formz/formz.dart';\n\nenum PasswordValidationError { invalid }\n\nfinal class Password extends FormzInput<St"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/.gitignore",
    "chars": 574,
    "preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.i"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/.metadata",
    "chars": 1666,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/app.dart",
    "chars": 191,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_infinite_list/posts/posts.dart';\n\nclass App extends Mate"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/main.dart",
    "chars": 322,
    "preview": "import 'package:bloc/bloc.dart';\nimport 'package:flutter/widgets.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/bloc/post_bloc.dart",
    "chars": 2417,
    "preview": "import 'dart:async';\nimport 'dart:convert';\n\nimport 'package:bloc/bloc.dart';\nimport 'package:bloc_concurrency/bloc_conc"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/bloc/post_event.dart",
    "chars": 162,
    "preview": "part of 'post_bloc.dart';\n\nsealed class PostEvent extends Equatable {\n  @override\n  List<Object> get props => [];\n}\n\nfin"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/bloc/post_state.dart",
    "chars": 809,
    "preview": "part of 'post_bloc.dart';\n\nenum PostStatus { initial, success, failure }\n\nfinal class PostState extends Equatable {\n  co"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/models/models.dart",
    "chars": 22,
    "preview": "export './post.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/models/post.dart",
    "chars": 278,
    "preview": "import 'package:equatable/equatable.dart';\n\nfinal class Post extends Equatable {\n  const Post({required this.id, require"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/posts.dart",
    "chars": 115,
    "preview": "export 'bloc/post_bloc.dart';\nexport 'models/models.dart';\nexport 'view/view.dart';\nexport 'widgets/widgets.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/view/posts_list.dart",
    "chars": 1977,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_infinit"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/view/posts_page.dart",
    "chars": 547,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_infinit"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/view/view.dart",
    "chars": 52,
    "preview": "export 'posts_list.dart';\nexport 'posts_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/widgets/bottom_loader.dart",
    "chars": 342,
    "preview": "import 'package:flutter/material.dart';\n\nclass BottomLoader extends StatelessWidget {\n  const BottomLoader({super.key});"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/widgets/post_list_item.dart",
    "chars": 568,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_infinite_list/posts/posts.dart';\n\nclass PostListItem ext"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/posts/widgets/widgets.dart",
    "chars": 59,
    "preview": "export 'bottom_loader.dart';\nexport 'post_list_item.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_infinite_list/simple_bloc_observer.dart",
    "chars": 491,
    "preview": "// ignore_for_file: avoid_print\n\nimport 'package:bloc/bloc.dart';\n\nclass SimpleBlocObserver extends BlocObserver {\n  con"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/.gitignore",
    "chars": 692,
    "preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.i"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/.metadata",
    "chars": 1666,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/app.dart",
    "chars": 2527,
    "preview": "import 'package:authentication_repository/authentication_repository.dart';\nimport 'package:flutter/material.dart';\nimpor"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/authentication.dart",
    "chars": 40,
    "preview": "export 'bloc/authentication_bloc.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/bloc/authentication_bloc.dart",
    "chars": 2267,
    "preview": "import 'dart:async';\n\nimport 'package:authentication_repository/authentication_repository.dart';\nimport 'package:bloc/bl"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/bloc/authentication_event.dart",
    "chars": 342,
    "preview": "part of 'authentication_bloc.dart';\n\nsealed class AuthenticationEvent {\n  const AuthenticationEvent();\n}\n\nfinal class _A"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/authentication/bloc/authentication_state.dart",
    "chars": 599,
    "preview": "part of 'authentication_bloc.dart';\n\nclass AuthenticationState extends Equatable {\n  const AuthenticationState._({\n    t"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/home/home.dart",
    "chars": 30,
    "preview": "export 'view/home_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/home/view/home_page.dart",
    "chars": 1151,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_login/a"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/bloc/login_bloc.dart",
    "chars": 1826,
    "preview": "import 'package:authentication_repository/authentication_repository.dart';\nimport 'package:bloc/bloc.dart';\nimport 'pack"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/bloc/login_event.dart",
    "chars": 580,
    "preview": "part of 'login_bloc.dart';\n\nsealed class LoginEvent extends Equatable {\n  const LoginEvent();\n\n  @override\n  List<Object"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/bloc/login_state.dart",
    "chars": 778,
    "preview": "part of 'login_bloc.dart';\n\nfinal class LoginState extends Equatable {\n  const LoginState({\n    this.status = FormzSubmi"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/login.dart",
    "chars": 85,
    "preview": "export 'bloc/login_bloc.dart';\nexport 'models/models.dart';\nexport 'view/view.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/models/models.dart",
    "chars": 48,
    "preview": "export 'password.dart';\nexport 'username.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/models/password.dart",
    "chars": 397,
    "preview": "import 'package:formz/formz.dart';\n\nenum PasswordValidationError { empty }\n\nclass Password extends FormzInput<String, Pa"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/models/username.dart",
    "chars": 397,
    "preview": "import 'package:formz/formz.dart';\n\nenum UsernameValidationError { empty }\n\nclass Username extends FormzInput<String, Us"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/view/login_form.dart",
    "chars": 3073,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_login/l"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/view/login_page.dart",
    "chars": 884,
    "preview": "import 'package:authentication_repository/authentication_repository.dart';\nimport 'package:flutter/material.dart';\nimpor"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/login/view/view.dart",
    "chars": 52,
    "preview": "export 'login_form.dart';\nexport 'login_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/main.dart",
    "chars": 117,
    "preview": "import 'package:flutter/widgets.dart';\nimport 'package:flutter_login/app.dart';\n\nvoid main() => runApp(const App());\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/splash/splash.dart",
    "chars": 32,
    "preview": "export 'view/splash_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_login/splash/view/splash_page.dart",
    "chars": 373,
    "preview": "import 'package:flutter/material.dart';\n\nclass SplashPage extends StatelessWidget {\n  const SplashPage({super.key});\n\n  "
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/.gitignore",
    "chars": 1446,
    "preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.i"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/.metadata",
    "chars": 1666,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/app.dart",
    "chars": 1073,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_shoppin"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/bloc/cart_bloc.dart",
    "chars": 1714,
    "preview": "import 'package:bloc/bloc.dart';\nimport 'package:equatable/equatable.dart';\nimport 'package:flutter_shopping_cart/cart/c"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/bloc/cart_event.dart",
    "chars": 503,
    "preview": "part of 'cart_bloc.dart';\n\n@immutable\nsealed class CartEvent extends Equatable {\n  const CartEvent();\n}\n\nfinal class Car"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/bloc/cart_state.dart",
    "chars": 447,
    "preview": "part of 'cart_bloc.dart';\n\n@immutable\nsealed class CartState extends Equatable {\n  const CartState();\n}\n\nfinal class Car"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/cart.dart",
    "chars": 89,
    "preview": "export 'bloc/cart_bloc.dart';\nexport 'models/models.dart';\nexport 'view/cart_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/models/cart.dart",
    "chars": 357,
    "preview": "import 'package:equatable/equatable.dart';\nimport 'package:flutter_shopping_cart/catalog/catalog.dart';\n\nclass Cart exte"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/models/models.dart",
    "chars": 20,
    "preview": "export 'cart.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/cart/view/cart_page.dart",
    "chars": 3293,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_shoppin"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/bloc/catalog_bloc.dart",
    "chars": 797,
    "preview": "import 'package:bloc/bloc.dart';\nimport 'package:equatable/equatable.dart';\nimport 'package:flutter_shopping_cart/catalo"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/bloc/catalog_event.dart",
    "chars": 199,
    "preview": "part of 'catalog_bloc.dart';\n\nsealed class CatalogEvent extends Equatable {\n  const CatalogEvent();\n}\n\nfinal class Catal"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/bloc/catalog_state.dart",
    "chars": 416,
    "preview": "part of 'catalog_bloc.dart';\n\nsealed class CatalogState extends Equatable {\n  const CatalogState();\n\n  @override\n  List<"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/catalog.dart",
    "chars": 95,
    "preview": "export 'bloc/catalog_bloc.dart';\nexport 'models/models.dart';\nexport 'view/catalog_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/models/catalog.dart",
    "chars": 401,
    "preview": "import 'package:equatable/equatable.dart';\nimport 'package:flutter_shopping_cart/catalog/catalog.dart';\n\nclass Catalog e"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/models/item.dart",
    "chars": 358,
    "preview": "import 'package:equatable/equatable.dart';\nimport 'package:flutter/material.dart';\n\nclass Item extends Equatable {\n  Ite"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/models/models.dart",
    "chars": 43,
    "preview": "export 'catalog.dart';\nexport 'item.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/catalog/view/catalog_page.dart",
    "chars": 3608,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_shoppin"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/main.dart",
    "chars": 388,
    "preview": "import 'package:flutter/widgets.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_shopping"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/shopping_repository.dart",
    "chars": 705,
    "preview": "import 'dart:async';\n\nimport 'package:flutter_shopping_cart/catalog/catalog.dart';\n\nconst _delay = Duration(milliseconds"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_shopping_cart/simple_bloc_observer.dart",
    "chars": 655,
    "preview": "import 'dart:developer';\n\nimport 'package:bloc/bloc.dart';\n\nclass SimpleBlocObserver extends BlocObserver {\n  const Simp"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/.gitignore",
    "chars": 574,
    "preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*.ipr\n*.i"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/.metadata",
    "chars": 1666,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/app.dart",
    "chars": 507,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_timer/timer/timer.dart';\n\nclass App extends StatelessWid"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/main.dart",
    "chars": 118,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_timer/app.dart';\n\nvoid main() => runApp(const App());\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/ticker.dart",
    "chars": 181,
    "preview": "class Ticker {\n  const Ticker();\n  Stream<int> tick({required int ticks}) {\n    return Stream.periodic(const Duration(se"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/timer/bloc/timer_bloc.dart",
    "chars": 1764,
    "preview": "import 'dart:async';\n\nimport 'package:bloc/bloc.dart';\nimport 'package:equatable/equatable.dart';\nimport 'package:flutte"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/timer/bloc/timer_event.dart",
    "chars": 517,
    "preview": "part of 'timer_bloc.dart';\n\nsealed class TimerEvent {\n  const TimerEvent();\n}\n\nfinal class TimerStarted extends TimerEve"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/timer/bloc/timer_state.dart",
    "chars": 786,
    "preview": "part of 'timer_bloc.dart';\n\nsealed class TimerState extends Equatable {\n  const TimerState(this.duration);\n  final int d"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/timer/timer.dart",
    "chars": 62,
    "preview": "export 'bloc/timer_bloc.dart';\nexport 'view/timer_page.dart';\n"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_timer/timer/view/timer_page.dart",
    "chars": 4132,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_timer/t"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/.gitignore",
    "chars": 2326,
    "preview": "# Miscellaneous\n*.class\n*.lock\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\n\n# IntelliJ related\n*.iml\n*."
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/.metadata",
    "chars": 1220,
    "preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/.vscode/launch.json",
    "chars": 947,
    "preview": "{\n  // Use IntelliSense to learn about possible attributes.\n  // Hover to view descriptions of existing attributes.\n  //"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/app/app.dart",
    "chars": 986,
    "preview": "import 'package:flutter/material.dart';\nimport 'package:flutter_bloc/flutter_bloc.dart';\nimport 'package:flutter_todos/h"
  },
  {
    "path": "Flutter GPT/knowledge/examples/flutter_bloc/flutter_todos/app/app_bloc_observer.dart",
    "chars": 503,
    "preview": "import 'dart:developer';\n\nimport 'package:bloc/bloc.dart';\n\nclass AppBlocObserver extends BlocObserver {\n  const AppBloc"
  }
]

// ... and 145 more files (download for full content)

About this extraction

This page contains the full source code of the Decron/Whitebox-Code-GPT GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 345 files (317.4 KB), approximately 90.8k tokens, and a symbol index with 547 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!