feat: create melos package for flutter_timetable

This commit is contained in:
Freek van de Ven 2023-12-02 09:36:46 +01:00
parent 93b25c7db6
commit 651ed33cfc
26 changed files with 159 additions and 41 deletions

23
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,23 @@
version: 2
updates:
# - package-ecosystem: "pub"
# directory: "/packages/flutter_timetable"
# schedule:
# interval: "weekly"
- package-ecosystem: "pub"
directory: "/packages/flutter_timetable_interface"
schedule:
interval: "weekly"
- package-ecosystem: "pub"
directory: "/packages/flutter_timetable_firebase"
schedule:
interval: "weekly"
- package-ecosystem: "pub"
directory: "/packages/flutter_timetable_view"
schedule:
interval: "weekly"

View file

@ -1,4 +1,4 @@
name: Iconica Standard Component CI Workflow name: Iconica Standard Melos CI Workflow
# Workflow Caller version: 1.0.0 # Workflow Caller version: 1.0.0
on: on:
@ -7,6 +7,8 @@ on:
jobs: jobs:
call-global-iconica-workflow: call-global-iconica-workflow:
uses: Iconica-Development/.github/.github/workflows/component-ci.yml@master uses: Iconica-Development/.github/.github/workflows/melos-ci.yml@master
secrets: inherit secrets: inherit
permissions: write-all permissions: write-all
with:
subfolder: '.' # add optional subfolder to run workflow in

16
.gitignore vendored
View file

@ -23,16 +23,18 @@ migrate_working_dir/
# Flutter/Dart/Pub related # Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
/pubspec.lock pubspec.lock
**/doc/api/ **/doc/api/
.dart_tool/ .dart_tool/
.packages .packages
build/ build/
.metadata .metadata
example/android/ android/
example/ios/ ios/
example/web/ web/
example/linux/ linux/
example/macos/ macos/
example/windows/ windows/
pubspec_overrides.yaml

View file

@ -29,4 +29,8 @@
## [1.4.0] - 13 November 2023 ## [1.4.0] - 13 November 2023
* Add the option for sorting the blocks by their id. * Add the option for sorting the blocks by their id.
## [2.0.0] - 03 December 2023
* Create Melos variant of the component where there are multiple packages in the same repository.

View file

@ -1,4 +1,4 @@
Copyright (c) 2022 Iconica, All rights reserved. Copyright (c) 2023 Iconica, All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

38
melos.yaml Normal file
View file

