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
on:
@ -7,6 +7,8 @@ on:
jobs:
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
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
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
/pubspec.lock
pubspec.lock
**/doc/api/
.dart_tool/
.packages
build/
.metadata
example/android/
example/ios/
example/web/
example/linux/
example/macos/
example/windows/
android/
ios/
web/
linux/
macos/
windows/
pubspec_overrides.yaml

View file

@ -30,3 +30,7 @@
## [1.4.0] - 13 November 2023
* 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:

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
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() {
runApp(const MaterialApp(home: TimetableDemo()));

View file

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

View file

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

View file

@ -3,7 +3,7 @@
// SPDX-License-Identifier: BSD-3-Clause
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.
List<TimeBlock> combineBlocksWithId(List<TimeBlock> blocks) {

View file

@ -6,11 +6,12 @@ import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_timetable/src/block_service.dart';
import 'package:flutter_timetable/src/models/table_theme.dart';
import 'package:flutter_timetable/src/models/time_block.dart';
import 'package:flutter_timetable/src/widgets/block.dart';
import 'package:flutter_timetable/src/widgets/table.dart' as table;
import 'package:flutter_timetable_interface/flutter_timetable_interface.dart';
import 'package:flutter_timetable_view/src/block_service.dart';
import 'package:flutter_timetable_view/src/models/table_theme.dart';
import 'package:flutter_timetable_view/src/widgets/block.dart';
import 'package:flutter_timetable_view/src/widgets/table.dart' as table;
class Timetable extends StatefulWidget {
/// [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,
),
maxLines: 1,
textScaleFactor: MediaQuery.of(context).textScaleFactor,
textScaler: MediaQuery.textScalerOf(context),
textDirection: TextDirection.ltr,
)..layout())
.size;

View file

@ -3,7 +3,7 @@
// SPDX-License-Identifier: BSD-3-Clause
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 {
/// 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_test/flutter_test.dart';
import 'package:flutter_timetable/src/block_service.dart';
import 'package:flutter_timetable/timetable.dart';
import 'package:flutter_timetable_interface/flutter_timetable_interface.dart';
import 'package:flutter_timetable_view/src/block_service.dart';
void main() {
group('test combineBlocksWithId', () {

View file

@ -1,19 +1,6 @@
name: flutter_timetable
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
name: flutter_timetable_workspace
environment:
sdk: ">=3.0.0 <4.0.0"
flutter: ">=1.17.0"
dependencies:
flutter:
sdk: flutter
sdk: '>=3.1.0 <4.0.0'
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter:
melos: ^3.0.1