gitextract_snx3nznv/ ├── .github/ │ ├── CODEOWNERS │ ├── 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 │ ├── actions/ │ │ ├── angular_dart_package/ │ │ │ └── action.yaml │ │ ├── astro_site/ │ │ │ └── action.yaml │ │ ├── dart_compile/ │ │ │ └── action.yaml │ │ ├── dart_package/ │ │ │ └── action.yaml │ │ └── flutter_package/ │ │ └── action.yaml │ ├── codecov.yml │ ├── dependabot.yml │ └── workflows/ │ └── main.yaml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── analysis_options.yaml ├── bricks/ │ ├── README.md │ ├── bloc/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __brick__/ │ │ │ ├── {{name.snakeCase()}}_bloc.dart │ │ │ ├── {{name.snakeCase()}}_event.dart │ │ │ ├── {{name.snakeCase()}}_state.dart │ │ │ ├── {{~ basic_bloc }} │ │ │ ├── {{~ basic_event }} │ │ │ ├── {{~ basic_state }} │ │ │ ├── {{~ equatable_bloc }} │ │ │ ├── {{~ equatable_event }} │ │ │ ├── {{~ equatable_state }} │ │ │ ├── {{~ freezed_bloc }} │ │ │ ├── {{~ freezed_event }} │ │ │ └── {{~ freezed_state }} │ │ ├── brick.yaml │ │ └── hooks/ │ │ ├── pre_gen.dart │ │ └── pubspec.yaml │ ├── cubit/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __brick__/ │ │ │ ├── {{name.snakeCase()}}_cubit.dart │ │ │ ├── {{name.snakeCase()}}_state.dart │ │ │ ├── {{~ basic_cubit }} │ │ │ ├── {{~ basic_state }} │ │ │ ├── {{~ equatable_cubit }} │ │ │ ├── {{~ equatable_state }} │ │ │ ├── {{~ freezed_cubit }} │ │ │ └── {{~ freezed_state }} │ │ ├── brick.yaml │ │ └── hooks/ │ │ ├── pre_gen.dart │ │ └── pubspec.yaml │ ├── flutter_bloc_feature/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __brick__/ │ │ │ ├── {{name.snakeCase()}}/ │ │ │ │ ├── view/ │ │ │ │ │ ├── view.dart │ │ │ │ │ └── {{name.snakeCase()}}_page.dart │ │ │ │ └── {{name.snakeCase()}}.dart │ │ │ ├── {{~ bloc_builder }} │ │ │ ├── {{~ bloc_provider }} │ │ │ ├── {{~ cubit_bloc_builder }} │ │ │ └── {{~ cubit_bloc_provider }} │ │ ├── brick.yaml │ │ └── hooks/ │ │ ├── .gitignore │ │ ├── post_gen.dart │ │ ├── pre_gen.dart │ │ └── pubspec.yaml │ ├── hydrated_bloc/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __brick__/ │ │ │ ├── {{name.snakeCase()}}_bloc.dart │ │ │ ├── {{name.snakeCase()}}_event.dart │ │ │ ├── {{name.snakeCase()}}_state.dart │ │ │ ├── {{~ basic_bloc }} │ │ │ ├── {{~ basic_event }} │ │ │ ├── {{~ basic_state }} │ │ │ ├── {{~ equatable_bloc }} │ │ │ ├── {{~ equatable_event }} │ │ │ ├── {{~ equatable_state }} │ │ │ ├── {{~ freezed_bloc }} │ │ │ ├── {{~ freezed_event }} │ │ │ └── {{~ freezed_state }} │ │ ├── brick.yaml │ │ └── hooks/ │ │ ├── pre_gen.dart │ │ └── pubspec.yaml │ ├── hydrated_cubit/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __brick__/ │ │ │ ├── {{name.snakeCase()}}_cubit.dart │ │ │ ├── {{name.snakeCase()}}_state.dart │ │ │ ├── {{~ basic_cubit }} │ │ │ ├── {{~ basic_state }} │ │ │ ├── {{~ equatable_cubit }} │ │ │ ├── {{~ equatable_state }} │ │ │ ├── {{~ freezed_cubit }} │ │ │ └── {{~ freezed_state }} │ │ ├── brick.yaml │ │ └── hooks/ │ │ ├── pre_gen.dart │ │ └── pubspec.yaml │ ├── mason.yaml │ ├── replay_bloc/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── __brick__/ │ │ │ ├── {{name.snakeCase()}}_bloc.dart │ │ │ ├── {{name.snakeCase()}}_event.dart │ │ │ ├── {{name.snakeCase()}}_state.dart │ │ │ ├── {{~ basic_bloc }} │ │ │ ├── {{~ basic_event }} │ │ │ ├── {{~ basic_state }} │ │ │ ├── {{~ equatable_bloc }} │ │ │ ├── {{~ equatable_event }} │ │ │ ├── {{~ equatable_state }} │ │ │ ├── {{~ freezed_bloc }} │ │ │ ├── {{~ freezed_event }} │ │ │ └── {{~ freezed_state }} │ │ ├── brick.yaml │ │ └── hooks/ │ │ ├── pre_gen.dart │ │ └── pubspec.yaml │ └── replay_cubit/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── __brick__/ │ │ ├── {{name.snakeCase()}}_cubit.dart │ │ ├── {{name.snakeCase()}}_state.dart │ │ ├── {{~ basic_cubit }} │ │ ├── {{~ basic_state }} │ │ ├── {{~ equatable_cubit }} │ │ ├── {{~ equatable_state }} │ │ ├── {{~ freezed_cubit }} │ │ └── {{~ freezed_state }} │ ├── brick.yaml │ └── hooks/ │ ├── pre_gen.dart │ └── pubspec.yaml ├── docs/ │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc │ ├── astro.config.mjs │ ├── package.json │ ├── public/ │ │ └── CNAME │ ├── src/ │ │ ├── components/ │ │ │ ├── architecture/ │ │ │ │ ├── AppIdeaRankingBlocSnippet.astro │ │ │ │ ├── AppIdeasRepositorySnippet.astro │ │ │ │ ├── BlocLooseCouplingPresentationSnippet.astro │ │ │ │ ├── BlocTightCouplingSnippet.astro │ │ │ │ ├── BusinessLogicComponentSnippet.astro │ │ │ │ ├── DataProviderSnippet.astro │ │ │ │ ├── PresentationComponentSnippet.astro │ │ │ │ └── RepositorySnippet.astro │ │ │ ├── code/ │ │ │ │ └── RemoteCode.astro │ │ │ ├── concepts/ │ │ │ │ ├── bloc/ │ │ │ │ │ ├── AuthenticationChangeSnippet.astro │ │ │ │ │ ├── AuthenticationStateSnippet.astro │ │ │ │ │ ├── AuthenticationTransitionSnippet.astro │ │ │ │ │ ├── CountStreamSnippet.astro │ │ │ │ │ ├── CounterBlocEventHandlerSnippet.astro │ │ │ │ │ ├── CounterBlocFullSnippet.astro │ │ │ │ │ ├── CounterBlocIncrementSnippet.astro │ │ │ │ │ ├── CounterBlocOnChangeOutputSnippet.astro │ │ │ │ │ ├── CounterBlocOnChangeSnippet.astro │ │ │ │ │ ├── CounterBlocOnChangeUsageSnippet.astro │ │ │ │ │ ├── CounterBlocOnErrorOutputSnippet.astro │ │ │ │ │ ├── CounterBlocOnErrorSnippet.astro │ │ │ │ │ ├── CounterBlocOnEventSnippet.astro │ │ │ │ │ ├── CounterBlocOnTransitionOutputSnippet.astro │ │ │ │ │ ├── CounterBlocOnTransitionSnippet.astro │ │ │ │ │ ├── CounterBlocSnippet.astro │ │ │ │ │ ├── CounterBlocStreamUsageSnippet.astro │ │ │ │ │ ├── CounterBlocUsageSnippet.astro │ │ │ │ │ ├── CounterCubitBasicUsageSnippet.astro │ │ │ │ │ ├── CounterCubitFullSnippet.astro │ │ │ │ │ ├── CounterCubitIncrementSnippet.astro │ │ │ │ │ ├── CounterCubitInitialStateSnippet.astro │ │ │ │ │ ├── CounterCubitInstantiationSnippet.astro │ │ │ │ │ ├── CounterCubitOnChangeOutputSnippet.astro │ │ │ │ │ ├── CounterCubitOnChangeSnippet.astro │ │ │ │ │ ├── CounterCubitOnChangeUsageSnippet.astro │ │ │ │ │ ├── CounterCubitOnErrorOutputSnippet.astro │ │ │ │ │ ├── CounterCubitOnErrorSnippet.astro │ │ │ │ │ ├── CounterCubitSnippet.astro │ │ │ │ │ ├── CounterCubitStreamUsageSnippet.astro │ │ │ │ │ ├── DebounceEventTransformerSnippet.astro │ │ │ │ │ ├── SimpleBlocObserverOnChangeOutputSnippet.astro │ │ │ │ │ ├── SimpleBlocObserverOnChangeSnippet.astro │ │ │ │ │ ├── SimpleBlocObserverOnChangeUsageSnippet.astro │ │ │ │ │ ├── SimpleBlocObserverOnErrorSnippet.astro │ │ │ │ │ ├── SimpleBlocObserverOnEventOutputSnippet.astro │ │ │ │ │ ├── SimpleBlocObserverOnEventSnippet.astro │ │ │ │ │ ├── SimpleBlocObserverOnTransitionOutputSnippet.astro │ │ │ │ │ ├── SimpleBlocObserverOnTransitionSnippet.astro │ │ │ │ │ ├── SimpleBlocObserverOnTransitionUsageSnippet.astro │ │ │ │ │ ├── StreamsMainSnippet.astro │ │ │ │ │ └── SumStreamSnippet.astro │ │ │ │ └── flutter-bloc/ │ │ │ │ ├── BlocBuilderConditionSnippet.astro │ │ │ │ ├── BlocBuilderExplicitBlocSnippet.astro │ │ │ │ ├── BlocBuilderSnippet.astro │ │ │ │ ├── BlocConsumerConditionSnippet.astro │ │ │ │ ├── BlocConsumerSnippet.astro │ │ │ │ ├── BlocListenerConditionSnippet.astro │ │ │ │ ├── BlocListenerExplicitBlocSnippet.astro │ │ │ │ ├── BlocListenerSnippet.astro │ │ │ │ ├── BlocProviderEagerSnippet.astro │ │ │ │ ├── BlocProviderLookupSnippet.astro │ │ │ │ ├── BlocProviderSnippet.astro │ │ │ │ ├── BlocProviderValueSnippet.astro │ │ │ │ ├── BlocSelectorSnippet.astro │ │ │ │ ├── CounterBlocSnippet.astro │ │ │ │ ├── CounterMainSnippet.astro │ │ │ │ ├── CounterPageSnippet.astro │ │ │ │ ├── MultiBlocListenerSnippet.astro │ │ │ │ ├── MultiBlocProviderSnippet.astro │ │ │ │ ├── MultiRepositoryProviderSnippet.astro │ │ │ │ ├── NestedBlocListenerSnippet.astro │ │ │ │ ├── NestedBlocProviderSnippet.astro │ │ │ │ ├── NestedRepositoryProviderSnippet.astro │ │ │ │ ├── RepositoryProviderDisposeSnippet.astro │ │ │ │ ├── RepositoryProviderLookupSnippet.astro │ │ │ │ ├── RepositoryProviderSnippet.astro │ │ │ │ ├── WeatherAppSnippet.astro │ │ │ │ ├── WeatherMainSnippet.astro │ │ │ │ ├── WeatherPageSnippet.astro │ │ │ │ └── WeatherRepositorySnippet.astro │ │ │ ├── faqs/ │ │ │ │ ├── BlocExternalForEachSnippet.astro │ │ │ │ ├── BlocInternalAddEventSnippet.astro │ │ │ │ ├── BlocInternalEventSnippet.astro │ │ │ │ ├── BlocProviderBad1Snippet.astro │ │ │ │ ├── BlocProviderGood1Snippet.astro │ │ │ │ ├── BlocProviderGood2Snippet.astro │ │ │ │ ├── EquatableBlocTestSnippet.astro │ │ │ │ ├── EquatableEmitSnippet.astro │ │ │ │ ├── NoEquatableBlocTestSnippet.astro │ │ │ │ ├── SingleStateSnippet.astro │ │ │ │ ├── SingleStateUsageSnippet.astro │ │ │ │ ├── StateNotUpdatingBad1Snippet.astro │ │ │ │ ├── StateNotUpdatingBad2Snippet.astro │ │ │ │ ├── StateNotUpdatingBad3Snippet.astro │ │ │ │ ├── StateNotUpdatingGood1Snippet.astro │ │ │ │ ├── StateNotUpdatingGood2Snippet.astro │ │ │ │ └── StateNotUpdatingGood3Snippet.astro │ │ │ ├── getting-started/ │ │ │ │ ├── ImportTabs.astro │ │ │ │ └── InstallationTabs.astro │ │ │ ├── landing/ │ │ │ │ ├── Card.astro │ │ │ │ ├── Discord.astro │ │ │ │ ├── ListCard.astro │ │ │ │ ├── SplitCard.astro │ │ │ │ └── SponsorsGrid.astro │ │ │ ├── lint/ │ │ │ │ ├── BlocLintBasicAnalysisOptionsSnippet.astro │ │ │ │ ├── BlocLintChangingSeveritySnippet.astro │ │ │ │ ├── BlocLintDisablingRulesSnippet.astro │ │ │ │ ├── BlocLintEnablingRulesSnippet.astro │ │ │ │ ├── BlocLintExcludingFilesSnippet.astro │ │ │ │ ├── BlocLintIgnoreForFileSnippet.astro │ │ │ │ ├── BlocLintIgnoreForLineSnippet.astro │ │ │ │ ├── BlocLintMultipleRecommendedAnalysisOptionsSnippet.astro │ │ │ │ ├── BlocLintRecommendedAnalysisOptionsSnippet.astro │ │ │ │ ├── BlocToolsLintHelpOutputSnippet.astro │ │ │ │ ├── ImportFlutterInfoOutputSnippet.astro │ │ │ │ ├── ImportFlutterInfoSnippet.mdx │ │ │ │ ├── ImportFlutterWarningOutputSnippet.astro │ │ │ │ ├── ImportFlutterWarningSnippet.mdx │ │ │ │ ├── InstallBlocLintSnippet.astro │ │ │ │ ├── InstallBlocToolsSnippet.astro │ │ │ │ ├── RunBlocLintCounterCubitSnippet.astro │ │ │ │ ├── RunBlocLintInCurrentDirectorySnippet.astro │ │ │ │ └── RunBlocLintInSrcTestSnippet.astro │ │ │ ├── lint-rules/ │ │ │ │ ├── EnableRuleSnippet.astro │ │ │ │ ├── avoid_build_context_extensions/ │ │ │ │ │ ├── BadSnippet.mdx │ │ │ │ │ └── GoodSnippet.astro │ │ │ │ ├── avoid_flutter_imports/ │ │ │ │ │ ├── BadSnippet.mdx │ │ │ │ │ └── GoodSnippet.astro │ │ │ │ ├── avoid_public_bloc_methods/ │ │ │ │ │ ├── BadSnippet.mdx │ │ │ │ │ └── GoodSnippet.astro │ │ │ │ ├── avoid_public_fields/ │ │ │ │ │ ├── BadSnippet.mdx │ │ │ │ │ └── GoodSnippet.astro │ │ │ │ ├── prefer_bloc/ │ │ │ │ │ ├── BadSnippet.mdx │ │ │ │ │ └── GoodSnippet.astro │ │ │ │ ├── prefer_build_context_extensions/ │ │ │ │ │ ├── BadSnippet.mdx │ │ │ │ │ └── GoodSnippet.astro │ │ │ │ ├── prefer_cubit/ │ │ │ │ │ ├── BadSnippet.mdx │ │ │ │ │ └── GoodSnippet.astro │ │ │ │ ├── prefer_file_naming_conventions/ │ │ │ │ │ ├── BadSnippet.mdx │ │ │ │ │ └── GoodSnippet.astro │ │ │ │ └── prefer_void_public_cubit_methods/ │ │ │ │ ├── BadSnippet.mdx │ │ │ │ └── GoodSnippet.astro │ │ │ ├── modeling-state/ │ │ │ │ ├── ConcreteClassAndStatusEnumSnippet.astro │ │ │ │ └── SealedClassAndSubclassesSnippet.astro │ │ │ ├── naming-conventions/ │ │ │ │ ├── EventExamplesBad1Snippet.astro │ │ │ │ ├── EventExamplesGood1Snippet.astro │ │ │ │ ├── SingleStateExamplesGood1Snippet.astro │ │ │ │ ├── StateExamplesBad1Snippet.astro │ │ │ │ └── StateExamplesGood1Snippet.astro │ │ │ ├── testing/ │ │ │ │ ├── AddDevDependenciesSnippet.astro │ │ │ │ ├── CounterBlocSnippet.astro │ │ │ │ ├── CounterBlocTestBlocTestSnippet.astro │ │ │ │ ├── CounterBlocTestImportsSnippet.astro │ │ │ │ ├── CounterBlocTestInitialStateSnippet.astro │ │ │ │ ├── CounterBlocTestMainSnippet.astro │ │ │ │ └── CounterBlocTestSetupSnippet.astro │ │ │ └── tutorials/ │ │ │ ├── FlutterPubGetSnippet.astro │ │ │ ├── flutter-counter/ │ │ │ │ └── FlutterCreateSnippet.astro │ │ │ ├── flutter-firebase-login/ │ │ │ │ └── FlutterCreateSnippet.astro │ │ │ ├── flutter-infinite-list/ │ │ │ │ ├── FlutterCreateSnippet.astro │ │ │ │ ├── FlutterPubGetSnippet.astro │ │ │ │ ├── PostBlocInitialStateSnippet.astro │ │ │ │ ├── PostBlocOnPostFetchedSnippet.astro │ │ │ │ ├── PostBlocTransformerSnippet.astro │ │ │ │ └── PostsJsonSnippet.astro │ │ │ ├── flutter-login/ │ │ │ │ └── FlutterCreateSnippet.astro │ │ │ ├── flutter-timer/ │ │ │ │ ├── ActionsSnippet.astro │ │ │ │ ├── BackgroundSnippet.astro │ │ │ │ ├── FlutterCreateSnippet.astro │ │ │ │ ├── TimerBlocEmptySnippet.astro │ │ │ │ ├── TimerBlocInitialStateSnippet.astro │ │ │ │ ├── TimerBlocOnPausedSnippet.astro │ │ │ │ ├── TimerBlocOnResumedSnippet.astro │ │ │ │ ├── TimerBlocOnStartedSnippet.astro │ │ │ │ ├── TimerBlocOnTickedSnippet.astro │ │ │ │ ├── TimerBlocTickerSnippet.astro │ │ │ │ └── TimerPageSnippet.astro │ │ │ ├── flutter-todos/ │ │ │ │ ├── ActivateVeryGoodCLISnippet.astro │ │ │ │ ├── EditTodosPageTreeSnippet.astro │ │ │ │ ├── FlutterCreatePackagesSnippet.astro │ │ │ │ ├── FlutterCreateSnippet.astro │ │ │ │ ├── HomePageTreeSnippet.astro │ │ │ │ ├── ProjectStructureSnippet.astro │ │ │ │ ├── StatsPageTreeSnippet.astro │ │ │ │ ├── TodosOverviewPageTreeSnippet.astro │ │ │ │ └── VeryGoodPackagesGetSnippet.astro │ │ │ ├── flutter-weather/ │ │ │ │ ├── BuildRunnerBuildSnippet.astro │ │ │ │ ├── FeatureTreeSnippet.astro │ │ │ │ ├── FlutterCreateApiClientSnippet.astro │ │ │ │ ├── FlutterCreateRepositorySnippet.astro │ │ │ │ ├── FlutterCreateSnippet.astro │ │ │ │ ├── FlutterTestCoverageSnippet.astro │ │ │ │ ├── GetWeatherMethodSnippet.astro │ │ │ │ ├── LocationDartSnippet.astro │ │ │ │ ├── LocationJsonSnippet.astro │ │ │ │ ├── LocationSearchMethodSnippet.astro │ │ │ │ ├── OpenMeteoApiClientTreeSnippet.astro │ │ │ │ ├── OpenMeteoLibrarySnippet.astro │ │ │ │ ├── OpenMeteoModelsBarrelTreeSnippet.astro │ │ │ │ ├── OpenMeteoModelsTreeSnippet.astro │ │ │ │ ├── RepositoryModelsBarrelTreeSnippet.astro │ │ │ │ ├── WeatherBarrelDartSnippet.astro │ │ │ │ ├── WeatherCubitTreeSnippet.astro │ │ │ │ ├── WeatherDartSnippet.astro │ │ │ │ ├── WeatherJsonSnippet.astro │ │ │ │ └── WeatherRepositoryLibrarySnippet.astro │ │ │ ├── github-search/ │ │ │ │ ├── ActivateStagehandSnippet.astro │ │ │ │ ├── DartPubGetSnippet.astro │ │ │ │ ├── FlutterCreateSnippet.astro │ │ │ │ ├── SetupSnippet.astro │ │ │ │ └── StagehandSnippet.astro │ │ │ └── ngdart-counter/ │ │ │ ├── ActivateStagehandSnippet.astro │ │ │ ├── InstallDependenciesSnippet.astro │ │ │ └── StagehandSnippet.astro │ │ ├── content/ │ │ │ ├── config.ts │ │ │ └── docs/ │ │ │ ├── ar/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── faqs.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── lint/ │ │ │ │ │ ├── configuration.mdx │ │ │ │ │ ├── customizing-rules.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ └── installation.mdx │ │ │ │ ├── lint-rules/ │ │ │ │ │ ├── avoid_build_context_extensions.mdx │ │ │ │ │ ├── avoid_flutter_imports.mdx │ │ │ │ │ ├── avoid_public_bloc_methods.mdx │ │ │ │ │ ├── avoid_public_fields.mdx │ │ │ │ │ ├── prefer_bloc.mdx │ │ │ │ │ ├── prefer_build_context_extensions.mdx │ │ │ │ │ ├── prefer_cubit.mdx │ │ │ │ │ ├── prefer_file_naming_conventions.mdx │ │ │ │ │ └── prefer_void_public_cubit_methods.mdx │ │ │ │ ├── migration.mdx │ │ │ │ ├── modeling-state.mdx │ │ │ │ ├── naming-conventions.mdx │ │ │ │ ├── testing.mdx │ │ │ │ ├── tutorials/ │ │ │ │ │ ├── flutter-counter.mdx │ │ │ │ │ ├── flutter-firebase-login.mdx │ │ │ │ │ ├── flutter-infinite-list.mdx │ │ │ │ │ ├── flutter-login.mdx │ │ │ │ │ ├── flutter-timer.mdx │ │ │ │ │ ├── flutter-todos.mdx │ │ │ │ │ ├── flutter-weather.mdx │ │ │ │ │ ├── github-search.mdx │ │ │ │ │ └── ngdart-counter.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── architecture.mdx │ │ │ ├── bloc-concepts.mdx │ │ │ ├── bn/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── faqs.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── migration.mdx │ │ │ │ ├── modeling-state.mdx │ │ │ │ ├── naming-conventions.mdx │ │ │ │ ├── testing.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── de/ │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── es/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── faqs.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── migration.mdx │ │ │ │ ├── modeling-state.mdx │ │ │ │ ├── naming-conventions.mdx │ │ │ │ ├── testing.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── fa/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── faqs.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── lint/ │ │ │ │ │ ├── configuration.mdx │ │ │ │ │ ├── customizing-rules.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ └── installation.mdx │ │ │ │ ├── lint-rules/ │ │ │ │ │ ├── avoid_build_context_extensions.mdx │ │ │ │ │ ├── avoid_flutter_imports.mdx │ │ │ │ │ ├── avoid_public_bloc_methods.mdx │ │ │ │ │ ├── avoid_public_fields.mdx │ │ │ │ │ ├── prefer_bloc.mdx │ │ │ │ │ ├── prefer_build_context_extensions.mdx │ │ │ │ │ ├── prefer_cubit.mdx │ │ │ │ │ ├── prefer_file_naming_conventions.mdx │ │ │ │ │ └── prefer_void_public_cubit_methods.mdx │ │ │ │ ├── migration.mdx │ │ │ │ ├── modeling-state.mdx │ │ │ │ ├── naming-conventions.mdx │ │ │ │ ├── testing.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── faqs.mdx │ │ │ ├── fil/ │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ ├── fr/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── lint/ │ │ │ │ │ ├── index.mdx │ │ │ │ │ └── installation.mdx │ │ │ │ ├── testing.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── getting-started.mdx │ │ │ ├── index.mdx │ │ │ ├── it/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── faqs.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── lint/ │ │ │ │ │ ├── configuration.mdx │ │ │ │ │ ├── customizing-rules.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ └── installation.mdx │ │ │ │ ├── lint-rules/ │ │ │ │ │ ├── avoid_build_context_extensions.mdx │ │ │ │ │ ├── avoid_flutter_imports.mdx │ │ │ │ │ ├── avoid_public_bloc_methods.mdx │ │ │ │ │ ├── avoid_public_fields.mdx │ │ │ │ │ ├── prefer_bloc.mdx │ │ │ │ │ ├── prefer_build_context_extensions.mdx │ │ │ │ │ ├── prefer_cubit.mdx │ │ │ │ │ ├── prefer_file_naming_conventions.mdx │ │ │ │ │ └── prefer_void_public_cubit_methods.mdx │ │ │ │ ├── migration.mdx │ │ │ │ ├── modeling-state.mdx │ │ │ │ ├── naming-conventions.mdx │ │ │ │ ├── testing.mdx │ │ │ │ ├── tutorials/ │ │ │ │ │ ├── flutter-counter.mdx │ │ │ │ │ ├── flutter-firebase-login.mdx │ │ │ │ │ ├── flutter-infinite-list.mdx │ │ │ │ │ ├── flutter-login.mdx │ │ │ │ │ ├── flutter-timer.mdx │ │ │ │ │ ├── flutter-todos.mdx │ │ │ │ │ ├── flutter-weather.mdx │ │ │ │ │ ├── github-search.mdx │ │ │ │ │ └── ngdart-counter.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── ja/ │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── ko/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── faqs.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── modeling-state.mdx │ │ │ │ ├── naming-conventions.mdx │ │ │ │ ├── testing.mdx │ │ │ │ ├── tutorials/ │ │ │ │ │ ├── flutter-counter.mdx │ │ │ │ │ ├── flutter-firebase-login.mdx │ │ │ │ │ ├── flutter-infinite-list.mdx │ │ │ │ │ ├── flutter-login.mdx │ │ │ │ │ ├── flutter-timer.mdx │ │ │ │ │ ├── flutter-todos.mdx │ │ │ │ │ ├── flutter-weather.mdx │ │ │ │ │ └── github-search.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── lint/ │ │ │ │ ├── configuration.mdx │ │ │ │ ├── customizing-rules.mdx │ │ │ │ ├── index.mdx │ │ │ │ └── installation.mdx │ │ │ ├── lint-rules/ │ │ │ │ ├── avoid_build_context_extensions.mdx │ │ │ │ ├── avoid_flutter_imports.mdx │ │ │ │ ├── avoid_public_bloc_methods.mdx │ │ │ │ ├── avoid_public_fields.mdx │ │ │ │ ├── prefer_bloc.mdx │ │ │ │ ├── prefer_build_context_extensions.mdx │ │ │ │ ├── prefer_cubit.mdx │ │ │ │ ├── prefer_file_naming_conventions.mdx │ │ │ │ └── prefer_void_public_cubit_methods.mdx │ │ │ ├── migration.mdx │ │ │ ├── modeling-state.mdx │ │ │ ├── naming-conventions.mdx │ │ │ ├── pt-br/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── modeling-state.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── ru/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── faqs.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── lint/ │ │ │ │ │ ├── configuration.mdx │ │ │ │ │ ├── customizing-rules.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ └── installation.mdx │ │ │ │ ├── lint-rules/ │ │ │ │ │ ├── avoid_build_context_extensions.mdx │ │ │ │ │ ├── avoid_flutter_imports.mdx │ │ │ │ │ ├── avoid_public_bloc_methods.mdx │ │ │ │ │ ├── avoid_public_fields.mdx │ │ │ │ │ ├── prefer_bloc.mdx │ │ │ │ │ ├── prefer_build_context_extensions.mdx │ │ │ │ │ ├── prefer_cubit.mdx │ │ │ │ │ ├── prefer_file_naming_conventions.mdx │ │ │ │ │ └── prefer_void_public_cubit_methods.mdx │ │ │ │ ├── migration.mdx │ │ │ │ ├── modeling-state.mdx │ │ │ │ ├── naming-conventions.mdx │ │ │ │ ├── testing.mdx │ │ │ │ ├── tutorials/ │ │ │ │ │ ├── flutter-counter.mdx │ │ │ │ │ ├── flutter-firebase-login.mdx │ │ │ │ │ ├── flutter-infinite-list.mdx │ │ │ │ │ ├── flutter-login.mdx │ │ │ │ │ ├── flutter-timer.mdx │ │ │ │ │ ├── flutter-todos.mdx │ │ │ │ │ ├── flutter-weather.mdx │ │ │ │ │ ├── github-search.mdx │ │ │ │ │ └── ngdart-counter.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── testing.mdx │ │ │ ├── tutorials/ │ │ │ │ ├── flutter-counter.mdx │ │ │ │ ├── flutter-firebase-login.mdx │ │ │ │ ├── flutter-infinite-list.mdx │ │ │ │ ├── flutter-login.mdx │ │ │ │ ├── flutter-timer.mdx │ │ │ │ ├── flutter-todos.mdx │ │ │ │ ├── flutter-weather.mdx │ │ │ │ ├── github-search.mdx │ │ │ │ └── ngdart-counter.mdx │ │ │ ├── uk/ │ │ │ │ ├── architecture.mdx │ │ │ │ ├── bloc-concepts.mdx │ │ │ │ ├── faqs.mdx │ │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ │ ├── getting-started.mdx │ │ │ │ ├── index.mdx │ │ │ │ ├── lint/ │ │ │ │ │ ├── configuration.mdx │ │ │ │ │ ├── customizing-rules.mdx │ │ │ │ │ ├── index.mdx │ │ │ │ │ └── installation.mdx │ │ │ │ ├── lint-rules/ │ │ │ │ │ ├── avoid_build_context_extensions.mdx │ │ │ │ │ ├── avoid_flutter_imports.mdx │ │ │ │ │ ├── avoid_public_bloc_methods.mdx │ │ │ │ │ ├── avoid_public_fields.mdx │ │ │ │ │ ├── prefer_bloc.mdx │ │ │ │ │ ├── prefer_build_context_extensions.mdx │ │ │ │ │ ├── prefer_cubit.mdx │ │ │ │ │ ├── prefer_file_naming_conventions.mdx │ │ │ │ │ └── prefer_void_public_cubit_methods.mdx │ │ │ │ ├── migration.mdx │ │ │ │ ├── modeling-state.mdx │ │ │ │ ├── naming-conventions.mdx │ │ │ │ ├── testing.mdx │ │ │ │ ├── tutorials/ │ │ │ │ │ ├── flutter-counter.mdx │ │ │ │ │ ├── flutter-firebase-login.mdx │ │ │ │ │ ├── flutter-infinite-list.mdx │ │ │ │ │ ├── flutter-login.mdx │ │ │ │ │ ├── flutter-timer.mdx │ │ │ │ │ ├── flutter-todos.mdx │ │ │ │ │ ├── flutter-weather.mdx │ │ │ │ │ ├── github-search.mdx │ │ │ │ │ └── ngdart-counter.mdx │ │ │ │ └── why-bloc.mdx │ │ │ ├── why-bloc.mdx │ │ │ └── zh-cn/ │ │ │ ├── bloc-concepts.mdx │ │ │ ├── flutter-bloc-concepts.mdx │ │ │ ├── getting-started.mdx │ │ │ ├── index.mdx │ │ │ ├── tutorials/ │ │ │ │ └── flutter-counter.mdx │ │ │ └── why-bloc.mdx │ │ ├── env.d.ts │ │ ├── styles/ │ │ │ └── landing.css │ │ └── tailwind.css │ └── tsconfig.json ├── examples/ │ ├── angular_counter/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ ├── app_component.css │ │ │ ├── app_component.dart │ │ │ ├── app_component.html │ │ │ └── src/ │ │ │ └── counter_page/ │ │ │ ├── counter_bloc.dart │ │ │ ├── counter_page_component.css │ │ │ ├── counter_page_component.dart │ │ │ └── counter_page_component.html │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ └── web/ │ │ ├── index.html │ │ ├── main.dart │ │ └── styles.css │ ├── bloc_concurrency_visualizer/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ ├── main.dart │ │ │ └── timeline/ │ │ │ ├── bloc/ │ │ │ │ ├── timeline_bloc.dart │ │ │ │ ├── timeline_event.dart │ │ │ │ └── timeline_state.dart │ │ │ ├── models/ │ │ │ │ ├── models.dart │ │ │ │ ├── task.dart │ │ │ │ └── transformer.dart │ │ │ ├── timeline.dart │ │ │ └── view/ │ │ │ └── timeline_page.dart │ │ ├── pubspec.yaml │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_bloc_with_stream/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ └── .gitignore │ │ ├── lib/ │ │ │ ├── bloc/ │ │ │ │ ├── ticker_bloc.dart │ │ │ │ ├── ticker_event.dart │ │ │ │ └── ticker_state.dart │ │ │ ├── main.dart │ │ │ └── ticker/ │ │ │ └── ticker.dart │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── app_test.dart │ │ │ ├── bloc/ │ │ │ │ ├── ticker_bloc_test.dart │ │ │ │ ├── ticker_event_test.dart │ │ │ │ └── ticker_state_test.dart │ │ │ └── ticker_page_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_complex_list/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ └── .gitignore │ │ ├── lib/ │ │ │ ├── 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 │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── app_test.dart │ │ │ ├── complex_list/ │ │ │ │ ├── cubit/ │ │ │ │ │ ├── complex_list_cubit_test.dart │ │ │ │ │ └── complex_list_state_test.dart │ │ │ │ ├── models/ │ │ │ │ │ └── item_test.dart │ │ │ │ └── view/ │ │ │ │ └── complex_list_page_test.dart │ │ │ └── repository_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_counter/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── integration_test/ │ │ │ └── app_test.dart │ │ ├── lib/ │ │ │ ├── app.dart │ │ │ ├── counter/ │ │ │ │ ├── counter.dart │ │ │ │ ├── cubit/ │ │ │ │ │ └── counter_cubit.dart │ │ │ │ └── view/ │ │ │ │ ├── counter_page.dart │ │ │ │ ├── counter_view.dart │ │ │ │ └── view.dart │ │ │ ├── counter_observer.dart │ │ │ └── main.dart │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── app_test.dart │ │ │ └── counter/ │ │ │ ├── cubit/ │ │ │ │ └── counter_cubit_test.dart │ │ │ └── view/ │ │ │ ├── counter_page_test.dart │ │ │ └── counter_view_test.dart │ │ ├── test_driver/ │ │ │ └── integration_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_dynamic_form/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ └── .gitignore │ │ ├── lib/ │ │ │ ├── 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 │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── app_test.dart │ │ │ ├── new_car/ │ │ │ │ ├── bloc/ │ │ │ │ │ ├── new_car_bloc_test.dart │ │ │ │ │ ├── new_car_event_test.dart │ │ │ │ │ └── new_car_state_test.dart │ │ │ │ └── view/ │ │ │ │ └── new_car_page_test.dart │ │ │ └── new_car_repository_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_firebase_login/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── android/ │ │ │ ├── .gitignore │ │ │ ├── app/ │ │ │ │ ├── build.gradle.kts │ │ │ │ ├── google-services.json │ │ │ │ └── src/ │ │ │ │ ├── debug/ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── main/ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ ├── kotlin/ │ │ │ │ │ │ └── com/ │ │ │ │ │ │ └── example/ │ │ │ │ │ │ └── flutter_firebase_login/ │ │ │ │ │ │ └── MainActivity.kt │ │ │ │ │ └── res/ │ │ │ │ │ ├── drawable/ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── drawable-v21/ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── values/ │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── values-night/ │ │ │ │ │ └── styles.xml │ │ │ │ └── profile/ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── build.gradle.kts │ │ │ ├── gradle/ │ │ │ │ └── wrapper/ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── gradle.properties │ │ │ └── settings.gradle.kts │ │ ├── ios/ │ │ │ ├── .gitignore │ │ │ ├── Flutter/ │ │ │ │ ├── AppFrameworkInfo.plist │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Podfile │ │ │ ├── Runner/ │ │ │ │ ├── AppDelegate.swift │ │ │ │ ├── Assets.xcassets/ │ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── LaunchImage.imageset/ │ │ │ │ │ ├── Contents.json │ │ │ │ │ └── README.md │ │ │ │ ├── Base.lproj/ │ │ │ │ │ ├── LaunchScreen.storyboard │ │ │ │ │ └── Main.storyboard │ │ │ │ ├── GoogleService-Info.plist │ │ │ │ ├── Info.plist │ │ │ │ └── Runner-Bridging-Header.h │ │ │ ├── Runner.xcodeproj/ │ │ │ │ ├── project.pbxproj │ │ │ │ ├── project.xcworkspace/ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata/ │ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ │ └── xcshareddata/ │ │ │ │ └── xcschemes/ │ │ │ │ └── Runner.xcscheme │ │ │ ├── Runner.xcworkspace/ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata/ │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ │ └── RunnerTests/ │ │ │ └── RunnerTests.swift │ │ ├── lib/ │ │ │ ├── app/ │ │ │ │ ├── app.dart │ │ │ │ ├── bloc/ │ │ │ │ │ ├── app_bloc.dart │ │ │ │ │ ├── app_event.dart │ │ │ │ │ └── app_state.dart │ │ │ │ ├── bloc_observer.dart │ │ │ │ ├── routes/ │ │ │ │ │ └── routes.dart │ │ │ │ └── view/ │ │ │ │ └── app.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 │ │ ├── packages/ │ │ │ ├── authentication_repository/ │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── lib/ │ │ │ │ │ ├── authentication_repository.dart │ │ │ │ │ └── src/ │ │ │ │ │ ├── authentication_repository.dart │ │ │ │ │ └── models/ │ │ │ │ │ ├── models.dart │ │ │ │ │ └── user.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test/ │ │ │ │ ├── authentication_repository_test.dart │ │ │ │ └── models/ │ │ │ │ └── user_test.dart │ │ │ ├── cache/ │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── lib/ │ │ │ │ │ └── cache.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test/ │ │ │ │ └── cache_test.dart │ │ │ └── form_inputs/ │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── form_inputs.dart │ │ │ │ └── src/ │ │ │ │ ├── confirmed_password.dart │ │ │ │ ├── email.dart │ │ │ │ └── password.dart │ │ │ └── pubspec.yaml │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ └── test/ │ │ ├── app/ │ │ │ ├── bloc/ │ │ │ │ ├── app_bloc_test.dart │ │ │ │ └── app_state_test.dart │ │ │ ├── bloc_observer_test.dart │ │ │ ├── routes/ │ │ │ │ └── routes_test.dart │ │ │ └── view/ │ │ │ └── app_test.dart │ │ ├── home/ │ │ │ ├── view/ │ │ │ │ └── home_page_test.dart │ │ │ └── widgets/ │ │ │ └── avatar_test.dart │ │ ├── login/ │ │ │ ├── cubit/ │ │ │ │ ├── login_cubit_test.dart │ │ │ │ └── login_state_test.dart │ │ │ └── view/ │ │ │ ├── login_form_test.dart │ │ │ └── login_page_test.dart │ │ └── sign_up/ │ │ ├── cubit/ │ │ │ ├── sign_up_cubit_test.dart │ │ │ └── sign_up_state_test.dart │ │ └── view/ │ │ ├── sign_up_form_test.dart │ │ └── sign_up_page_test.dart │ ├── flutter_form_validation/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ └── .gitignore │ │ ├── lib/ │ │ │ ├── bloc/ │ │ │ │ ├── my_form_bloc.dart │ │ │ │ ├── my_form_event.dart │ │ │ │ └── my_form_state.dart │ │ │ ├── main.dart │ │ │ └── models/ │ │ │ ├── email.dart │ │ │ ├── models.dart │ │ │ └── password.dart │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_infinite_list/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ └── .gitignore │ │ ├── lib/ │ │ │ ├── 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 │ │ ├── macos/ │ │ │ ├── .gitignore │ │ │ └── Flutter/ │ │ │ └── GeneratedPluginRegistrant.swift │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── app_test.dart │ │ │ └── posts/ │ │ │ ├── bloc/ │ │ │ │ ├── post_bloc_test.dart │ │ │ │ ├── post_event_test.dart │ │ │ │ └── post_state_test.dart │ │ │ ├── models/ │ │ │ │ └── post_test.dart │ │ │ └── view/ │ │ │ ├── posts_list_test.dart │ │ │ └── posts_page_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_login/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ └── .gitignore │ │ ├── lib/ │ │ │ ├── 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 │ │ ├── packages/ │ │ │ ├── authentication_repository/ │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── lib/ │ │ │ │ │ ├── authentication_repository.dart │ │ │ │ │ └── src/ │ │ │ │ │ └── authentication_repository.dart │ │ │ │ └── pubspec.yaml │ │ │ └── user_repository/ │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── src/ │ │ │ │ │ ├── models/ │ │ │ │ │ │ ├── models.dart │ │ │ │ │ │ └── user.dart │ │ │ │ │ └── user_repository.dart │ │ │ │ └── user_repository.dart │ │ │ └── pubspec.yaml │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── authentication/ │ │ │ │ ├── authentication_bloc_test.dart │ │ │ │ └── authentication_state_test.dart │ │ │ └── login/ │ │ │ ├── bloc/ │ │ │ │ ├── login_bloc_test.dart │ │ │ │ ├── login_event_test.dart │ │ │ │ └── login_state_test.dart │ │ │ ├── models/ │ │ │ │ ├── password_test.dart │ │ │ │ └── username_test.dart │ │ │ └── view/ │ │ │ ├── login_form_test.dart │ │ │ └── login_page_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_shopping_cart/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ └── .gitignore │ │ ├── lib/ │ │ │ ├── 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 │ │ ├── macos/ │ │ │ ├── .gitignore │ │ │ └── Flutter/ │ │ │ └── GeneratedPluginRegistrant.swift │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── app_test.dart │ │ │ ├── cart/ │ │ │ │ ├── bloc/ │ │ │ │ │ ├── cart_bloc_test.dart │ │ │ │ │ ├── cart_event_test.dart │ │ │ │ │ └── cart_state_test.dart │ │ │ │ ├── models/ │ │ │ │ │ └── cart_test.dart │ │ │ │ └── view/ │ │ │ │ └── cart_page_test.dart │ │ │ ├── catalog/ │ │ │ │ ├── bloc/ │ │ │ │ │ ├── catalog_bloc_test.dart │ │ │ │ │ ├── catalog_event_test.dart │ │ │ │ │ └── catalog_state_test.dart │ │ │ │ ├── models/ │ │ │ │ │ ├── catalog_test.dart │ │ │ │ │ └── item_test.dart │ │ │ │ └── view/ │ │ │ │ └── catalog_page_test.dart │ │ │ ├── helper.dart │ │ │ └── shopping_repository_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_timer/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ └── .gitignore │ │ ├── lib/ │ │ │ ├── app.dart │ │ │ ├── main.dart │ │ │ ├── ticker.dart │ │ │ └── timer/ │ │ │ ├── bloc/ │ │ │ │ ├── timer_bloc.dart │ │ │ │ ├── timer_event.dart │ │ │ │ └── timer_state.dart │ │ │ ├── timer.dart │ │ │ └── view/ │ │ │ └── timer_page.dart │ │ ├── macos/ │ │ │ ├── .gitignore │ │ │ └── Flutter/ │ │ │ └── GeneratedPluginRegistrant.swift │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── app_test.dart │ │ │ ├── ticker_test.dart │ │ │ └── timer/ │ │ │ ├── bloc/ │ │ │ │ ├── timer_bloc_test.dart │ │ │ │ └── timer_state_test.dart │ │ │ └── view/ │ │ │ └── timer_page_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_todos/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ ├── .gitignore │ │ │ └── Podfile │ │ ├── l10n.yaml │ │ ├── lib/ │ │ │ ├── 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 │ │ │ ├── home/ │ │ │ │ ├── cubit/ │ │ │ │ │ ├── home_cubit.dart │ │ │ │ │ └── home_state.dart │ │ │ │ ├── home.dart │ │ │ │ └── view/ │ │ │ │ ├── home_page.dart │ │ │ │ └── view.dart │ │ │ ├── l10n/ │ │ │ │ ├── app_en.arb │ │ │ │ ├── app_localizations.dart │ │ │ │ ├── app_localizations_en.dart │ │ │ │ └── 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 │ │ ├── packages/ │ │ │ ├── local_storage_todos_api/ │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── lib/ │ │ │ │ │ ├── local_storage_todos_api.dart │ │ │ │ │ └── src/ │ │ │ │ │ └── local_storage_todos_api.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test/ │ │ │ │ └── local_storage_todos_api_test.dart │ │ │ ├── todos_api/ │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── lib/ │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── models/ │ │ │ │ │ │ │ ├── json_map.dart │ │ │ │ │ │ │ ├── models.dart │ │ │ │ │ │ │ ├── todo.dart │ │ │ │ │ │ │ └── todo.g.dart │ │ │ │ │ │ └── todos_api.dart │ │ │ │ │ └── todos_api.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test/ │ │ │ │ ├── models/ │ │ │ │ │ └── todo_test.dart │ │ │ │ └── todos_api_test.dart │ │ │ └── todos_repository/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── src/ │ │ │ │ │ └── todos_repository.dart │ │ │ │ └── todos_repository.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── todos_repository_test.dart │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── app_test.dart │ │ │ ├── edit_todo/ │ │ │ │ ├── bloc/ │ │ │ │ │ ├── edit_todo_bloc_test.dart │ │ │ │ │ ├── edit_todo_event_test.dart │ │ │ │ │ └── edit_todo_state_test.dart │ │ │ │ └── view/ │ │ │ │ └── edit_todo_page_test.dart │ │ │ ├── helpers/ │ │ │ │ ├── finders.dart │ │ │ │ ├── helpers.dart │ │ │ │ ├── l10n.dart │ │ │ │ └── pump_app.dart │ │ │ ├── home/ │ │ │ │ ├── cubit/ │ │ │ │ │ └── home_cubit_test.dart │ │ │ │ └── view/ │ │ │ │ └── home_page_test.dart │ │ │ ├── stats/ │ │ │ │ ├── bloc/ │ │ │ │ │ ├── stats_bloc_test.dart │ │ │ │ │ ├── stats_event_test.dart │ │ │ │ │ └── stats_state_test.dart │ │ │ │ └── view/ │ │ │ │ └── stats_page_test.dart │ │ │ └── todos_overview/ │ │ │ ├── bloc/ │ │ │ │ ├── todos_overview_bloc_test.dart │ │ │ │ ├── todos_overview_event_test.dart │ │ │ │ └── todos_overview_state_test.dart │ │ │ ├── models/ │ │ │ │ └── todos_view_filter_test.dart │ │ │ ├── view/ │ │ │ │ └── todos_overview_page_test.dart │ │ │ └── widgets/ │ │ │ ├── todo_list_tile_test.dart │ │ │ ├── todos_overview_filter_button_test.dart │ │ │ └── todos_overview_options_button_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_weather/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── build.yaml │ │ ├── ios/ │ │ │ ├── .gitignore │ │ │ └── Podfile │ │ ├── lib/ │ │ │ ├── app.dart │ │ │ ├── main.dart │ │ │ ├── search/ │ │ │ │ ├── search.dart │ │ │ │ └── view/ │ │ │ │ └── search_page.dart │ │ │ ├── settings/ │ │ │ │ ├── settings.dart │ │ │ │ └── view/ │ │ │ │ └── settings_page.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 │ │ ├── linux/ │ │ │ ├── .gitignore │ │ │ └── flutter/ │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ ├── macos/ │ │ │ ├── .gitignore │ │ │ ├── Flutter/ │ │ │ │ └── GeneratedPluginRegistrant.swift │ │ │ └── Podfile │ │ ├── packages/ │ │ │ ├── open_meteo_api/ │ │ │ │ ├── analysis_options.yaml │ │ │ │ ├── build.yaml │ │ │ │ ├── lib/ │ │ │ │ │ ├── open_meteo_api.dart │ │ │ │ │ └── src/ │ │ │ │ │ ├── models/ │ │ │ │ │ │ ├── location.dart │ │ │ │ │ │ ├── location.g.dart │ │ │ │ │ │ ├── models.dart │ │ │ │ │ │ ├── weather.dart │ │ │ │ │ │ └── weather.g.dart │ │ │ │ │ └── open_meteo_api_client.dart │ │ │ │ ├── pubspec.yaml │ │ │ │ └── test/ │ │ │ │ ├── location_test.dart │ │ │ │ ├── open_meteo_api_client_test.dart │ │ │ │ └── weather_test.dart │ │ │ └── weather_repository/ │ │ │ ├── analysis_options.yaml │ │ │ ├── build.yaml │ │ │ ├── lib/ │ │ │ │ ├── src/ │ │ │ │ │ ├── models/ │ │ │ │ │ │ ├── models.dart │ │ │ │ │ │ ├── weather.dart │ │ │ │ │ │ └── weather.g.dart │ │ │ │ │ └── weather_repository.dart │ │ │ │ └── weather_repository.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── src/ │ │ │ │ └── models/ │ │ │ │ └── weather_test.dart │ │ │ └── weather_repository_test.dart │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ ├── test/ │ │ │ ├── app_test.dart │ │ │ ├── helpers/ │ │ │ │ └── hydrated_bloc.dart │ │ │ ├── search/ │ │ │ │ └── view/ │ │ │ │ └── search_page_test.dart │ │ │ ├── settings/ │ │ │ │ └── view/ │ │ │ │ └── settings_page_test.dart │ │ │ └── weather/ │ │ │ ├── cubit/ │ │ │ │ ├── weather_cubit_test.dart │ │ │ │ └── weather_state_test.dart │ │ │ ├── view/ │ │ │ │ └── weather_page_test.dart │ │ │ └── widgets/ │ │ │ ├── weather_empty_test.dart │ │ │ ├── weather_error_test.dart │ │ │ ├── weather_loading_test.dart │ │ │ └── weather_populated_test.dart │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flutter_wizard/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── ios/ │ │ │ └── .gitignore │ │ ├── lib/ │ │ │ ├── bloc/ │ │ │ │ ├── profile_wizard_bloc.dart │ │ │ │ ├── profile_wizard_event.dart │ │ │ │ └── profile_wizard_state.dart │ │ │ └── main.dart │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ └── github_search/ │ ├── README.md │ ├── angular_github_search/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ ├── app_component.dart │ │ │ └── src/ │ │ │ ├── github_search.dart │ │ │ ├── search_form/ │ │ │ │ ├── search_bar/ │ │ │ │ │ ├── search_bar_component.dart │ │ │ │ │ └── search_bar_component.html │ │ │ │ ├── search_body/ │ │ │ │ │ ├── search_body_component.dart │ │ │ │ │ ├── search_body_component.html │ │ │ │ │ └── search_results/ │ │ │ │ │ ├── search_result_item/ │ │ │ │ │ │ ├── search_result_item_component.dart │ │ │ │ │ │ └── search_result_item_component.html │ │ │ │ │ ├── search_results_component.dart │ │ │ │ │ └── search_results_component.html │ │ │ │ ├── search_form_component.dart │ │ │ │ └── search_form_component.html │ │ │ └── src.dart │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ └── web/ │ │ ├── index.html │ │ ├── main.dart │ │ └── styles.css │ ├── common_github_search/ │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ ├── common_github_search.dart │ │ │ └── src/ │ │ │ ├── github_cache.dart │ │ │ ├── github_client.dart │ │ │ ├── github_repository.dart │ │ │ ├── github_search_bloc/ │ │ │ │ ├── github_search_bloc.dart │ │ │ │ ├── github_search_event.dart │ │ │ │ └── github_search_state.dart │ │ │ └── models/ │ │ │ ├── github_user.dart │ │ │ ├── models.dart │ │ │ ├── search_result.dart │ │ │ ├── search_result_error.dart │ │ │ └── search_result_item.dart │ │ ├── pubspec.yaml │ │ └── pubspec_overrides.yaml │ └── flutter_github_search/ │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── analysis_options.yaml │ ├── ios/ │ │ ├── .gitignore │ │ └── Podfile │ ├── lib/ │ │ ├── main.dart │ │ └── search_form.dart │ ├── pubspec.yaml │ ├── pubspec_overrides.yaml │ └── web/ │ ├── index.html │ └── manifest.json ├── extensions/ │ ├── intellij/ │ │ ├── README.md │ │ └── intellij_generator_plugin/ │ │ ├── .gitignore │ │ ├── build.gradle.kts │ │ ├── gradle/ │ │ │ └── wrapper/ │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ │ ├── gradle.properties │ │ ├── gradlew │ │ ├── gradlew.bat │ │ ├── settings.gradle │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── bloc/ │ │ │ └── intellij_generator_plugin/ │ │ │ ├── action/ │ │ │ │ ├── BlocTemplateType.java │ │ │ │ ├── GenerateBlocAction.kt │ │ │ │ ├── GenerateBlocDialog.form │ │ │ │ ├── GenerateBlocDialog.java │ │ │ │ ├── GenerateCubitAction.kt │ │ │ │ └── GenerateEquatablePropsAction.kt │ │ │ ├── generator/ │ │ │ │ ├── BlocGenerator.kt │ │ │ │ ├── BlocGeneratorFactory.kt │ │ │ │ ├── CubitGenerator.kt │ │ │ │ ├── CubitGeneratorFactory.kt │ │ │ │ └── components/ │ │ │ │ ├── BlocEventGenerator.kt │ │ │ │ ├── BlocGenerator.kt │ │ │ │ ├── BlocStateGenerator.kt │ │ │ │ ├── CubitGenerator.kt │ │ │ │ └── CubitStateGenerator.kt │ │ │ ├── intention_action/ │ │ │ │ ├── BlocConvertToMultiBlocListenerIntentionAction.kt │ │ │ │ ├── BlocConvertToMultiBlocProviderIntentionAction.kt │ │ │ │ ├── BlocConvertToMultiIntentionAction.kt │ │ │ │ ├── BlocConvertToMultiRepositoryProviderIntentionAction.kt │ │ │ │ ├── BlocWrapWithBlocBuilderIntentionAction.kt │ │ │ │ ├── BlocWrapWithBlocConsumerIntentionAction.kt │ │ │ │ ├── BlocWrapWithBlocListenerIntentionAction.kt │ │ │ │ ├── BlocWrapWithBlocProviderIntentionAction.kt │ │ │ │ ├── BlocWrapWithBlocSelectorIntentionAction.kt │ │ │ │ ├── BlocWrapWithIntentionAction.kt │ │ │ │ ├── BlocWrapWithRepositoryProviderIntentionAction.kt │ │ │ │ ├── Common.kt │ │ │ │ ├── SnippetType.kt │ │ │ │ ├── Snippets.kt │ │ │ │ └── WrapHelper.kt │ │ │ ├── language_server/ │ │ │ │ ├── BlocLanguageServer.kt │ │ │ │ ├── BlocLanguageServerFactory.kt │ │ │ │ └── BlocLanguageServerInstaller.kt │ │ │ ├── live_templates/ │ │ │ │ └── BlocContext.kt │ │ │ └── util/ │ │ │ └── BlocPluginNotification.kt │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── plugin.xml │ │ ├── intentionDescriptions/ │ │ │ ├── BlocConvertToMultiBlocListenerIntentionAction/ │ │ │ │ ├── after.java.template │ │ │ │ ├── before.java.template │ │ │ │ └── description.html │ │ │ ├── BlocConvertToMultiBlocProviderIntentionAction/ │ │ │ │ ├── after.java.template │ │ │ │ ├── before.java.template │ │ │ │ └── description.html │ │ │ ├── BlocConvertToMultiRepositoryProviderIntentionAction/ │ │ │ │ ├── after.java.template │ │ │ │ ├── before.java.template │ │ │ │ └── description.html │ │ │ ├── BlocWrapWithBlocBuilderIntentionAction/ │ │ │ │ ├── after.java.template │ │ │ │ ├── before.java.template │ │ │ │ └── description.html │ │ │ ├── BlocWrapWithBlocConsumerIntentionAction/ │ │ │ │ ├── after.java.template │ │ │ │ ├── before.java.template │ │ │ │ └── description.html │ │ │ ├── BlocWrapWithBlocListenerIntentionAction/ │ │ │ │ ├── after.java.template │ │ │ │ ├── before.java.template │ │ │ │ └── description.html │ │ │ ├── BlocWrapWithBlocProviderIntentionAction/ │ │ │ │ ├── after.java.template │ │ │ │ ├── before.java.template │ │ │ │ └── description.html │ │ │ ├── BlocWrapWithBlocSelectorIntentionAction/ │ │ │ │ ├── after.java.template │ │ │ │ ├── before.java.template │ │ │ │ └── description.html │ │ │ └── BlocWrapWithRepositoryProviderIntentionAction/ │ │ │ ├── after.java.template │ │ │ ├── before.java.template │ │ │ └── description.html │ │ ├── liveTemplates/ │ │ │ └── Bloc.xml │ │ └── templates/ │ │ ├── bloc_basic/ │ │ │ ├── bloc.dart.template │ │ │ ├── bloc_event.dart.template │ │ │ └── bloc_state.dart.template │ │ ├── bloc_equatable/ │ │ │ ├── bloc.dart.template │ │ │ ├── bloc_event.dart.template │ │ │ └── bloc_state.dart.template │ │ ├── bloc_freezed/ │ │ │ ├── bloc.dart.template │ │ │ ├── bloc_event.dart.template │ │ │ └── bloc_state.dart.template │ │ ├── cubit_basic/ │ │ │ ├── cubit.dart.template │ │ │ └── cubit_state.dart.template │ │ ├── cubit_equatable/ │ │ │ ├── cubit.dart.template │ │ │ └── cubit_state.dart.template │ │ └── cubit_freezed/ │ │ ├── cubit.dart.template │ │ └── cubit_state.dart.template │ ├── vscode/ │ │ ├── .gitignore │ │ ├── .vscode/ │ │ │ └── launch.json │ │ ├── .vscodeignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── snippets/ │ │ │ ├── bloc.json │ │ │ ├── bloc_test.json │ │ │ ├── flutter_bloc.json │ │ │ └── freezed_bloc.json │ │ ├── src/ │ │ │ ├── code-actions/ │ │ │ │ ├── bloc-code-action-provider.ts │ │ │ │ └── index.ts │ │ │ ├── commands/ │ │ │ │ ├── convert-to.command.ts │ │ │ │ ├── index.ts │ │ │ │ ├── new-bloc.command.ts │ │ │ │ ├── new-cubit.command.ts │ │ │ │ └── wrap-with.command.ts │ │ │ ├── extension.ts │ │ │ ├── language-server/ │ │ │ │ ├── index.ts │ │ │ │ ├── language-server.ts │ │ │ │ └── selectors.ts │ │ │ ├── templates/ │ │ │ │ ├── bloc-event.template.ts │ │ │ │ ├── bloc-state.template.ts │ │ │ │ ├── bloc.template.ts │ │ │ │ ├── cubit-state.template.ts │ │ │ │ ├── cubit.template.ts │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ ├── analyze-dependencies.ts │ │ │ ├── convert-to.ts │ │ │ ├── downloader.ts │ │ │ ├── exec.ts │ │ │ ├── get-bloc-tools-executable.ts │ │ │ ├── get-bloc-type.ts │ │ │ ├── get-dart-version.ts │ │ │ ├── get-latest-package-version.ts │ │ │ ├── get-pubspec-path.ts │ │ │ ├── get-pubspec.ts │ │ │ ├── get-selected-text.ts │ │ │ ├── get-template-setting.ts │ │ │ ├── has-dependency.ts │ │ │ ├── index.ts │ │ │ ├── install-bloc-tools.ts │ │ │ ├── retry.ts │ │ │ ├── set-show-context-menu.ts │ │ │ ├── update-pubspec-dependency.ts │ │ │ └── wrap-with.ts │ │ ├── tsconfig.json │ │ ├── tslint.json │ │ └── webpack.config.js │ └── zed/ │ ├── .gitignore │ ├── CHANGELOG.md │ ├── Cargo.toml │ ├── LICENSE │ ├── README.md │ ├── extension.toml │ ├── extension.wasm │ ├── snippets/ │ │ └── dart.json │ └── src/ │ └── lib.rs └── packages/ ├── angular_bloc/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── dart_test.yaml │ ├── example/ │ │ └── example.dart │ ├── lib/ │ │ ├── angular_bloc.dart │ │ └── src/ │ │ └── pipes/ │ │ ├── bloc_pipe.dart │ │ └── pipes.dart │ ├── pubspec.yaml │ ├── pubspec_overrides.yaml │ └── test/ │ └── bloc_pipe_test.dart ├── bloc/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── example/ │ │ └── main.dart │ ├── lib/ │ │ ├── bloc.dart │ │ └── src/ │ │ ├── bloc.dart │ │ ├── bloc_base.dart │ │ ├── bloc_observer.dart │ │ ├── change.dart │ │ ├── cubit.dart │ │ ├── emitter.dart │ │ └── transition.dart │ ├── pubspec.yaml │ └── test/ │ ├── bloc_event_transformer_test.dart │ ├── bloc_event_transformer_test_legacy.dart │ ├── bloc_observer_test.dart │ ├── bloc_on_test.dart │ ├── bloc_test.dart │ ├── blocs/ │ │ ├── async/ │ │ │ ├── async_bloc.dart │ │ │ ├── async_event.dart │ │ │ └── async_state.dart │ │ ├── blocs.dart │ │ ├── complex/ │ │ │ ├── complex_bloc.dart │ │ │ ├── complex_event.dart │ │ │ └── complex_state.dart │ │ ├── counter/ │ │ │ ├── counter.dart │ │ │ ├── counter_bloc.dart │ │ │ ├── counter_error_bloc.dart │ │ │ ├── counter_exception_bloc.dart │ │ │ ├── merge_bloc.dart │ │ │ ├── on_error_bloc.dart │ │ │ ├── on_event_error_bloc.dart │ │ │ ├── on_exception_bloc.dart │ │ │ └── on_transition_error_bloc.dart │ │ ├── seeded/ │ │ │ └── seeded_bloc.dart │ │ ├── simple/ │ │ │ └── simple_bloc.dart │ │ ├── stream/ │ │ │ ├── restartable_stream_bloc.dart │ │ │ ├── stream.dart │ │ │ └── stream_bloc.dart │ │ └── unawaited/ │ │ └── unawaited_bloc.dart │ ├── cubit_test.dart │ ├── cubits/ │ │ ├── counter_cubit.dart │ │ ├── cubits.dart │ │ ├── fake_async_cubit.dart │ │ └── seeded_cubit.dart │ └── transition_test.dart ├── bloc_concurrency/ │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── example/ │ │ └── main.dart │ ├── lib/ │ │ ├── bloc_concurrency.dart │ │ └── src/ │ │ ├── concurrent.dart │ │ ├── droppable.dart │ │ ├── restartable.dart │ │ └── sequential.dart │ ├── pubspec.yaml │ ├── pubspec_overrides.yaml │ └── test/ │ └── src/ │ ├── concurrent_test.dart │ ├── droppable_test.dart │ ├── helpers.dart │ ├── restartable_test.dart │ └── sequential_test.dart ├── bloc_lint/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── build.yaml │ ├── example/ │ │ └── main.dart │ ├── lib/ │ │ ├── all.yaml │ │ ├── bloc_lint.dart │ │ ├── recommended.yaml │ │ └── src/ │ │ ├── analysis_options.dart │ │ ├── analysis_options.g.dart │ │ ├── diagnostic.dart │ │ ├── env.dart │ │ ├── lint_rule.dart │ │ ├── linter.dart │ │ ├── rules/ │ │ │ ├── avoid_build_context_extensions.dart │ │ │ ├── avoid_flutter_imports.dart │ │ │ ├── avoid_public_bloc_methods.dart │ │ │ ├── avoid_public_fields.dart │ │ │ ├── prefer_bloc.dart │ │ │ ├── prefer_build_context_extensions.dart │ │ │ ├── prefer_cubit.dart │ │ │ ├── prefer_file_naming_conventions.dart │ │ │ ├── prefer_void_public_cubit_methods.dart │ │ │ └── rules.dart │ │ ├── string_case.dart │ │ └── text_document.dart │ ├── pubspec.yaml │ └── test/ │ └── src/ │ ├── analysis_options_test.dart │ ├── diagnostic_test.dart │ ├── lint_test_helper.dart │ ├── linter_test.dart │ ├── rules/ │ │ ├── avoid_build_context_extensions_test.dart │ │ ├── avoid_flutter_imports_test.dart │ │ ├── avoid_public_bloc_methods_test.dart │ │ ├── avoid_public_fields_test.dart │ │ ├── prefer_bloc_test.dart │ │ ├── prefer_build_context_extensions_test.dart │ │ ├── prefer_cubit_test.dart │ │ ├── prefer_file_naming_conventions_test.dart │ │ └── prefer_void_public_cubit_methods_test.dart │ └── text_document_test.dart ├── bloc_test/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── example/ │ │ └── main.dart │ ├── lib/ │ │ ├── bloc_test.dart │ │ └── src/ │ │ ├── bloc_test.dart │ │ ├── mock_bloc.dart │ │ └── when_listen.dart │ ├── pubspec.yaml │ ├── pubspec_overrides.yaml │ └── test/ │ ├── bloc_bloc_test_test.dart │ ├── bloc_observer_test.dart │ ├── blocs/ │ │ ├── async_counter_bloc.dart │ │ ├── blocs.dart │ │ ├── complex_bloc.dart │ │ ├── counter_bloc.dart │ │ ├── debounce_counter_bloc.dart │ │ ├── error_counter_bloc.dart │ │ ├── exception_counter_bloc.dart │ │ ├── instant_emit_bloc.dart │ │ ├── multi_counter_bloc.dart │ │ ├── side_effect_counter_bloc.dart │ │ └── sum_bloc.dart │ ├── cubit_bloc_test_test.dart │ ├── cubits/ │ │ ├── async_counter_cubit.dart │ │ ├── complex_cubit.dart │ │ ├── counter_cubit.dart │ │ ├── cubits.dart │ │ ├── delayed_counter_cubit.dart │ │ ├── error_cubit.dart │ │ ├── exception_cubit.dart │ │ ├── instant_emit_cubit.dart │ │ ├── multi_counter_cubit.dart │ │ ├── side_effect_counter_cubit.dart │ │ └── sum_cubit.dart │ ├── mock_bloc_test.dart │ └── when_listen_test.dart ├── bloc_tools/ │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── bin/ │ │ └── bloc.dart │ ├── dart_test.yaml │ ├── e2e/ │ │ ├── main.dart │ │ └── pubspec.yaml │ ├── example/ │ │ └── README.md │ ├── lib/ │ │ ├── bloc_tools.dart │ │ └── src/ │ │ ├── command_runner.dart │ │ ├── commands/ │ │ │ ├── commands.dart │ │ │ ├── language_server/ │ │ │ │ └── language_server_command.dart │ │ │ ├── lint/ │ │ │ │ └── lint_command.dart │ │ │ └── new/ │ │ │ ├── bundles/ │ │ │ │ ├── bloc_bundle.dart │ │ │ │ ├── bundles.dart │ │ │ │ ├── cubit_bundle.dart │ │ │ │ ├── hydrated_bloc_bundle.dart │ │ │ │ ├── hydrated_cubit_bundle.dart │ │ │ │ ├── replay_bloc_bundle.dart │ │ │ │ └── replay_cubit_bundle.dart │ │ │ └── new_command.dart │ │ ├── lsp/ │ │ │ ├── language_server.dart │ │ │ ├── text_document.dart │ │ │ └── text_documents.dart │ │ └── version.dart │ ├── pubspec.yaml │ ├── pubspec_overrides.yaml │ └── test/ │ ├── ensure_build_test.dart │ └── src/ │ ├── command_runner_test.dart │ ├── commands/ │ │ ├── language_server/ │ │ │ └── language_server_command_test.dart │ │ ├── lint/ │ │ │ └── lint_command_test.dart │ │ └── new/ │ │ └── new_test.dart │ └── lsp/ │ ├── language_server_test.dart │ └── text_document_test.dart ├── flutter_bloc/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── example/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ └── main.dart │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── lib/ │ │ ├── flutter_bloc.dart │ │ └── src/ │ │ ├── bloc_builder.dart │ │ ├── bloc_consumer.dart │ │ ├── bloc_listener.dart │ │ ├── bloc_provider.dart │ │ ├── bloc_selector.dart │ │ ├── multi_bloc_listener.dart │ │ ├── multi_bloc_provider.dart │ │ ├── multi_repository_provider.dart │ │ └── repository_provider.dart │ ├── pubspec.yaml │ ├── pubspec_overrides.yaml │ └── test/ │ ├── bloc_builder_test.dart │ ├── bloc_consumer_test.dart │ ├── bloc_listener_test.dart │ ├── bloc_provider_test.dart │ ├── bloc_selector_test.dart │ ├── multi_bloc_listener_test.dart │ ├── multi_bloc_provider_test.dart │ ├── multi_repository_provider_test.dart │ └── repository_provider_test.dart ├── hydrated_bloc/ │ ├── .gitignore │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── benchmark/ │ │ └── README.md │ ├── build.yaml │ ├── example/ │ │ ├── .gitignore │ │ ├── .metadata │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ └── main.dart │ │ ├── pubspec.yaml │ │ ├── pubspec_overrides.yaml │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── lib/ │ │ ├── hydrated_bloc.dart │ │ └── src/ │ │ ├── _migration/ │ │ │ ├── _migration_io.dart │ │ │ └── _migration_stub.dart │ │ ├── hydrated_bloc.dart │ │ ├── hydrated_cipher.dart │ │ └── hydrated_storage.dart │ ├── pubspec.yaml │ ├── pubspec_overrides.yaml │ └── test/ │ ├── cubits/ │ │ ├── bad_cubit.dart │ │ ├── cubits.dart │ │ ├── cyclic_cubit.dart │ │ ├── freezed_cubit.dart │ │ ├── freezed_cubit.freezed.dart │ │ ├── freezed_cubit.g.dart │ │ ├── from_json_state_cubit.dart │ │ ├── json_serializable_cubit.dart │ │ ├── json_serializable_cubit.g.dart │ │ ├── list_cubit.dart │ │ ├── manual_cubit.dart │ │ ├── season_palette_cubit.dart │ │ └── simple_cubit.dart │ ├── e2e_test.dart │ ├── hive_interference_test.dart │ ├── hydrated_aes_cipher_test.dart │ ├── hydrated_bloc_test.dart │ ├── hydrated_cubit_test.dart │ ├── hydrated_cyclic_error_test.dart │ ├── hydrated_mixin_test.dart │ └── hydrated_storage_test.dart └── replay_bloc/ ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── analysis_options.yaml ├── example/ │ ├── .gitignore │ ├── .metadata │ ├── README.md │ ├── analysis_options.yaml │ ├── lib/ │ │ └── main.dart │ ├── pubspec.yaml │ ├── pubspec_overrides.yaml │ └── web/ │ ├── index.html │ └── manifest.json ├── lib/ │ ├── replay_bloc.dart │ └── src/ │ ├── change_stack.dart │ ├── replay_bloc.dart │ └── replay_cubit.dart ├── pubspec.yaml ├── pubspec_overrides.yaml └── test/ ├── blocs/ │ └── counter_bloc.dart ├── cubits/ │ └── counter_cubit.dart ├── main.dart ├── replay_bloc_test.dart └── replay_cubit_test.dart