@ -0,0 +1,38 @@
name: flutter_timetable
packages:
- packages/**
command:
version:
branch: master
scripts:
lint:all:
run: dart run melos run analyze && dart run melos run format-check
description: Run all static analysis checks.
get:
run: |
melos exec -c 1 -- "flutter pub get"
melos exec --scope="*example*" -c 1 -- "flutter pub get"
upgrade:
run: melos exec -c 1 -- "flutter pub upgrade"
create:
run: melos exec --scope="*example*" -c 1 -- "flutter create ."
analyze:
run: |
dart run melos exec -c 1 -- \
flutter analyze --fatal-infos
description: Run `flutter analyze` for all packages.
format:
run: dart run melos exec dart format .
description: Run `dart format` for all packages.
format-check:
run: dart run melos exec dart format . --set-exit-if-changed
description: Run `dart format` checks for all packages.

View file

@ -0,0 +1,4 @@
include: package:flutter_lints/flutter.yaml
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options

View file

@ -0,0 +1,7 @@
// SPDX-FileCopyrightText: 2023 Iconica
//
// SPDX-License-Identifier: BSD-3-Clause
library flutter_timetable_interface;
export 'src/model/time_block.dart';

View file

@ -0,0 +1,22 @@
# SPDX-FileCopyrightText: 2023 Iconica
#
# SPDX-License-Identifier: GPL-3.0-or-later
name: flutter_timetable_interface
description: A new Flutter package project.
version: 2.0.0
repository: https://github.com/Iconica-Development/flutter_timetable
publish_to: none
environment:
sdk: ">=3.1.0 <4.0.0"
flutter: ">=1.17.0"
dependencies:
flutter:
sdk: flutter
dev_dependencies:
flutter_lints: ^2.0.0
flutter:

View file

@ -3,7 +3,8 @@
// SPDX-License-Identifier: BSD-3-Clause // SPDX-License-Identifier: BSD-3-Clause
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_timetable/timetable.dart'; import 'package:flutter_timetable_interface/flutter_timetable_interface.dart';
import 'package:flutter_timetable_view/flutter_timetable_view.dart';
void main() { void main() {
runApp(const MaterialApp(home: TimetableDemo())); runApp(const MaterialApp(home: TimetableDemo()));

View file

@ -13,8 +13,10 @@ dependencies:
sdk: flutter sdk: flutter
cupertino_icons: ^1.0.2 cupertino_icons: ^1.0.2
flutter_timetable: flutter_timetable_view:
path: ../ path: ../
flutter_timetable_interface:
path: ../../flutter_timetable_interface
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:

View file

@ -5,7 +5,6 @@
library timetable; library timetable;
export 'src/models/table_theme.dart'; export 'src/models/table_theme.dart';
export 'src/models/time_block.dart';
export 'src/timetable.dart'; export 'src/timetable.dart';
export 'src/widgets/block.dart'; export 'src/widgets/block.dart';
export 'src/widgets/table.dart'; export 'src/widgets/table.dart';

View file

@ -3,7 +3,7 @@
// SPDX-License-Identifier: BSD-3-Clause // SPDX-License-Identifier: BSD-3-Clause
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_timetable/src/models/time_block.dart'; import 'package:flutter_timetable_interface/flutter_timetable_interface.dart';
/// Combine blocks that have the same id and the same time. /// Combine blocks that have the same id and the same time.
List<TimeBlock> combineBlocksWithId(List<TimeBlock> blocks) { List<TimeBlock> combineBlocksWithId(List<TimeBlock> blocks) {

View file

@ -6,11 +6,12 @@ import 'dart:math';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart'; import 'package:flutter/scheduler.dart';
import 'package:flutter_timetable/src/block_service.dart'; import 'package:flutter_timetable_interface/flutter_timetable_interface.dart';
import 'package:flutter_timetable/src/models/table_theme.dart'; import 'package:flutter_timetable_view/src/block_service.dart';
import 'package:flutter_timetable/src/models/time_block.dart'; import 'package:flutter_timetable_view/src/models/table_theme.dart';
import 'package:flutter_timetable/src/widgets/block.dart'; import 'package:flutter_timetable_view/src/widgets/block.dart';
import 'package:flutter_timetable/src/widgets/table.dart' as table;
import 'package:flutter_timetable_view/src/widgets/table.dart' as table;
class Timetable extends StatefulWidget { class Timetable extends StatefulWidget {
/// [Timetable] widget that displays a timetable with [TimeBlock]s. /// [Timetable] widget that displays a timetable with [TimeBlock]s.
@ -360,7 +361,7 @@ class _TimetableState extends State<Timetable> {
widget.theme.timeStyle ?? Theme.of(context).textTheme.bodyLarge, widget.theme.timeStyle ?? Theme.of(context).textTheme.bodyLarge,
), ),
maxLines: 1, maxLines: 1,
textScaleFactor: MediaQuery.of(context).textScaleFactor, textScaler: MediaQuery.textScalerOf(context),
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
)..layout()) )..layout())
.size; .size;

View file

@ -3,7 +3,7 @@
// SPDX-License-Identifier: BSD-3-Clause // SPDX-License-Identifier: BSD-3-Clause
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_timetable/src/models/table_theme.dart'; import 'package:flutter_timetable_view/src/models/table_theme.dart';
class Table extends StatelessWidget { class Table extends StatelessWidget {
/// The [Table] to draw an overview of timerange with corresponding hour lines /// The [Table] to draw an overview of timerange with corresponding hour lines

View file

@ -0,0 +1,26 @@
name: flutter_timetable_view
description: Flutter package to create a Timetable Widget that display blocks of widgets inside a timetable.
version: 2.0.0
repository: https://github.com/Iconica-Development/flutter_timetable
publish_to: none
environment:
sdk: ">=3.2.0 <4.0.0"
flutter: ">=1.17.0"
dependencies:
flutter:
sdk: flutter
flutter_timetable_interface:
git:
url: https://github.com/Iconica-Development/flutter_timetable
ref: 2.0.0
path: packages/flutter_timetable_interface
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter:

View file

@ -4,8 +4,8 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_timetable/src/block_service.dart'; import 'package:flutter_timetable_interface/flutter_timetable_interface.dart';
import 'package:flutter_timetable/timetable.dart'; import 'package:flutter_timetable_view/src/block_service.dart';
void main() { void main() {
group('test combineBlocksWithId', () { group('test combineBlocksWithId', () {

View file

@ -1,19 +1,6 @@
name: flutter_timetable name: flutter_timetable_workspace
description: Flutter package to create a Timetable Widget that display blocks of widgets inside a timetable.
version: 1.4.0
repository: https://github.com/Iconica-Development/timetable
environment: environment:
sdk: ">=3.0.0 <4.0.0" sdk: '>=3.1.0 <4.0.0'
flutter: ">=1.17.0"
dependencies:
flutter:
sdk: flutter
dev_dependencies: dev_dependencies:
flutter_test: melos: ^3.0.1
sdk: flutter
flutter_lints: ^2.0.0
flutter: