mirror of
https://github.com/Iconica-Development/flutter_timetable.git
synced 2025-05-18 19:43:43 +02:00
Merge pull request #5 from Iconica-Development/feature/Improve_README
improved example, updated README and aaded GIF
This commit is contained in:
commit
8f33c14b83
13 changed files with 219 additions and 605 deletions
32
.github/workflows/flutter.yml
vendored
Normal file
32
.github/workflows/flutter.yml
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- feature/*
|
||||||
|
- bugfix/*
|
||||||
|
- hotfix/*
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: |
|
||||||
|
~/.gradle/wrapper
|
||||||
|
/opt/hostedtoolcache/flutter
|
||||||
|
key: ${{ runner.OS }}-flutter-install-cache
|
||||||
|
- uses: subosito/flutter-action@v2
|
||||||
|
with:
|
||||||
|
channel: 'stable'
|
||||||
|
- name: Flutter pub get
|
||||||
|
run: flutter pub get
|
||||||
|
- name: Flutter format
|
||||||
|
run: flutter format -o none --set-exit-if-changed .
|
||||||
|
- name: Flutter analyze
|
||||||
|
run: flutter analyze
|
27
README.md
27
README.md
|
@ -1,24 +1,27 @@
|
||||||
|
[](https://github.com/Iconica-Development) [](https://github.com/Iconica-Development/flutter_timetable/actions/new) [](https://github.com/tenhobi/effective_dart)
|
||||||
# timetable
|
# Flutter Timetable
|
||||||
A Flutter package for creating a timetable widget in which to display blocks of time with optional widgets in them.
|
A Flutter package for creating a Timetable widget in which to display blocks of time with optional widgets in them.
|
||||||
The vertical time range is configurable and the widget is horizontally scrollable. The timetable has options to merge blocks below eachother when they are not overlapping or collapse items that are at the same time and have the same identifier.
|
The vertical time range is configurable and the widget is horizontally scrollable. The timetable has options to merge blocks below eachother when they are not overlapping or collapse items that are at the same time and have the same identifier.
|
||||||
|
|
||||||
Supports all Flutter platforms.
|

|
||||||
|
|
||||||
## Usage
|
## Features
|
||||||
|
## Setup
|
||||||
|
|
||||||
To use this package, add `timetable` as a [dependency in your pubspec.yaml file](https://flutter.dev/docs/development/platform-integration/platform-channels).
|
To use this package, add `timetable` as a dependency in your pubspec.yaml file.
|
||||||
|
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
See [Example Code](example/lib/main.dart) for more info.
|
See [Example Code](example/lib/main.dart) for more info.
|
||||||
|
|
||||||
### Issues & Feedback
|
## Issues
|
||||||
|
|
||||||
Please file an [issue](https://github.com/Iconica-Development/timetable/issues) to send feedback or report a bug,
|
Please file any issues, bugs or feature request as an issue on our [GitHub](https://github.com/Iconica-Development/flutter_date_time_picker/pulls) page. Commercial support is available if you need help with integration with your app or services. You can contact us at [support@iconica.nl](mailto:support@iconica.nl).
|
||||||
If you want to ask a question or suggest an idea then you can [open an discussion](https://github.com/Iconica-Development/timetable/discussions).
|
|
||||||
Thank you!
|
|
||||||
|
|
||||||
### Contributing
|
## Want to contribute
|
||||||
|
|
||||||
Every pull request is welcome.
|
If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug or adding a cool new feature), please carefully review our [contribution guide](../CONTRIBUTING.md) and send us your [pull request](https://github.com/Iconica-Development/flutter_date_time_picker/pulls).
|
||||||
|
|
||||||
|
## Author
|
||||||
|
|
||||||
|
This `timetable` for Flutter is developed by [Iconica](https://iconica.nl). You can contact us at <support@iconica.nl>
|
|
@ -1,214 +1,4 @@
|
||||||
include: package:flutter_lints/flutter.yaml
|
include: package:flutter_lints/flutter.yaml
|
||||||
analyzer:
|
|
||||||
errors:
|
|
||||||
todo: ignore
|
|
||||||
exclude: [lib/generated_plugin_registrant.dart]
|
|
||||||
linter:
|
|
||||||
# https://dart.dev/tools/linter-rules#lints
|
|
||||||
rules:
|
|
||||||
# error rules
|
|
||||||
always_use_package_imports: false
|
|
||||||
avoid_dynamic_calls: true
|
|
||||||
avoid_empty_else: true
|
|
||||||
avoid_print: true
|
|
||||||
avoid_relative_lib_imports: true
|
|
||||||
avoid_returning_null_for_future: true
|
|
||||||
avoid_slow_async_io: true
|
|
||||||
avoid_type_to_string: true
|
|
||||||
avoid_types_as_parameter_names: true
|
|
||||||
avoid_web_libraries_in_flutter: true
|
|
||||||
cancel_subscriptions: true
|
|
||||||
close_sinks: true
|
|
||||||
comment_references: false
|
|
||||||
control_flow_in_finally: true
|
|
||||||
diagnostic_describe_all_properties: false
|
|
||||||
empty_statements: true
|
|
||||||
hash_and_equals: true
|
|
||||||
invariant_booleans: true
|
|
||||||
iterable_contains_unrelated_type: true
|
|
||||||
list_remove_unrelated_type: true
|
|
||||||
literal_only_boolean_expressions: true
|
|
||||||
no_adjacent_strings_in_list: true
|
|
||||||
no_duplicate_case_values: true
|
|
||||||
no_logic_in_create_state: true
|
|
||||||
prefer_relative_imports: false
|
|
||||||
prefer_void_to_null: true
|
|
||||||
test_types_in_equals: true
|
|
||||||
throw_in_finally: true
|
|
||||||
unnecessary_statements: true
|
|
||||||
unrelated_type_equality_checks: true
|
|
||||||
unsafe_html: true
|
|
||||||
use_build_context_synchronously: true
|
|
||||||
use_key_in_widget_constructors: true
|
|
||||||
valid_regexps: true
|
|
||||||
# style rules
|
|
||||||
always_declare_return_types: true
|
|
||||||
always_put_control_body_on_new_line: true
|
|
||||||
always_put_required_named_parameters_first: true
|
|
||||||
always_require_non_null_named_parameters: true
|
|
||||||
always_specify_types: false
|
|
||||||
annotate_overrides: true
|
|
||||||
avoid_annotating_with_dynamic: false
|
|
||||||
avoid_bool_literals_in_conditional_expressions: true
|
|
||||||
avoid_catches_without_on_clauses: false
|
|
||||||
avoid_catching_errors: false
|
|
||||||
avoid_classes_with_only_static_members: true
|
|
||||||
avoid_double_and_int_checks: true
|
|
||||||
avoid_equals_and_hash_code_on_mutable_classes: false
|
|
||||||
avoid_escaping_inner_quotes: false
|
|
||||||
avoid_field_initializers_in_const_classes: true
|
|
||||||
avoid_final_parameters: true
|
|
||||||
avoid_function_literals_in_foreach_calls: true
|
|
||||||
avoid_implementing_value_types: true
|
|
||||||
avoid_init_to_null: true
|
|
||||||
avoid_js_rounded_ints: true
|
|
||||||
avoid_multiple_declarations_per_line: true
|
|
||||||
avoid_null_checks_in_equality_operators: true
|
|
||||||
avoid_positional_boolean_parameters: true
|
|
||||||
avoid_private_typedef_functions: true
|
|
||||||
avoid_redundant_argument_values: false
|
|
||||||
avoid_renaming_method_parameters: true
|
|
||||||
avoid_return_types_on_setters: true
|
|
||||||
avoid_returning_null: true
|
|
||||||
avoid_returning_null_for_void: true
|
|
||||||
avoid_returning_this: true
|
|
||||||
avoid_setters_without_getters: true
|
|
||||||
avoid_shadowing_type_parameters: true
|
|
||||||
avoid_single_cascade_in_expression_statements: true
|
|
||||||
avoid_types_on_closure_parameters: false
|
|
||||||
avoid_unnecessary_containers: false
|
|
||||||
avoid_unused_constructor_parameters: true
|
|
||||||
avoid_void_async: true
|
|
||||||
await_only_futures: true
|
|
||||||
camel_case_extensions: true
|
|
||||||
camel_case_types: true
|
|
||||||
cascade_invocations: true
|
|
||||||
cast_nullable_to_non_nullable: true
|
|
||||||
conditional_uri_does_not_exist: true
|
|
||||||
constant_identifier_names: true
|
|
||||||
curly_braces_in_flow_control_structures: true
|
|
||||||
deprecated_consistency: true
|
|
||||||
directives_ordering: true
|
|
||||||
do_not_use_environment: true
|
|
||||||
empty_catches: true
|
|
||||||
empty_constructor_bodies: true
|
|
||||||
eol_at_end_of_file: true
|
|
||||||
exhaustive_cases: true
|
|
||||||
file_names: true
|
|
||||||
flutter_style_todos: true
|
|
||||||
implementation_imports: true
|
|
||||||
join_return_with_assignment: true
|
|
||||||
leading_newlines_in_multiline_strings: true
|
|
||||||
library_names: true
|
|
||||||
library_prefixes: true
|
|
||||||
library_private_types_in_public_api: true
|
|
||||||
lines_longer_than_80_chars: true
|
|
||||||
missing_whitespace_between_adjacent_strings: true
|
|
||||||
no_default_cases: true
|
|
||||||
no_leading_underscores_for_library_prefixes: true
|
|
||||||
no_leading_underscores_for_local_identifiers: true
|
|
||||||
no_runtimeType_toString: true
|
|
||||||
non_constant_identifier_names: true
|
|
||||||
noop_primitive_operations: true
|
|
||||||
null_check_on_nullable_type_parameter: true
|
|
||||||
null_closures: true
|
|
||||||
omit_local_variable_types: true
|
|
||||||
one_member_abstracts: true
|
|
||||||
only_throw_errors: true
|
|
||||||
overridden_fields: true
|
|
||||||
package_api_docs: true
|
|
||||||
package_prefixed_library_names: true
|
|
||||||
parameter_assignments: true
|
|
||||||
prefer_adjacent_string_concatenation: true
|
|
||||||
prefer_asserts_in_initializer_lists: true
|
|
||||||
prefer_asserts_with_message: true
|
|
||||||
prefer_collection_literals: true
|
|
||||||
prefer_conditional_assignment: true
|
|
||||||
prefer_const_constructors: true
|
|
||||||
prefer_const_constructors_in_immutables: true
|
|
||||||
prefer_const_declarations: false
|
|
||||||
prefer_const_literals_to_create_immutables: false
|
|
||||||
prefer_constructors_over_static_methods: true
|
|
||||||
prefer_contains: true
|
|
||||||
prefer_double_quotes: false
|
|
||||||
prefer_equal_for_default_values: true
|
|
||||||
prefer_expression_function_bodies: false
|
|
||||||
prefer_final_fields: true
|
|
||||||
prefer_final_in_for_each: false
|
|
||||||
prefer_final_locals: false
|
|
||||||
prefer_final_parameters: false
|
|
||||||
prefer_for_elements_to_map_fromIterable: true
|
|
||||||
prefer_foreach: true
|
|
||||||
prefer_function_declarations_over_variables: true
|
|
||||||
prefer_generic_function_type_aliases: true
|
|
||||||
prefer_if_elements_to_conditional_expressions: true
|
|
||||||
prefer_if_null_operators: true
|
|
||||||
prefer_initializing_formals: true
|
|
||||||
prefer_inlined_adds: true
|
|
||||||
prefer_int_literals: false
|
|
||||||
prefer_interpolation_to_compose_strings: true
|
|
||||||
prefer_is_empty: true
|
|
||||||
prefer_is_not_empty: true
|
|
||||||
prefer_is_not_operator: true
|
|
||||||
prefer_iterable_whereType: true
|
|
||||||
prefer_mixin: true
|
|
||||||
prefer_null_aware_method_calls: true
|
|
||||||
prefer_null_aware_operators: true
|
|
||||||
prefer_single_quotes: true
|
|
||||||
prefer_spread_collections: true
|
|
||||||
prefer_typing_uninitialized_variables: true
|
|
||||||
provide_deprecation_message: true
|
|
||||||
public_member_api_docs: false
|
|
||||||
recursive_getters: true
|
|
||||||
require_trailing_commas: true
|
|
||||||
sized_box_for_whitespace: true
|
|
||||||
sized_box_shrink_expand: true
|
|
||||||
slash_for_doc_comments: true
|
|
||||||
sort_child_properties_last: true
|
|
||||||
sort_constructors_first: true
|
|
||||||
sort_unnamed_constructors_first: true
|
|
||||||
tighten_type_of_initializing_formals: true
|
|
||||||
type_annotate_public_apis: true
|
|
||||||
type_init_formals: true
|
|
||||||
unawaited_futures: true
|
|
||||||
unnecessary_await_in_return: true
|
|
||||||
unnecessary_brace_in_string_interps: true
|
|
||||||
unnecessary_const: false
|
|
||||||
unnecessary_constructor_name: true
|
|
||||||
unnecessary_final: true
|
|
||||||
unnecessary_getters_setters: true
|
|
||||||
unnecessary_lambdas: true
|
|
||||||
unnecessary_late: true
|
|
||||||
unnecessary_new: true
|
|
||||||
unnecessary_null_aware_assignments: true
|
|
||||||
unnecessary_null_checks: true
|
|
||||||
unnecessary_null_in_if_null_operators: true
|
|
||||||
unnecessary_nullable_for_final_variable_declarations: true
|
|
||||||
unnecessary_overrides: true
|
|
||||||
unnecessary_parenthesis: true
|
|
||||||
unnecessary_raw_strings: true
|
|
||||||
unnecessary_string_escapes: true
|
|
||||||
unnecessary_string_interpolations: true
|
|
||||||
unnecessary_this: true
|
|
||||||
use_decorated_box: true
|
|
||||||
use_full_hex_values_for_flutter_colors: true
|
|
||||||
use_function_type_syntax_for_parameters: true
|
|
||||||
use_if_null_to_convert_nulls_to_bools: true
|
|
||||||
use_is_even_rather_than_modulo: true
|
|
||||||
use_late_for_private_fields_and_variables: true
|
|
||||||
use_named_constants: true
|
|
||||||
use_raw_strings: false
|
|
||||||
use_rethrow_when_possible: true
|
|
||||||
use_setters_to_change_properties: true
|
|
||||||
use_string_buffers: true
|
|
||||||
use_test_throws_matchers: true
|
|
||||||
use_to_and_as_if_applicable: true
|
|
||||||
void_checks: true
|
|
||||||
# pub rules
|
|
||||||
depend_on_referenced_packages: true
|
|
||||||
lowercase_with_underscores: true
|
|
||||||
secure_pubspec_urls: false
|
|
||||||
sort_pub_dependencies: false
|
|
||||||
|
|
||||||
# Additional information about this file can be found at
|
# Additional information about this file can be found at
|
||||||
# https://dart.dev/guides/language/analysis-options
|
# https://dart.dev/guides/language/analysis-options
|
|
@ -15,24 +15,9 @@ migration:
|
||||||
- platform: root
|
- platform: root
|
||||||
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
||||||
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
||||||
- platform: android
|
|
||||||
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
- platform: ios
|
- platform: ios
|
||||||
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
||||||
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
||||||
- platform: linux
|
|
||||||
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
- platform: macos
|
|
||||||
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
- platform: web
|
|
||||||
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
- platform: windows
|
|
||||||
create_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
base_revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
|
|
||||||
|
|
||||||
# User provided section
|
# User provided section
|
||||||
|
|
||||||
|
|
|
@ -1,214 +1,4 @@
|
||||||
include: package:flutter_lints/flutter.yaml
|
include: package:flutter_lints/flutter.yaml
|
||||||
analyzer:
|
|
||||||
errors:
|
|
||||||
todo: ignore
|
|
||||||
exclude: [lib/generated_plugin_registrant.dart]
|
|
||||||
linter:
|
|
||||||
# https://dart.dev/tools/linter-rules#lints
|
|
||||||
rules:
|
|
||||||
# error rules
|
|
||||||
always_use_package_imports: false
|
|
||||||
avoid_dynamic_calls: true
|
|
||||||
avoid_empty_else: true
|
|
||||||
avoid_print: true
|
|
||||||
avoid_relative_lib_imports: true
|
|
||||||
avoid_returning_null_for_future: true
|
|
||||||
avoid_slow_async_io: true
|
|
||||||
avoid_type_to_string: true
|
|
||||||
avoid_types_as_parameter_names: true
|
|
||||||
avoid_web_libraries_in_flutter: true
|
|
||||||
cancel_subscriptions: true
|
|
||||||
close_sinks: true
|
|
||||||
comment_references: false
|
|
||||||
control_flow_in_finally: true
|
|
||||||
diagnostic_describe_all_properties: false
|
|
||||||
empty_statements: true
|
|
||||||
hash_and_equals: true
|
|
||||||
invariant_booleans: true
|
|
||||||
iterable_contains_unrelated_type: true
|
|
||||||
list_remove_unrelated_type: true
|
|
||||||
literal_only_boolean_expressions: true
|
|
||||||
no_adjacent_strings_in_list: true
|
|
||||||
no_duplicate_case_values: true
|
|
||||||
no_logic_in_create_state: true
|
|
||||||
prefer_relative_imports: false
|
|
||||||
prefer_void_to_null: true
|
|
||||||
test_types_in_equals: true
|
|
||||||
throw_in_finally: true
|
|
||||||
unnecessary_statements: true
|
|
||||||
unrelated_type_equality_checks: true
|
|
||||||
unsafe_html: true
|
|
||||||
use_build_context_synchronously: true
|
|
||||||
use_key_in_widget_constructors: true
|
|
||||||
valid_regexps: true
|
|
||||||
# style rules
|
|
||||||
always_declare_return_types: true
|
|
||||||
always_put_control_body_on_new_line: true
|
|
||||||
always_put_required_named_parameters_first: true
|
|
||||||
always_require_non_null_named_parameters: true
|
|
||||||
always_specify_types: false
|
|
||||||
annotate_overrides: true
|
|
||||||
avoid_annotating_with_dynamic: false
|
|
||||||
avoid_bool_literals_in_conditional_expressions: true
|
|
||||||
avoid_catches_without_on_clauses: false
|
|
||||||
avoid_catching_errors: false
|
|
||||||
avoid_classes_with_only_static_members: true
|
|
||||||
avoid_double_and_int_checks: true
|
|
||||||
avoid_equals_and_hash_code_on_mutable_classes: false
|
|
||||||
avoid_escaping_inner_quotes: false
|
|
||||||
avoid_field_initializers_in_const_classes: true
|
|
||||||
avoid_final_parameters: true
|
|
||||||
avoid_function_literals_in_foreach_calls: true
|
|
||||||
avoid_implementing_value_types: true
|
|
||||||
avoid_init_to_null: true
|
|
||||||
avoid_js_rounded_ints: true
|
|
||||||
avoid_multiple_declarations_per_line: true
|
|
||||||
avoid_null_checks_in_equality_operators: true
|
|
||||||
avoid_positional_boolean_parameters: true
|
|
||||||
avoid_private_typedef_functions: true
|
|
||||||
avoid_redundant_argument_values: false
|
|
||||||
avoid_renaming_method_parameters: true
|
|
||||||
avoid_return_types_on_setters: true
|
|
||||||
avoid_returning_null: true
|
|
||||||
avoid_returning_null_for_void: true
|
|
||||||
avoid_returning_this: true
|
|
||||||
avoid_setters_without_getters: true
|
|
||||||
avoid_shadowing_type_parameters: true
|
|
||||||
avoid_single_cascade_in_expression_statements: true
|
|
||||||
avoid_types_on_closure_parameters: false
|
|
||||||
avoid_unnecessary_containers: false
|
|
||||||
avoid_unused_constructor_parameters: true
|
|
||||||
avoid_void_async: true
|
|
||||||
await_only_futures: true
|
|
||||||
camel_case_extensions: true
|
|
||||||
camel_case_types: true
|
|
||||||
cascade_invocations: true
|
|
||||||
cast_nullable_to_non_nullable: true
|
|
||||||
conditional_uri_does_not_exist: true
|
|
||||||
constant_identifier_names: true
|
|
||||||
curly_braces_in_flow_control_structures: true
|
|
||||||
deprecated_consistency: true
|
|
||||||
directives_ordering: true
|
|
||||||
do_not_use_environment: true
|
|
||||||
empty_catches: true
|
|
||||||
empty_constructor_bodies: true
|
|
||||||
eol_at_end_of_file: true
|
|
||||||
exhaustive_cases: true
|
|
||||||
file_names: true
|
|
||||||
flutter_style_todos: true
|
|
||||||
implementation_imports: true
|
|
||||||
join_return_with_assignment: true
|
|
||||||
leading_newlines_in_multiline_strings: true
|
|
||||||
library_names: true
|
|
||||||
library_prefixes: true
|
|
||||||
library_private_types_in_public_api: true
|
|
||||||
lines_longer_than_80_chars: true
|
|
||||||
missing_whitespace_between_adjacent_strings: true
|
|
||||||
no_default_cases: true
|
|
||||||
no_leading_underscores_for_library_prefixes: true
|
|
||||||
no_leading_underscores_for_local_identifiers: true
|
|
||||||
no_runtimeType_toString: true
|
|
||||||
non_constant_identifier_names: true
|
|
||||||
noop_primitive_operations: true
|
|
||||||
null_check_on_nullable_type_parameter: true
|
|
||||||
null_closures: true
|
|
||||||
omit_local_variable_types: true
|
|
||||||
one_member_abstracts: true
|
|
||||||
only_throw_errors: true
|
|
||||||
overridden_fields: true
|
|
||||||
package_api_docs: true
|
|
||||||
package_prefixed_library_names: true
|
|
||||||
parameter_assignments: true
|
|
||||||
prefer_adjacent_string_concatenation: true
|
|
||||||
prefer_asserts_in_initializer_lists: true
|
|
||||||
prefer_asserts_with_message: true
|
|
||||||
prefer_collection_literals: true
|
|
||||||
prefer_conditional_assignment: true
|
|
||||||
prefer_const_constructors: true
|
|
||||||
prefer_const_constructors_in_immutables: true
|
|
||||||
prefer_const_declarations: false
|
|
||||||
prefer_const_literals_to_create_immutables: false
|
|
||||||
prefer_constructors_over_static_methods: true
|
|
||||||
prefer_contains: true
|
|
||||||
prefer_double_quotes: false
|
|
||||||
prefer_equal_for_default_values: true
|
|
||||||
prefer_expression_function_bodies: false
|
|
||||||
prefer_final_fields: true
|
|
||||||
prefer_final_in_for_each: false
|
|
||||||
prefer_final_locals: false
|
|
||||||
prefer_final_parameters: false
|
|
||||||
prefer_for_elements_to_map_fromIterable: true
|
|
||||||
prefer_foreach: true
|
|
||||||
prefer_function_declarations_over_variables: true
|
|
||||||
prefer_generic_function_type_aliases: true
|
|
||||||
prefer_if_elements_to_conditional_expressions: true
|
|
||||||
prefer_if_null_operators: true
|
|
||||||
prefer_initializing_formals: true
|
|
||||||
prefer_inlined_adds: true
|
|
||||||
prefer_int_literals: false
|
|
||||||
prefer_interpolation_to_compose_strings: true
|
|
||||||
prefer_is_empty: true
|
|
||||||
prefer_is_not_empty: true
|
|
||||||
prefer_is_not_operator: true
|
|
||||||
prefer_iterable_whereType: true
|
|
||||||
prefer_mixin: true
|
|
||||||
prefer_null_aware_method_calls: true
|
|
||||||
prefer_null_aware_operators: true
|
|
||||||
prefer_single_quotes: true
|
|
||||||
prefer_spread_collections: true
|
|
||||||
prefer_typing_uninitialized_variables: true
|
|
||||||
provide_deprecation_message: true
|
|
||||||
public_member_api_docs: false
|
|
||||||
recursive_getters: true
|
|
||||||
require_trailing_commas: true
|
|
||||||
sized_box_for_whitespace: true
|
|
||||||
sized_box_shrink_expand: true
|
|
||||||
slash_for_doc_comments: true
|
|
||||||
sort_child_properties_last: true
|
|
||||||
sort_constructors_first: true
|
|
||||||
sort_unnamed_constructors_first: true
|
|
||||||
tighten_type_of_initializing_formals: true
|
|
||||||
type_annotate_public_apis: true
|
|
||||||
type_init_formals: true
|
|
||||||
unawaited_futures: true
|
|
||||||
unnecessary_await_in_return: true
|
|
||||||
unnecessary_brace_in_string_interps: true
|
|
||||||
unnecessary_const: false
|
|
||||||
unnecessary_constructor_name: true
|
|
||||||
unnecessary_final: true
|
|
||||||
unnecessary_getters_setters: true
|
|
||||||
unnecessary_lambdas: true
|
|
||||||
unnecessary_late: true
|
|
||||||
unnecessary_new: true
|
|
||||||
unnecessary_null_aware_assignments: true
|
|
||||||
unnecessary_null_checks: true
|
|
||||||
unnecessary_null_in_if_null_operators: true
|
|
||||||
unnecessary_nullable_for_final_variable_declarations: true
|
|
||||||
unnecessary_overrides: true
|
|
||||||
unnecessary_parenthesis: true
|
|
||||||
unnecessary_raw_strings: true
|
|
||||||
unnecessary_string_escapes: true
|
|
||||||
unnecessary_string_interpolations: true
|
|
||||||
unnecessary_this: true
|
|
||||||
use_decorated_box: true
|
|
||||||
use_full_hex_values_for_flutter_colors: true
|
|
||||||
use_function_type_syntax_for_parameters: true
|
|
||||||
use_if_null_to_convert_nulls_to_bools: true
|
|
||||||
use_is_even_rather_than_modulo: true
|
|
||||||
use_late_for_private_fields_and_variables: true
|
|
||||||
use_named_constants: true
|
|
||||||
use_raw_strings: false
|
|
||||||
use_rethrow_when_possible: true
|
|
||||||
use_setters_to_change_properties: true
|
|
||||||
use_string_buffers: true
|
|
||||||
use_test_throws_matchers: true
|
|
||||||
use_to_and_as_if_applicable: true
|
|
||||||
void_checks: true
|
|
||||||
# pub rules
|
|
||||||
depend_on_referenced_packages: true
|
|
||||||
lowercase_with_underscores: true
|
|
||||||
secure_pubspec_urls: false
|
|
||||||
sort_pub_dependencies: false
|
|
||||||
|
|
||||||
# Additional information about this file can be found at
|
# Additional information about this file can be found at
|
||||||
# https://dart.dev/guides/language/analysis-options
|
# https://dart.dev/guides/language/analysis-options
|
|
@ -21,95 +21,82 @@ class _TimetableDemoState extends State<TimetableDemo> {
|
||||||
bool _horizontal = true;
|
bool _horizontal = true;
|
||||||
final ScrollController _scrollController = ScrollController();
|
final ScrollController _scrollController = ScrollController();
|
||||||
final List<TimeBlock> blocks = [
|
final List<TimeBlock> blocks = [
|
||||||
TimeBlock(
|
|
||||||
start: const TimeOfDay(hour: 14, minute: 0),
|
|
||||||
end: const TimeOfDay(hour: 15, minute: 0),
|
|
||||||
id: 0,
|
|
||||||
),
|
|
||||||
TimeBlock(
|
TimeBlock(
|
||||||
start: const TimeOfDay(hour: 8, minute: 0),
|
start: const TimeOfDay(hour: 8, minute: 0),
|
||||||
end: const TimeOfDay(hour: 9, minute: 0),
|
end: const TimeOfDay(hour: 9, minute: 0),
|
||||||
|
child: Container(
|
||||||
|
color: Colors.red,
|
||||||
|
child: const Padding(
|
||||||
|
padding: const EdgeInsets.all(8.0),
|
||||||
|
child: const Text(
|
||||||
|
'Exercise',
|
||||||
|
style: TextStyle(color: Colors.white),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
id: 1,
|
id: 1,
|
||||||
),
|
),
|
||||||
TimeBlock(
|
TimeBlock(
|
||||||
start: const TimeOfDay(hour: 9, minute: 15),
|
start: const TimeOfDay(hour: 10, minute: 0),
|
||||||
end: const TimeOfDay(hour: 10, minute: 0),
|
end: const TimeOfDay(hour: 12, minute: 0),
|
||||||
id: 1,
|
child: Container(
|
||||||
),
|
color: Colors.orange,
|
||||||
TimeBlock(
|
child: const Padding(
|
||||||
start: const TimeOfDay(hour: 10, minute: 15),
|
padding: const EdgeInsets.all(8.0),
|
||||||
end: const TimeOfDay(hour: 11, minute: 0),
|
child: const Text(
|
||||||
child: Container(color: Colors.purple, height: 300, width: 50),
|
'Brunch',
|
||||||
|
style: TextStyle(color: Colors.white),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
childDimension: 300,
|
childDimension: 300,
|
||||||
id: 2,
|
id: 3,
|
||||||
),
|
),
|
||||||
TimeBlock(
|
TimeBlock(
|
||||||
start: const TimeOfDay(hour: 6, minute: 15),
|
start: const TimeOfDay(hour: 14, minute: 0),
|
||||||
end: const TimeOfDay(hour: 7, minute: 0),
|
end: const TimeOfDay(hour: 15, minute: 0),
|
||||||
child: Container(color: Colors.blue, height: 300, width: 300),
|
id: 100,
|
||||||
childDimension: 300,
|
child: const SizedBox(
|
||||||
id: 2,
|
height: 300,
|
||||||
),
|
child: Text(
|
||||||
|
'Clean Living Room',
|
||||||
|
style: TextStyle(color: Colors.white),
|
||||||
|
),
|
||||||
|
)),
|
||||||
TimeBlock(
|
TimeBlock(
|
||||||
start: const TimeOfDay(hour: 18, minute: 0),
|
start: const TimeOfDay(hour: 14, minute: 0),
|
||||||
end: const TimeOfDay(hour: 18, minute: 30),
|
end: const TimeOfDay(hour: 15, minute: 0),
|
||||||
child:
|
id: 101,
|
||||||
const SizedBox(width: 60, height: 60, child: const Text('High Tea')),
|
child: const SizedBox(
|
||||||
childDimension: 60,
|
height: 200,
|
||||||
id: 10,
|
child: Text(
|
||||||
),
|
'Clean Kitchen',
|
||||||
TimeBlock(
|
style: TextStyle(color: Colors.white),
|
||||||
start: const TimeOfDay(hour: 18, minute: 0),
|
),
|
||||||
end: const TimeOfDay(hour: 18, minute: 30),
|
)),
|
||||||
child: const SizedBox(
|
|
||||||
height: 60,
|
|
||||||
width: 60,
|
|
||||||
child: const Text('High Tea'),
|
|
||||||
),
|
|
||||||
childDimension: 60,
|
|
||||||
id: 10,
|
|
||||||
),
|
|
||||||
TimeBlock(
|
|
||||||
start: const TimeOfDay(hour: 18, minute: 0),
|
|
||||||
end: const TimeOfDay(hour: 18, minute: 30),
|
|
||||||
child: const SizedBox(
|
|
||||||
height: 60,
|
|
||||||
width: 60,
|
|
||||||
child: const Text('High Tea'),
|
|
||||||
),
|
|
||||||
childDimension: 60,
|
|
||||||
id: 10,
|
|
||||||
),
|
|
||||||
TimeBlock(
|
|
||||||
start: const TimeOfDay(hour: 18, minute: 0),
|
|
||||||
end: const TimeOfDay(hour: 18, minute: 30),
|
|
||||||
child: const SizedBox(
|
|
||||||
height: 50,
|
|
||||||
width: 50,
|
|
||||||
child: const Text('High Tea'),
|
|
||||||
),
|
|
||||||
childDimension: 60,
|
|
||||||
id: 0,
|
|
||||||
),
|
|
||||||
TimeBlock(
|
|
||||||
start: const TimeOfDay(hour: 14, minute: 0),
|
|
||||||
end: const TimeOfDay(hour: 15, minute: 0),
|
|
||||||
id: 100,
|
|
||||||
),
|
|
||||||
TimeBlock(
|
|
||||||
start: const TimeOfDay(hour: 14, minute: 0),
|
|
||||||
end: const TimeOfDay(hour: 15, minute: 0),
|
|
||||||
id: 101,
|
|
||||||
),
|
|
||||||
TimeBlock(
|
TimeBlock(
|
||||||
start: const TimeOfDay(hour: 14, minute: 0),
|
start: const TimeOfDay(hour: 14, minute: 0),
|
||||||
end: const TimeOfDay(hour: 15, minute: 0),
|
end: const TimeOfDay(hour: 15, minute: 0),
|
||||||
id: 102,
|
id: 102,
|
||||||
|
child: const SizedBox(
|
||||||
|
height: 100,
|
||||||
|
child: Text(
|
||||||
|
'Clean Bathroom',
|
||||||
|
style: TextStyle(color: Colors.white),
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
TimeBlock(
|
TimeBlock(
|
||||||
start: const TimeOfDay(hour: 14, minute: 0),
|
start: const TimeOfDay(hour: 14, minute: 0),
|
||||||
end: const TimeOfDay(hour: 15, minute: 0),
|
end: const TimeOfDay(hour: 15, minute: 0),
|
||||||
id: 103,
|
id: 103,
|
||||||
|
child: const SizedBox(
|
||||||
|
height: 50,
|
||||||
|
child: Text(
|
||||||
|
'Clean Toilet',
|
||||||
|
style: TextStyle(color: Colors.white),
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -123,29 +110,28 @@ class _TimetableDemoState extends State<TimetableDemo> {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var size = MediaQuery.of(context).size;
|
var size = MediaQuery.of(context).size;
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
title: const Text('Timetable Demo'),
|
||||||
|
),
|
||||||
// backgroundColor: Colors.green,
|
// backgroundColor: Colors.green,
|
||||||
body: Padding(
|
body: Column(
|
||||||
padding: EdgeInsets.only(top: MediaQuery.of(context).padding.top),
|
children: [
|
||||||
child: Column(
|
Padding(
|
||||||
children: [
|
padding: const EdgeInsets.all(8.0),
|
||||||
// toggle between horizontal and vertical
|
child: Row(
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
TextButton(
|
|
||||||
onPressed: () {
|
|
||||||
setState(() {
|
|
||||||
_horizontal = !_horizontal;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
child: Text(_horizontal ? 'Horizontal' : 'Vertical'),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
// toggle between grouped and ungrouped blocks
|
|
||||||
Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
|
// toggle between horizontal and vertical
|
||||||
|
const Text('Axis horizontal'),
|
||||||
|
Switch(
|
||||||
|
value: _horizontal,
|
||||||
|
onChanged: (value) {
|
||||||
|
setState(() {
|
||||||
|
_horizontal = value;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
// toggle between grouped and ungrouped blocks
|
||||||
const Text('Grouped'),
|
const Text('Grouped'),
|
||||||
Switch(
|
Switch(
|
||||||
value: _grouped,
|
value: _grouped,
|
||||||
|
@ -157,25 +143,25 @@ class _TimetableDemoState extends State<TimetableDemo> {
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
Container(
|
),
|
||||||
color: Colors.white,
|
Container(
|
||||||
child: Timetable(
|
color: Colors.white,
|
||||||
size: Size(size.width, size.height * 0.64),
|
child: Timetable(
|
||||||
tableDirection: _horizontal ? Axis.horizontal : Axis.vertical,
|
size: Size(size.width, size.height * 0.64),
|
||||||
startHour: 3,
|
tableDirection: _horizontal ? Axis.horizontal : Axis.vertical,
|
||||||
endHour: 24,
|
startHour: 3,
|
||||||
timeBlocks: blocks,
|
endHour: 24,
|
||||||
scrollController: _scrollController,
|
timeBlocks: blocks,
|
||||||
combineBlocks: true,
|
scrollController: _scrollController,
|
||||||
mergeBlocks: _grouped,
|
combineBlocks: true,
|
||||||
theme: const TableTheme(
|
mergeBlocks: _grouped,
|
||||||
tablePaddingStart: 0,
|
theme: const TableTheme(
|
||||||
blockPaddingBetween: 10,
|
tablePaddingStart: 0,
|
||||||
),
|
blockPaddingBetween: 10,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
),
|
||||||
),
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,49 +5,56 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: async
|
name: async
|
||||||
url: "https://pub.dartlang.org"
|
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.9.0"
|
version: "2.10.0"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: boolean_selector
|
name: boolean_selector
|
||||||
url: "https://pub.dartlang.org"
|
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.1"
|
||||||
characters:
|
characters:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: characters
|
name: characters
|
||||||
url: "https://pub.dartlang.org"
|
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.2.1"
|
||||||
clock:
|
clock:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: clock
|
name: clock
|
||||||
url: "https://pub.dartlang.org"
|
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.1.1"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
url: "https://pub.dartlang.org"
|
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.16.0"
|
version: "1.17.0"
|
||||||
cupertino_icons:
|
cupertino_icons:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: cupertino_icons
|
name: cupertino_icons
|
||||||
url: "https://pub.dartlang.org"
|
sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.5"
|
version: "1.0.5"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: fake_async
|
name: fake_async
|
||||||
url: "https://pub.dartlang.org"
|
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.3.1"
|
version: "1.3.1"
|
||||||
flutter:
|
flutter:
|
||||||
|
@ -59,7 +66,8 @@ packages:
|
||||||
dependency: "direct dev"
|
dependency: "direct dev"
|
||||||
description:
|
description:
|
||||||
name: flutter_lints
|
name: flutter_lints
|
||||||
url: "https://pub.dartlang.org"
|
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.1"
|
version: "2.0.1"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
@ -67,39 +75,52 @@ packages:
|
||||||
description: flutter
|
description: flutter
|
||||||
source: sdk
|
source: sdk
|
||||||
version: "0.0.0"
|
version: "0.0.0"
|
||||||
|
js:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: js
|
||||||
|
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.6.5"
|
||||||
lints:
|
lints:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: lints
|
name: lints
|
||||||
url: "https://pub.dartlang.org"
|
sha256: "5cfd6509652ff5e7fe149b6df4859e687fca9048437857cb2e65c8d780f396e3"
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "2.0.0"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
url: "https://pub.dartlang.org"
|
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.12"
|
version: "0.12.13"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
url: "https://pub.dartlang.org"
|
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.5"
|
version: "0.2.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
url: "https://pub.dartlang.org"
|
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.0"
|
version: "1.8.0"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
url: "https://pub.dartlang.org"
|
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.8.2"
|
version: "1.8.2"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
|
@ -111,58 +132,65 @@ packages:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: source_span
|
name: source_span
|
||||||
url: "https://pub.dartlang.org"
|
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.0"
|
version: "1.9.1"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
url: "https://pub.dartlang.org"
|
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.10.0"
|
version: "1.11.0"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stream_channel
|
name: stream_channel
|
||||||
url: "https://pub.dartlang.org"
|
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.1"
|
||||||
string_scanner:
|
string_scanner:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
url: "https://pub.dartlang.org"
|
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.1"
|
version: "1.2.0"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
url: "https://pub.dartlang.org"
|
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.1"
|
version: "1.2.1"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
url: "https://pub.dartlang.org"
|
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.12"
|
version: "0.4.16"
|
||||||
timetable:
|
timetable:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
path: ".."
|
path: ".."
|
||||||
relative: true
|
relative: true
|
||||||
source: path
|
source: path
|
||||||
version: "0.0.2"
|
version: "1.0.0"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_math
|
name: vector_math
|
||||||
url: "https://pub.dartlang.org"
|
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
||||||
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.2"
|
version: "2.1.4"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.17.6 <3.0.0"
|
dart: ">=2.18.0 <3.0.0"
|
||||||
flutter: ">=1.17.0"
|
flutter: ">=1.17.0"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
// import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
void main() {
|
// void main() {
|
||||||
test('', () {
|
// test('', () {
|
||||||
expect(true, isTrue);
|
// expect(true, isTrue);
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
BIN
flutter_timetable.gif
Normal file
BIN
flutter_timetable.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 7 MiB |
|
@ -27,7 +27,7 @@ class Timetable extends StatefulWidget {
|
||||||
this.startHour = 0,
|
this.startHour = 0,
|
||||||
this.endHour = 24,
|
this.endHour = 24,
|
||||||
this.blockDimension = 50,
|
this.blockDimension = 50,
|
||||||
this.blockColor = const Color(0x80FF0000),
|
this.blockColor = Colors.blue,
|
||||||
this.hourDimension = 80,
|
this.hourDimension = 80,
|
||||||
this.theme = const TableTheme(),
|
this.theme = const TableTheme(),
|
||||||
this.mergeBlocks = false,
|
this.mergeBlocks = false,
|
||||||
|
@ -275,7 +275,7 @@ class _TimetableState extends State<Timetable> {
|
||||||
return (TextPainter(
|
return (TextPainter(
|
||||||
text: TextSpan(
|
text: TextSpan(
|
||||||
text: '22:22',
|
text: '22:22',
|
||||||
style: widget.theme.timeStyle ?? Theme.of(context).textTheme.bodyText1,
|
style: widget.theme.timeStyle ?? Theme.of(context).textTheme.bodyLarge,
|
||||||
),
|
),
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
textScaleFactor: MediaQuery.of(context).textScaleFactor,
|
textScaleFactor: MediaQuery.of(context).textScaleFactor,
|
||||||
|
|
|
@ -13,7 +13,7 @@ class Block extends StatelessWidget {
|
||||||
required this.blockDimension,
|
required this.blockDimension,
|
||||||
required this.hourDimension,
|
required this.hourDimension,
|
||||||
required this.blockDirection,
|
required this.blockDirection,
|
||||||
this.blockColor = const Color(0x80FF0000),
|
this.blockColor = Colors.blue,
|
||||||
this.linePadding = 8,
|
this.linePadding = 8,
|
||||||
this.child,
|
this.child,
|
||||||
Key? key,
|
Key? key,
|
||||||
|
@ -49,6 +49,7 @@ class Block extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Container(
|
return Container(
|
||||||
|
color: blockColor,
|
||||||
margin: EdgeInsets.only(
|
margin: EdgeInsets.only(
|
||||||
top: (blockDirection == Axis.vertical)
|
top: (blockDirection == Axis.vertical)
|
||||||
? (((start.hour - startHour) * Duration.minutesPerHour) +
|
? (((start.hour - startHour) * Duration.minutesPerHour) +
|
||||||
|
@ -76,10 +77,9 @@ class Block extends StatelessWidget {
|
||||||
_sizePerMinute()
|
_sizePerMinute()
|
||||||
: null,
|
: null,
|
||||||
child: child ??
|
child: child ??
|
||||||
Container(
|
SizedBox(
|
||||||
height: (blockDirection == Axis.horizontal) ? blockDimension : 0,
|
height: (blockDirection == Axis.horizontal) ? blockDimension : 0,
|
||||||
width: (blockDirection == Axis.vertical) ? blockDimension : 0,
|
width: (blockDirection == Axis.vertical) ? blockDimension : 0,
|
||||||
color: blockColor,
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,7 @@ class Table extends StatelessWidget {
|
||||||
'${((i == 24) ? '00' : i.toString()).padLeft(2, '0')}'
|
'${((i == 24) ? '00' : i.toString()).padLeft(2, '0')}'
|
||||||
':00',
|
':00',
|
||||||
style: theme.timeStyle ??
|
style: theme.timeStyle ??
|
||||||
Theme.of(context).textTheme.bodyText1,
|
Theme.of(context).textTheme.bodyLarge,
|
||||||
),
|
),
|
||||||
SizedBox(height: theme.tableTextOffset),
|
SizedBox(height: theme.tableTextOffset),
|
||||||
Container(
|
Container(
|
||||||
|
@ -126,7 +126,7 @@ class Table extends StatelessWidget {
|
||||||
Text(
|
Text(
|
||||||
'${i.toString().padLeft(2, '0')}:00',
|
'${i.toString().padLeft(2, '0')}:00',
|
||||||
style: theme.timeStyle ??
|
style: theme.timeStyle ??
|
||||||
Theme.of(context).textTheme.bodyText1,
|
Theme.of(context).textTheme.bodyLarge,
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: theme.tableTextOffset,
|
width: theme.tableTextOffset,
|
||||||
|
@ -183,7 +183,7 @@ class Table extends StatelessWidget {
|
||||||
var textPainter = TextPainter(
|
var textPainter = TextPainter(
|
||||||
text: TextSpan(
|
text: TextSpan(
|
||||||
text: text,
|
text: text,
|
||||||
style: theme.timeStyle ?? Theme.of(context).textTheme.bodyText1,
|
style: theme.timeStyle ?? Theme.of(context).textTheme.bodyLarge,
|
||||||
),
|
),
|
||||||
textDirection: TextDirection.ltr,
|
textDirection: TextDirection.ltr,
|
||||||
)..layout();
|
)..layout();
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
name: timetable
|
name: timetable
|
||||||
description: Flutter package to create a Timetable Widget that display blocks of widgets inside a timetable.
|
description: Flutter package to create a Timetable Widget that display blocks of widgets inside a timetable.
|
||||||
version: 0.0.2
|
version: 1.0.0
|
||||||
repository: https://github.com/Iconica-Development/timetable
|
repository: https://github.com/Iconica-Development/timetable
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.17.6 <3.0.0"
|
sdk: ">=2.18.0 <3.0.0"
|
||||||
flutter: ">=1.17.0"
|
flutter: ">=1.17.0"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
Loading…
Reference in a new issue