Compare commits

...

6 Commits

Author SHA1 Message Date
07a9b47b36 feat(ui_components): add information_card & quote_card (#126) 2023-02-07 18:30:46 +01:00
5c824b5680 Merge branch 'master' of ssh://git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages 2023-02-07 15:29:49 +01:00
f3c3939ba1 docs: update readme
Some checks failed
continuous-integration/drone/push Build is failing
2023-02-07 14:26:53 +00:00
9339100399
chore(release): publish packages
Some checks failed
continuous-integration/drone/push Build is failing
- wyatt_analysis@2.4.0
2023-02-07 14:46:21 +01:00
03725c25c7
feat(analysis): add new lint rules 2023-02-07 14:44:57 +01:00
588a09e0a1
docs(analysis): add instructions to create a new version (closes #104) 2023-02-07 14:43:52 +01:00
44 changed files with 612 additions and 82 deletions

View File

@ -3,6 +3,28 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## 2023-02-07
### Changes
---
Packages with breaking changes:
- There are no breaking changes in this release.
Packages with other changes:
- [`wyatt_analysis` - `v2.4.0`](#wyatt_analysis---v240)
---
#### `wyatt_analysis` - `v2.4.0`
- **FEAT**: add new lint rules.
- **DOCS**: add instructions to create a new version (closes #104).
## 2022-12-13 ## 2022-12-13
### Changes ### Changes

View File

@ -1,3 +1,8 @@
## 2.4.0
- **FEAT**: add new lint rules.
- **DOCS**: add instructions to create a new version (closes #104).
## 2.3.0 ## 2.3.0
- **REFACTOR**: follow melos versioning. - **REFACTOR**: follow melos versioning.

View File

@ -1,5 +1,5 @@
<!-- <!--
* Copyright (C) 2022 WYATT GROUP * Copyright (C) 2023 WYATT GROUP
* Please see the AUTHORS file for details. * Please see the AUTHORS file for details.
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -7,7 +7,7 @@
* the Free Software Foundation, either version 3 of the License, or * the Free Software Foundation, either version 3 of the License, or
* any later version. * any later version.
* *
* This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
@ -20,21 +20,21 @@
![SDK: Dart & Flutter](https://img.shields.io/badge/SDK-Dart%20%7C%20Flutter-blue?style=flat-square) ![SDK: Dart & Flutter](https://img.shields.io/badge/SDK-Dart%20%7C%20Flutter-blue?style=flat-square)
This package provides lint rules for Dart and Flutter which are used at [Wyatt](https://wyattapp.io) and [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.3.0.yaml**. This package provides lint rules for Dart and Flutter which are used at [Wyatt](https://wyattapp.io) and [Wyatt Studio](https://wyatt-studio.fr). For more information, see the complete list of options in **lib/analysis_options.2.4.0.yaml**.
**Note**: This package was heavily inspired by [pedantic](https://github.com/dart-lang/pedantic), [Very Good Analysis](https://github.com/VeryGoodOpenSource/very_good_analysis) and the official [flutter_lints](https://pub.dev/packages/flutter_lints). **Note**: This package was heavily inspired by [pedantic](https://github.com/dart-lang/pedantic), [Very Good Analysis](https://github.com/VeryGoodOpenSource/very_good_analysis) and the official [flutter_lints](https://pub.dev/packages/flutter_lints).
## Usage ## Usage
To use the lints, add a dependency in your `pubspec.yaml`: To use the lints, add a dependency in your `pubspec.yaml` :
```yaml ```yaml
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
version: 2.3.0 version: 2.4.0
``` ```
Then, add an include in `analysis_options.yaml`: Then, add an include in `analysis_options.yaml` :
```yaml ```yaml
include: package:wyatt_analysis/analysis_options.yaml include: package:wyatt_analysis/analysis_options.yaml
@ -49,13 +49,13 @@ include: package:wyatt_analysis/analysis_options.flutter.yaml
If you wish to restrict the lint version, specify a version of `analysis_options.yaml` instead: If you wish to restrict the lint version, specify a version of `analysis_options.yaml` instead:
```yaml ```yaml
include: package:wyatt_analysis/analysis_options.flutter.2.3.0.yaml include: package:wyatt_analysis/analysis_options.flutter.2.4.0.yaml
``` ```
If you just want **Dart** version: If you just want **Dart** version:
```yaml ```yaml
include: package:wyatt_analysis/analysis_options.2.3.0.yaml include: package:wyatt_analysis/analysis_options.2.4.0.yaml
``` ```
## Suppressing Lints ## Suppressing Lints
@ -87,7 +87,7 @@ class B {}
### Project Level ### Project Level
To surpress a specific lint rule for an entire project, modify `analysis_options.yaml`: To surpress a specific lint rule for an entire project, modify `analysis_options.yaml` :
```yaml ```yaml
include: package:wyatt_analysis/analysis_options.yaml include: package:wyatt_analysis/analysis_options.yaml
@ -104,6 +104,16 @@ To indicate your project is using `wyatt_analysis` → [![style: wyatt analysis]
[![style: wyatt analysis](https://img.shields.io/badge/Style-Wyatt%20Analysis-blue)](https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis) [![style: wyatt analysis](https://img.shields.io/badge/Style-Wyatt%20Analysis-blue)](https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis)
``` ```
## Development
When you want to create a new version of the plugin. Before any modification, execute the following command to create new files:
```sh
./new_version.sh <previous_version> <new_version>
```
> Where `<previous_version>` is 2.4.0
## Notes ## Notes
You can explore every lint rules [here](https://dart-lang.github.io/linter/lints/). You can explore every lint rules [here](https://dart-lang.github.io/linter/lints/).

View File

@ -0,0 +1,217 @@
# Copyright (C) 2023 WYATT GROUP
# Please see the AUTHORS file for details.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
analyzer:
language:
strict-casts: true
strict-inference: true
strict-raw-types: true
errors:
todo: info
close_sinks: ignore
missing_required_param: error
missing_return: error
exclude:
- lib/l10n/**
- lib/generated/**
- lib/gen/**
- lib/generated_plugin_registrant.dart
- test/.test_coverage.dart
- '**/*.g.dart'
- '**/*.freezed.dart'
linter:
rules:
- always_declare_return_types
- always_put_control_body_on_new_line
- always_put_required_named_parameters_first
- always_require_non_null_named_parameters
- always_use_package_imports
- annotate_overrides
- avoid_bool_literals_in_conditional_expressions
- avoid_catching_errors
- avoid_double_and_int_checks
- avoid_dynamic_calls
- avoid_empty_else
- avoid_equals_and_hash_code_on_mutable_classes
- avoid_escaping_inner_quotes
- avoid_field_initializers_in_const_classes
- avoid_final_parameters
- avoid_function_literals_in_foreach_calls
- avoid_init_to_null
- avoid_js_rounded_ints
- avoid_multiple_declarations_per_line
- avoid_null_checks_in_equality_operators
- avoid_positional_boolean_parameters
- avoid_private_typedef_functions
- avoid_redundant_argument_values
- avoid_relative_lib_imports
- avoid_renaming_method_parameters
- avoid_return_types_on_setters
- avoid_returning_null
- avoid_returning_null_for_future
- avoid_returning_null_for_void
- avoid_returning_this
- avoid_setters_without_getters
- avoid_shadowing_type_parameters
- avoid_single_cascade_in_expression_statements
- avoid_slow_async_io
- avoid_type_to_string
- avoid_types_as_parameter_names
- avoid_types_on_closure_parameters
- avoid_unused_constructor_parameters
- avoid_void_async
- await_only_futures
- camel_case_extensions
- camel_case_types
- cancel_subscriptions
- cascade_invocations
- cast_nullable_to_non_nullable
- collection_methods_unrelated_type
- combinators_ordering
- comment_references
- conditional_uri_does_not_exist
- constant_identifier_names
- control_flow_in_finally
- curly_braces_in_flow_control_structures
- depend_on_referenced_packages
- deprecated_consistency
- directives_ordering
- empty_catches
- empty_constructor_bodies
- empty_statements
- eol_at_end_of_file
- exhaustive_cases
- file_names
- flutter_style_todos
- hash_and_equals
- implementation_imports
- implicit_call_tearoffs
- iterable_contains_unrelated_type
- join_return_with_assignment
- leading_newlines_in_multiline_strings
- library_names
- library_prefixes
- library_private_types_in_public_api
- lines_longer_than_80_chars
- list_remove_unrelated_type
- literal_only_boolean_expressions
- missing_whitespace_between_adjacent_strings
- no_adjacent_strings_in_list
- no_default_cases
- no_duplicate_case_values
- no_leading_underscores_for_library_prefixes
- no_leading_underscores_for_local_identifiers
- no_runtimeType_toString
- non_constant_identifier_names
- noop_primitive_operations
- null_check_on_nullable_type_parameter
- null_closures
- one_member_abstracts
- only_throw_errors
- overridden_fields
- package_api_docs
- package_names
- package_prefixed_library_names
- parameter_assignments
- prefer_adjacent_string_concatenation
- prefer_asserts_in_initializer_lists
- prefer_asserts_with_message
- prefer_collection_literals
- prefer_conditional_assignment
- prefer_const_constructors
- prefer_const_constructors_in_immutables
- prefer_const_declarations
- prefer_const_literals_to_create_immutables
- prefer_constructors_over_static_methods
- prefer_contains
- prefer_equal_for_default_values
- prefer_expression_function_bodies
- prefer_final_fields
- prefer_final_in_for_each
- prefer_final_locals
- prefer_for_elements_to_map_fromIterable
- prefer_function_declarations_over_variables
- prefer_generic_function_type_aliases
- prefer_if_elements_to_conditional_expressions
- prefer_if_null_operators
- prefer_initializing_formals
- prefer_inlined_adds
- prefer_int_literals
- prefer_interpolation_to_compose_strings
- prefer_is_empty
- prefer_is_not_empty
- prefer_is_not_operator
- prefer_iterable_whereType
- prefer_mixin
- prefer_null_aware_method_calls
- prefer_null_aware_operators
- prefer_single_quotes
- prefer_spread_collections
- prefer_typing_uninitialized_variables
- prefer_void_to_null
- provide_deprecation_message
- recursive_getters
- require_trailing_commas
- slash_for_doc_comments
- sort_constructors_first
- sort_unnamed_constructors_first
- test_types_in_equals
- throw_in_finally
- tighten_type_of_initializing_formals
- type_annotate_public_apis
- type_init_formals
- unawaited_futures
- unnecessary_await_in_return
- unnecessary_brace_in_string_interps
- unnecessary_const
- unnecessary_constructor_name
- unnecessary_getters_setters
- unnecessary_lambdas
- unnecessary_late
- unnecessary_new
- unnecessary_null_aware_assignments
- unnecessary_null_checks
- unnecessary_null_in_if_null_operators
- unnecessary_nullable_for_final_variable_declarations
- unnecessary_overrides
- unnecessary_parenthesis
- unnecessary_raw_strings
- unnecessary_statements
- unnecessary_string_escapes
- unnecessary_string_interpolations
- unnecessary_this
- unnecessary_to_list_in_spreads
- unrelated_type_equality_checks
- unsafe_html
- use_enums
- use_function_type_syntax_for_parameters
- use_if_null_to_convert_nulls_to_bools
- use_is_even_rather_than_modulo
- use_late_for_private_fields_and_variables
- use_named_constants
- use_raw_strings
- use_rethrow_when_possible
- use_setters_to_change_properties
- use_string_buffers
- use_string_in_part_of_directives
- use_super_parameters
- use_test_throws_matchers
- use_to_and_as_if_applicable
- valid_regexps
- void_checks

View File

@ -0,0 +1,32 @@
# Copyright (C) 2023 WYATT GROUP
# Please see the AUTHORS file for details.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
include: package:wyatt_analysis/analysis_options.2.4.0.yaml
linter:
rules:
- avoid_print
- avoid_unnecessary_containers
- avoid_web_libraries_in_flutter
- no_logic_in_create_state
- sized_box_for_whitespace
- sized_box_shrink_expand
- sort_child_properties_last
- use_build_context_synchronously
- use_colored_box
- use_decorated_box
- use_full_hex_values_for_flutter_colors
- use_key_in_widget_constructors

View File

@ -1,5 +1,4 @@
# Copyright (C) 2023 WYATT GROUP
# Copyright (C) 2022 WYATT GROUP
# Please see the AUTHORS file for details. # Please see the AUTHORS file for details.
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -15,5 +14,5 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
include: package:wyatt_analysis/analysis_options.flutter.2.3.0.yaml include: package:wyatt_analysis/analysis_options.flutter.2.4.0.yaml

View File

@ -1,5 +1,4 @@
# Copyright (C) 2023 WYATT GROUP
# Copyright (C) 2022 WYATT GROUP
# Please see the AUTHORS file for details. # Please see the AUTHORS file for details.
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -15,5 +14,5 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
include: package:wyatt_analysis/analysis_options.2.3.0.yaml include: package:wyatt_analysis/analysis_options.2.4.0.yaml

View File

@ -1,4 +1,4 @@
// Copyright (C) 2022 WYATT GROUP // Copyright (C) 2023 WYATT GROUP
// Please see the AUTHORS file for details. // Please see the AUTHORS file for details.
// //
// This program is free software: you can redistribute it and/or modify // This program is free software: you can redistribute it and/or modify
@ -18,4 +18,4 @@
/// used internally at [Wyatt Studio](https://wyatt-studio.fr). /// used internally at [Wyatt Studio](https://wyatt-studio.fr).
library wyatt_analysis; library wyatt_analysis;
const String wyattAnalysisVersion = '2.3.0'; const String wyattAnalysisVersion = '2.4.0';

View File

@ -1,7 +1,23 @@
# Copyright (C) 2023 WYATT GROUP
# Please see the AUTHORS file for details.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
name: wyatt_analysis name: wyatt_analysis
description: Lint rules for Dart and Flutter used internally at Wyatt Studio. description: Lint rules for Dart and Flutter used internally at Wyatt Studio.
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_analysis
version: 2.3.0 version: 2.4.0
publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub publish_to: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub

View File

@ -67,7 +67,7 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
git: git:
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
ref: wyatt_analysis-v2.3.0 ref: wyatt_analysis-v2.4.0
path: packages/wyatt_analysis path: packages/wyatt_analysis
# For information on the generic Dart part of this file, see the # For information on the generic Dart part of this file, see the

View File

@ -24,4 +24,4 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^2.3.0 version: ^2.4.0

View File

@ -37,4 +37,4 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
version: 2.3.0 version: 2.4.0

View File

@ -22,4 +22,4 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^2.3.0 version: ^2.4.0

View File

@ -51,7 +51,7 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
git: git:
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
ref: wyatt_analysis-v2.3.0 ref: wyatt_analysis-v2.4.0
path: packages/wyatt_analysis path: packages/wyatt_analysis
# For information on the generic Dart part of this file, see the # For information on the generic Dart part of this file, see the

View File

@ -40,5 +40,5 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
git: git:
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
ref: wyatt_analysis-v2.3.0 ref: wyatt_analysis-v2.4.0
path: packages/wyatt_analysis path: packages/wyatt_analysis

View File

@ -20,7 +20,7 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^2.3.0 version: ^2.4.0
# The following section is specific to Flutter. # The following section is specific to Flutter.
flutter: flutter:

View File

@ -13,7 +13,7 @@ dependencies:
dev_dependencies: dev_dependencies:
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^2.3.0 version: ^2.4.0
# The following section is specific to Flutter. # The following section is specific to Flutter.
flutter: flutter:

View File

@ -25,4 +25,4 @@ dev_dependencies:
path: "../" path: "../"
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^2.3.0 version: ^2.4.0

View File

@ -22,4 +22,4 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^2.3.0 version: ^2.4.0

View File

@ -31,4 +31,4 @@ dev_dependencies:
bloc_test: ^9.1.0 bloc_test: ^9.1.0
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
version: 2.3.0 version: 2.4.0

View File

@ -30,4 +30,4 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/ hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
version: ^2.3.0 version: ^2.4.0

View File

@ -14,5 +14,5 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
git: git:
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
ref: wyatt_analysis-v2.3.0 ref: wyatt_analysis-v2.4.0
path: packages/wyatt_analysis path: packages/wyatt_analysis

View File

@ -36,7 +36,7 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
git: git:
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
ref: wyatt_analysis-v2.3.0 ref: wyatt_analysis-v2.4.0
path: packages/wyatt_analysis path: packages/wyatt_analysis
# For information on the generic Dart part of this file, see the # For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec # following page: https://dart.dev/tools/pub/pubspec

View File

@ -13,4 +13,4 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub
version: ^2.3.0 version: ^2.4.0

View File

@ -14,4 +14,4 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
include: package:wyatt_analysis/analysis_options.flutter.experimental.yaml include: package:wyatt_analysis/analysis_options.flutter.yaml

View File

@ -27,8 +27,7 @@ class MyApp extends StatelessWidget {
// This widget is the root of your application. // This widget is the root of your application.
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) => ComponentTheme(
return ComponentTheme(
componentThemeWidget: AppThemeComponent.components, componentThemeWidget: AppThemeComponent.components,
child: MaterialApp( child: MaterialApp(
title: 'Wyatt Ui Components Example', title: 'Wyatt Ui Components Example',
@ -40,7 +39,6 @@ class MyApp extends StatelessWidget {
), ),
), ),
); );
}
} }
class Home extends StatelessWidget { class Home extends StatelessWidget {

View File

@ -51,7 +51,7 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
git: git:
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
ref: wyatt_analysis-v2.3.0 ref: wyatt_analysis-v2.4.0
path: packages/wyatt_analysis path: packages/wyatt_analysis
# For information on the generic Dart part of this file, see the # For information on the generic Dart part of this file, see the

View File

@ -1,15 +0,0 @@
// Copyright (C) 2023 WYATT GROUP
// Please see the AUTHORS file for details.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.

View File

@ -15,8 +15,8 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart'; import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
import 'package:wyatt_ui_components/src/domain/entities/component.dart'; import 'package:wyatt_ui_components/src/domain/entities/component.dart';
part 'app_bar_component.g.dart'; part 'app_bar_component.g.dart';
@ -24,13 +24,13 @@ part 'app_bar_component.g.dart';
@ComponentProxyExtension() @ComponentProxyExtension()
abstract class AppBarComponent extends Component abstract class AppBarComponent extends Component
with CopyWithMixin<$AppBarComponentCWProxy> { with CopyWithMixin<$AppBarComponentCWProxy> {
final String? title;
final Widget? leading;
final List<Widget>? actions;
const AppBarComponent({ const AppBarComponent({
this.title, this.title,
this.leading, this.leading,
this.actions, this.actions,
super.key, super.key,
}); });
final String? title;
final Widget? leading;
final List<Widget>? actions;
} }

View File

@ -1,4 +1,5 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
// Copyright (C) 2023 WYATT GROUP // Copyright (C) 2023 WYATT GROUP
// Please see the AUTHORS file for details. // Please see the AUTHORS file for details.
// //
@ -17,18 +18,17 @@ import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart'; import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
import 'package:wyatt_ui_components/src/domain/entities/component.dart'; import 'package:wyatt_ui_components/src/domain/entities/component.dart';
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
part 'bottom_navigation_bar_component.g.dart'; part 'bottom_navigation_bar_component.g.dart';
@ComponentProxyExtension() @ComponentProxyExtension()
abstract class BottomNavigationBarComponent extends Component abstract class BottomNavigationBarComponent extends Component
with CopyWithMixin<$BottomNavigationBarComponentCWProxy> { with CopyWithMixin<$BottomNavigationBarComponentCWProxy> {
final int currentIndex;
final void Function(BuildContext, int)? onTap;
const BottomNavigationBarComponent({ const BottomNavigationBarComponent({
this.onTap, this.onTap,
this.currentIndex = 0, this.currentIndex = 0,
super.key, super.key,
}); });
final int currentIndex;
final void Function(BuildContext, int)? onTap;
} }

View File

@ -0,0 +1,60 @@
// Copyright (C) 2023 WYATT GROUP
// Please see the AUTHORS file for details.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/widgets.dart';
import 'package:wyatt_ui_components/src/domain/entities/component.dart';
abstract class CardComponent extends Component {
const CardComponent({
this.radius,
this.padding,
this.borderColors,
this.backgroundColor,
this.minSize,
this.maxSize,
this.shadow,
this.isDarkModeEnabled,
this.background,
super.key,
});
/// Card radius
final double? radius;
/// Padding and gaps of this card
final double? padding;
/// Border gradient color (from left to right)
final List<Color>? borderColors;
/// Card background color
final Color? backgroundColor;
/// Minimum size for this card
final Size? minSize;
/// Maximum size for this card
final Size? maxSize;
/// Drop shadow
final BoxShadow? shadow;
/// Is this component in dark mode or not
final bool? isDarkModeEnabled;
/// Background of the card
final Widget? background;
}

View File

@ -0,0 +1,54 @@
// Copyright (C) 2023 WYATT GROUP
// Please see the AUTHORS file for details.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/widgets.dart';
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
import 'package:wyatt_ui_components/src/domain/entities/cards/card_component.dart';
part 'information_card_component.g.dart';
@ComponentProxyExtension()
abstract class InformationCardComponent extends CardComponent
with CopyWithMixin<$InformationCardComponentCWProxy> {
const InformationCardComponent({
this.icons,
this.title,
this.subtitle,
this.body,
this.axis = Axis.vertical,
super.radius = 12,
super.padding = 25,
super.borderColors = const [Color(0xFFDDE0E3), Color(0xFFCACCD4)],
super.backgroundColor = const Color(0xFFF6F6F6),
super.minSize = const Size(330, 230),
super.maxSize = const Size(330, 530),
super.shadow = const BoxShadow(
blurRadius: 30,
offset: Offset(0, 5),
color: Color.fromRGBO(0, 0, 0, 0.05),
),
super.isDarkModeEnabled = false,
super.background,
super.key,
});
final Axis? axis;
final List<Widget>? icons;
final Widget? title;
final Widget? subtitle;
final Widget? body;
}

View File

@ -0,0 +1,42 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'information_card_component.dart';
// **************************************************************************
// ComponentProxyGenerator
// **************************************************************************
abstract class $InformationCardComponentCWProxy {
InformationCardComponent icons(List<Widget>? icons);
InformationCardComponent title(Widget? title);
InformationCardComponent subtitle(Widget? subtitle);
InformationCardComponent body(Widget? body);
InformationCardComponent axis(Axis? axis);
InformationCardComponent radius(double? radius);
InformationCardComponent padding(double? padding);
InformationCardComponent borderColors(List<Color>? borderColors);
InformationCardComponent backgroundColor(Color? backgroundColor);
InformationCardComponent minSize(Size? minSize);
InformationCardComponent maxSize(Size? maxSize);
InformationCardComponent shadow(BoxShadow? shadow);
InformationCardComponent isDarkModeEnabled(bool? isDarkModeEnabled);
InformationCardComponent background(Widget? background);
InformationCardComponent key(Key? key);
InformationCardComponent call({
List<Widget>? icons,
Widget? title,
Widget? subtitle,
Widget? body,
Axis? axis,
double? radius,
double? padding,
List<Color>? borderColors,
Color? backgroundColor,
Size? minSize,
Size? maxSize,
BoxShadow? shadow,
bool? isDarkModeEnabled,
Widget? background,
Key? key,
});
}

View File

@ -0,0 +1,43 @@
import 'package:flutter/widgets.dart';
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
import 'package:wyatt_ui_components/src/domain/entities/cards/card_component.dart';
part 'quote_card_component.g.dart';
@ComponentProxyExtension()
abstract class QuoteCardComponent extends CardComponent
with CopyWithMixin<$QuoteCardComponentCWProxy> {
const QuoteCardComponent({
required this.avatar,
required this.name,
required this.subtitle,
required this.gradient,
required this.quote,
this.leftQuote,
this.rightQuote,
super.radius = 12,
super.padding = 25,
super.borderColors = const [Color(0xFFDDE0E3), Color(0xFFCACCD4)],
super.backgroundColor = const Color(0xFFF6F6F6),
super.minSize = const Size(330, 230),
super.maxSize = const Size(330, 530),
super.shadow = const BoxShadow(
blurRadius: 30,
offset: Offset(0, 5),
color: Color.fromRGBO(0, 0, 0, 0.05),
),
super.isDarkModeEnabled = false,
super.background,
super.key,
});
final Widget avatar;
final Widget name;
final Text subtitle;
final Gradient gradient;
final Widget quote;
final Widget? leftQuote;
final Widget? rightQuote;
}

View File

@ -0,0 +1,46 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'quote_card_component.dart';
// **************************************************************************
// ComponentProxyGenerator
// **************************************************************************
abstract class $QuoteCardComponentCWProxy {
QuoteCardComponent avatar(Widget? avatar);
QuoteCardComponent name(Widget? name);
QuoteCardComponent subtitle(Text? subtitle);
QuoteCardComponent gradient(Gradient? gradient);
QuoteCardComponent quote(Widget? quote);
QuoteCardComponent leftQuote(Widget? leftQuote);
QuoteCardComponent rightQuote(Widget? rightQuote);
QuoteCardComponent radius(double? radius);
QuoteCardComponent padding(double? padding);
QuoteCardComponent borderColors(List<Color>? borderColors);
QuoteCardComponent backgroundColor(Color? backgroundColor);
QuoteCardComponent minSize(Size? minSize);
QuoteCardComponent maxSize(Size? maxSize);
QuoteCardComponent shadow(BoxShadow? shadow);
QuoteCardComponent isDarkModeEnabled(bool? isDarkModeEnabled);
QuoteCardComponent background(Widget? background);
QuoteCardComponent key(Key? key);
QuoteCardComponent call({
Widget? avatar,
Widget? name,
Text? subtitle,
Gradient? gradient,
Widget? quote,
Widget? leftQuote,
Widget? rightQuote,
double? radius,
double? padding,
List<Color>? borderColors,
Color? backgroundColor,
Size? minSize,
Size? maxSize,
BoxShadow? shadow,
bool? isDarkModeEnabled,
Widget? background,
Key? key,
});
}

View File

@ -16,6 +16,6 @@
export './app_bar_component.dart'; export './app_bar_component.dart';
export './bottom_navigation_bar_component.dart'; export './bottom_navigation_bar_component.dart';
export './component.dart';
export './error_widget_component.dart'; export './error_widget_component.dart';
export './loading_widget_component.dart'; export './loading_widget_component.dart';
export './component.dart';

View File

@ -14,16 +14,16 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/material.dart';
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart'; import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
import 'package:wyatt_ui_components/src/domain/entities/component.dart'; import 'package:wyatt_ui_components/src/domain/entities/component.dart';
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
import 'package:flutter/material.dart';
part 'error_widget_component.g.dart'; part 'error_widget_component.g.dart';
@ComponentProxyExtension() @ComponentProxyExtension()
abstract class ErrorWidgetComponent extends Component abstract class ErrorWidgetComponent extends Component
with CopyWithMixin<$ErrorWidgetComponentCWProxy> { with CopyWithMixin<$ErrorWidgetComponentCWProxy> {
final String? error;
const ErrorWidgetComponent({required this.error, super.key}); const ErrorWidgetComponent({required this.error, super.key});
final String? error;
} }

View File

@ -15,15 +15,15 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart'; import 'package:wyatt_ui_components/src/core/mixins/copy_with_mixin.dart';
import 'package:wyatt_ui_components/src/domain/entities/component.dart'; import 'package:wyatt_ui_components/src/domain/entities/component.dart';
import 'package:wyatt_component_copy_with_extension/component_copy_with_extension.dart';
part 'loading_widget_component.g.dart'; part 'loading_widget_component.g.dart';
@ComponentProxyExtension() @ComponentProxyExtension()
abstract class LoadingWidgetComponent extends Component abstract class LoadingWidgetComponent extends Component
with CopyWithMixin<$LoadingWidgetComponentCWProxy> { with CopyWithMixin<$LoadingWidgetComponentCWProxy> {
final Color? color;
const LoadingWidgetComponent({required this.color, super.key}); const LoadingWidgetComponent({required this.color, super.key});
final Color? color;
} }

View File

@ -18,14 +18,14 @@ import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/src/features/features.dart'; import 'package:wyatt_ui_components/src/features/features.dart';
class ComponentTheme extends StatelessWidget { class ComponentTheme extends StatelessWidget {
final Widget child;
final ComponentThemeData componentThemeWidget;
const ComponentTheme({ const ComponentTheme({
required this.child, required this.child,
required this.componentThemeWidget, required this.componentThemeWidget,
super.key, super.key,
}); });
final Widget child;
final ComponentThemeData componentThemeWidget;
static ComponentThemeData of(BuildContext context) { static ComponentThemeData of(BuildContext context) {
final _InheritedComponentTheme? inheritedThemeComponent = final _InheritedComponentTheme? inheritedThemeComponent =
@ -46,11 +46,11 @@ class ComponentTheme extends StatelessWidget {
} }
class _InheritedComponentTheme extends InheritedWidget { class _InheritedComponentTheme extends InheritedWidget {
final ComponentTheme themeWidget;
const _InheritedComponentTheme( const _InheritedComponentTheme(
this.themeWidget, { this.themeWidget, {
required super.child, required super.child,
}); });
final ComponentTheme themeWidget;
@override @override
bool updateShouldNotify(covariant InheritedWidget oldWidget) => bool updateShouldNotify(covariant InheritedWidget oldWidget) =>

View File

@ -17,10 +17,6 @@
import 'package:wyatt_ui_components/src/domain/entities/entities.dart'; import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
class ComponentThemeData { class ComponentThemeData {
final AppBarComponent? appBar;
final BottomNavigationBarComponent? bottomNavigationBar;
final ErrorWidgetComponent? errorWidget;
final LoadingWidgetComponent? loadingWidget;
const ComponentThemeData.raw({ const ComponentThemeData.raw({
this.appBar, this.appBar,
@ -28,4 +24,8 @@ class ComponentThemeData {
this.errorWidget, this.errorWidget,
this.loadingWidget, this.loadingWidget,
}); });
final AppBarComponent? appBar;
final BottomNavigationBarComponent? bottomNavigationBar;
final ErrorWidgetComponent? errorWidget;
final LoadingWidgetComponent? loadingWidget;
} }

View File

@ -14,5 +14,5 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
export 'component_theme_data.dart';
export 'component_theme.dart'; export 'component_theme.dart';
export 'component_theme_data.dart';

View File

@ -3,16 +3,18 @@ description: Primary ui components
repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_ui_components repository: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages/src/branch/master/packages/wyatt_ui_components
version: 0.0.1 version: 0.0.1
publish_to: none
environment: environment:
sdk: ">=2.17.0 <3.0.0" sdk: ">=2.17.0 <3.0.0"
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
wyatt_component_copy_with_extension: wyatt_component_copy_with_extension:
git: git:
url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git url: ssh://git@git.wyatt-studio.fr:993/Wyatt-FOSS/wyatt-packages.git
path: packages/wyatt_component_copy_with_extension path: packages/wyatt_component_copy_with_extension
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
@ -27,5 +29,5 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
git: git:
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
ref: wyatt_analysis-v2.3.0 ref: wyatt_analysis-v2.4.0
path: packages/wyatt_analysis path: packages/wyatt_analysis

View File

@ -57,7 +57,7 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
git: git:
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
ref: wyatt_analysis-v2.3.0 ref: wyatt_analysis-v2.4.0
path: packages/wyatt_analysis path: packages/wyatt_analysis
# For information on the generic Dart part of this file, see the # For information on the generic Dart part of this file, see the

View File

@ -22,5 +22,5 @@ dev_dependencies:
wyatt_analysis: wyatt_analysis:
git: git:
url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages url: https://git.wyatt-studio.fr/Wyatt-FOSS/wyatt-packages
ref: wyatt_analysis-v2.3.0 ref: wyatt_analysis-v2.4.0
path: packages/wyatt_analysis path: packages/wyatt_analysis