Skip to content

Commit

Permalink
Merge pull request #23 from cgustav/release/1.0.1
Browse files Browse the repository at this point in the history
Release/1.0.1
  • Loading branch information
cgustav authored Feb 19, 2023
2 parents 4ea7603 + 1ed388c commit 70c6cfb
Show file tree
Hide file tree
Showing 6 changed files with 151 additions and 41 deletions.
10 changes: 9 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Package Changelog

## [0.0.1] - Initial Release: October 31th, 2019

- Widget initial release with basic color and other cosmetic customation.
Expand All @@ -17,5 +19,11 @@
- Arguments `onTap`, `onDoubleTap`, `onSwipe` are now required.
- Improved implementation example.
- New Community contributions on readme.
- Enhanced code documentation
- Enhanced code documentation.
- MIT License added.

## [1.0.1] - Minor Update: February 19th, 2023

- Intl Upgrade to 0.18.0 (dart 3 ready dependency).
- Unit Tests.
- Incorporation of package verification and publish process via scripting.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ LiteRollingSwitch(
```

## Tests

To executed included unit tests run `flutter test`. Feel free to Pull Request your own Unit Test to improve this package!

## Changelog

Visit the complete changelog [here](CHANGELOG.md).
Expand All @@ -55,6 +59,7 @@ Visit the complete changelog [here](CHANGELOG.md).
- [@Rontu22](https://github.com/Rontu22) - Null safety hints
- [@Elvis-Sarfo](https://github.com/Elvis-Sarfo) - Null safety hints
- [@lulupointu](https://github.com/lulupointu) - Component management hints
- [@ninjagaru](https://github.com/ninjagaru) - Intl upgrade request

## License

Expand Down
2 changes: 1 addition & 1 deletion lib/lite_rolling_switch.dart
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ class _RollingSwitchState extends State<LiteRollingSwitch>
turnState = widget.value;

// Executes a function only one time after the layout is completed.
WidgetsBinding.instance?.addPostFrameCallback((_) {
WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() {
if (turnState) {
animationController.forward();
Expand Down
88 changes: 57 additions & 31 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,42 +5,48 @@ packages:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
url: "https://pub.dev"
source: hosted
version: "2.9.0"
version: "2.10.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.dartlang.org"
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.1"
characters:
dependency: transitive
description:
name: characters
url: "https://pub.dartlang.org"
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
url: "https://pub.dev"
source: hosted
version: "1.2.1"
clock:
dependency: transitive
description:
name: clock
url: "https://pub.dartlang.org"
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.dev"
source: hosted
version: "1.1.1"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.dartlang.org"
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
url: "https://pub.dev"
source: hosted
version: "1.16.0"
version: "1.17.0"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
flutter:
Expand All @@ -57,35 +63,48 @@ packages:
dependency: "direct main"
description:
name: intl
url: "https://pub.dartlang.org"
sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6
url: "https://pub.dev"
source: hosted
version: "0.17.0"
version: "0.18.0"
js:
dependency: transitive
description:
name: js
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
url: "https://pub.dev"
source: hosted
version: "0.6.5"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.dartlang.org"
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
url: "https://pub.dev"
source: hosted
version: "0.12.12"
version: "0.12.13"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.dartlang.org"
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
url: "https://pub.dev"
source: hosted
version: "0.1.5"
version: "0.2.0"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.dartlang.org"
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
url: "https://pub.dev"
source: hosted
version: "1.8.0"
path:
dependency: transitive
description:
name: path
url: "https://pub.dartlang.org"
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
url: "https://pub.dev"
source: hosted
version: "1.8.2"
sky_engine:
Expand All @@ -97,50 +116,57 @@ packages:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.dartlang.org"
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.dev"
source: hosted
version: "1.10.0"
version: "1.11.0"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.dartlang.org"
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.dev"
source: hosted
version: "2.1.0"
version: "2.1.1"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.dartlang.org"
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.2.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.dartlang.org"
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev"
source: hosted
version: "1.2.1"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.dartlang.org"
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
url: "https://pub.dev"
source: hosted
version: "0.4.12"
version: "0.4.16"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.dartlang.org"
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
version: "2.1.4"
sdks:
dart: ">=2.17.0-0 <3.0.0"
dart: ">=2.18.0 <4.0.0"
9 changes: 7 additions & 2 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: lite_rolling_switch
description: Custom Switch button with nice looking and attractive animation, made to allow you to customize colors, icons and other cosmetic content. Now supports null safety.
version: 1.0.0
version: 1.0.1
homepage: https://github.com/cgustav/lite_rolling_switch

environment:
Expand All @@ -9,7 +9,7 @@ environment:
dependencies:
flutter:
sdk: flutter
intl: ^0.17.0
intl: ^0.18.0

dev_dependencies:
flutter_test:
Expand Down Expand Up @@ -49,3 +49,8 @@ flutter:
#
# For details regarding fonts in packages, see
# https://flutter.dev/custom-fonts/#from-packages

scripts:
# Pre release test script
prepublish: "flutter test && flutter analyze && dart format --set-exit-if-changed . && flutter pub publish --dry-run"
publish: "flutter test && flutter analyze && dart format --set-exit-if-changed . && flutter pub publish"
78 changes: 72 additions & 6 deletions test/lite_rolling_switch_test.dart
Original file line number Diff line number Diff line change
@@ -1,13 +1,79 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:lite_rolling_switch/lite_rolling_switch.dart';

void main() {
test('adds one to input values', () {
final rollingSwitch = LiteRollingSwitch(
onChanged: (bool) {},
onDoubleTap: () {},
onSwipe: () {},
onTap: () {},
testWidgets(
'Button switch have the expected text and an icon on initial state',
(tester) async {
// Create the widget by telling the tester to build it.
await tester.pumpWidget(MaterialApp(
home: Center(
child: LiteRollingSwitch(
value: false,
textOff: 'Off',
iconOff: Icons.remove,
onTap: () {},
onDoubleTap: () {},
onSwipe: () {},
onChanged: (value) {}),
)));

// Create the Finders.
final textFinder = find.text('Off');
final iconFinder = find.byIcon(Icons.remove);

// Use the `findsOneWidget` matcher provided by flutter_test to
// verify that there is exactly one widget in the widget tree.
expect(textFinder, findsOneWidget);
expect(iconFinder, findsOneWidget);
});

testWidgets(
'Button switch change to the expected text and an icon when tapped',
(tester) async {
// Constants
const defaultDuration = Duration(milliseconds: 600);
const initialStateIcon = Icons.add;
const initialStateText = 'On';
const finalStateIcon = Icons.remove;
const finalStateText = 'Off';

// Create the widget by telling the tester to build it.
await tester.pumpWidget(
MaterialApp(
home: LiteRollingSwitch(
value: true,
textOn: initialStateText,
iconOn: initialStateIcon,
textOff: finalStateText,
iconOff: finalStateIcon,
animationDuration: defaultDuration,
onTap: () {},
onDoubleTap: () {},
onSwipe: () {},
onChanged: (value) {})),
);

// Initial state Finders.
final initialStateTextFinder = find.text(initialStateText);
final initialStateIconFinder = find.byIcon(initialStateIcon);

// Use the `findsOneWidget` matcher provided by flutter_test to
// verify that there is exactly one widget in the widget tree.
expect(initialStateTextFinder, findsOneWidget);
expect(initialStateIconFinder, findsOneWidget);

// Tap the icon and trigger a frame (animation tick).
await tester.tap(initialStateIconFinder);
await tester.pump(defaultDuration);

// Final state Finders.
final finalStateTextFinder = find.text(finalStateText);
final finalStateIconFinder = find.byIcon(finalStateIcon);

// Verify that our text and icon has changed as expected.
expect(finalStateTextFinder, findsOneWidget);
expect(finalStateIconFinder, findsOneWidget);
});
}

0 comments on commit 70c6cfb

Please sign in to comment.