Skip to content

Commit

Permalink
#15 adding set days function (#16)
Browse files Browse the repository at this point in the history
* Fixed readme missing commas (#11)

* Added option to set days after SelectWeekDays got created

* Changed github action flutter version to latest stable

* Fix logic bug for setDaysState

---------

Co-authored-by: Guy Luz <guy@remepy.com>
  • Loading branch information
guyluz11 and Guy Luz committed May 10, 2023
1 parent c92c5e2 commit 2acca66
Show file tree
Hide file tree
Showing 9 changed files with 189 additions and 133 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/main.yaml
Expand Up @@ -7,13 +7,13 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '12.x'
- uses: subosito/flutter-action@v1
- uses: subosito/flutter-action@v2.10.0
with:
flutter-version: '2.x'
channel: 'any'
channel: "stable"
- run: flutter pub get
- run: flutter test
4 changes: 2 additions & 2 deletions example/android/build.gradle
@@ -1,12 +1,12 @@
buildscript {
ext.kotlin_version = '1.6.10'
ext.kotlin_version = '1.7.21'
repositories {
google()
mavenCentral()
}

dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'com.android.tools.build:gradle:7.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Expand Down
2 changes: 1 addition & 1 deletion example/android/gradle/wrapper/gradle-wrapper.properties
Expand Up @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
49 changes: 35 additions & 14 deletions example/lib/main.dart
Expand Up @@ -27,6 +27,24 @@ class HomePage extends StatelessWidget {

@override
Widget build(BuildContext context) {
final customWidgetKey = new GlobalKey<SelectWeekDaysState>();

SelectWeekDays selectWeekDays = SelectWeekDays(
key: customWidgetKey,
fontSize: 14,
fontWeight: FontWeight.w500,
days: _days,
border: false,
width: MediaQuery.of(context).size.width / 1.4,
boxDecoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(30.0),
),
onSelect: (values) {
print(values);
},
);

return Scaffold(
appBar: AppBar(
title: Text("Select days in week"),
Expand Down Expand Up @@ -117,21 +135,24 @@ class HomePage extends StatelessWidget {
},
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: SelectWeekDays(
fontSize: 14,
fontWeight: FontWeight.w500,
days: _days,
border: false,
boxDecoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(30.0),
Row(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: selectWeekDays,
),
onSelect: (values) {
print(values);
},
),
Container(
color: Colors.green.withOpacity(0.4),
child: TextButton(
onPressed: () {
List<DayInWeek> offAllDays =
List.from(_days.map((e) => e..isSelected = false));
customWidgetKey.currentState?.setDaysState(offAllDays);
},
child: Text('Days off'),
),
),
],
),
],
),
Expand Down
112 changes: 62 additions & 50 deletions example/pubspec.lock
Expand Up @@ -5,49 +5,48 @@ packages:
dependency: transitive
description:
name: async
url: "https://pub.dartlang.org"
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
url: "https://pub.dev"
source: hosted
version: "2.8.2"
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"
source: hosted
version: "1.2.0"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.dartlang.org"
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
url: "https://pub.dev"
source: hosted
version: "1.3.1"
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.0"
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.15.0"
version: "1.17.0"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.dartlang.org"
sha256: a937da4c006989739ceb4d10e3bd6cce64ca85d0fe287fc5b2b9f6ee757dcee6
url: "https://pub.dev"
source: hosted
version: "0.1.3"
day_picker:
Expand All @@ -61,9 +60,10 @@ packages:
dependency: transitive
description:
name: fake_async
url: "https://pub.dartlang.org"
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
version: "1.3.1"
flutter:
dependency: "direct main"
description: flutter
Expand All @@ -74,34 +74,46 @@ packages:
description: flutter
source: sdk
version: "0.0.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.11"
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.3"
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.7.0"
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.0"
version: "1.8.2"
sky_engine:
dependency: transitive
description: flutter
Expand All @@ -111,58 +123,58 @@ packages:
dependency: transitive
description:
name: source_span
url: "https://pub.dartlang.org"
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
url: "https://pub.dev"
source: hosted
version: "1.8.1"
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.0"
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.0"
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.8"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
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.1"
version: "2.1.4"
sdks:
dart: ">=2.14.0 <3.0.0"
dart: ">=2.18.0 <3.0.0"
flutter: ">=1.17.0"
2 changes: 1 addition & 1 deletion example/pubspec.yaml
Expand Up @@ -6,7 +6,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1

environment:
sdk: ">=2.7.0 <3.0.0"
sdk: ">=2.7.0 <4.0.0"

dependencies:
flutter:
Expand Down
30 changes: 21 additions & 9 deletions lib/src/select_day.dart
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:day_picker/model/day_in_week.dart';
import 'package:flutter/material.dart';

class SelectWeekDays extends StatefulWidget {
/// [onSelect] callBack to handle the Selected days
Expand Down Expand Up @@ -58,15 +58,15 @@ class SelectWeekDays extends StatefulWidget {
this.padding = 8.0,
this.width,
required this.days,
Key? key,
}) : super(key: key);
super.key,
});

@override
_SelectWeekDaysState createState() => _SelectWeekDaysState(days);
SelectWeekDaysState createState() => SelectWeekDaysState(days);
}

class _SelectWeekDaysState extends State<SelectWeekDays> {
_SelectWeekDaysState(List<DayInWeek> days) : _daysInWeek = days;
class SelectWeekDaysState extends State<SelectWeekDays> {
SelectWeekDaysState(List<DayInWeek> days) : _daysInWeek = days;

// list to insert the selected days.
List<String> selectedDays = [];
Expand All @@ -84,6 +84,19 @@ class _SelectWeekDaysState extends State<SelectWeekDays> {
super.initState();
}

/// Set days to new value
void setDaysState(List<DayInWeek> newDays) {
selectedDays = [];
for (DayInWeek dayInWeek in newDays) {
if (dayInWeek.isSelected) {
selectedDays.add(dayInWeek.dayKey);
}
}
setState(() {
_daysInWeek = newDays;
});
}

void _getSelectedWeekDays(bool isSelected, String day) {
if (isSelected == true) {
if (!selectedDays.contains(day)) {
Expand All @@ -101,7 +114,7 @@ class _SelectWeekDaysState extends State<SelectWeekDays> {
// getter to handle background color of container.
Color? get _handleBackgroundColor {
if (widget.backgroundColor == null) {
return Theme.of(context).accentColor;
return Theme.of(context).colorScheme.secondary;
} else {
return widget.backgroundColor;
}
Expand Down Expand Up @@ -162,8 +175,7 @@ class _SelectWeekDaysState extends State<SelectWeekDays> {
(day) {
return Expanded(
child: RawMaterialButton(
fillColor:
day.isSelected == true ? _handleDaysFillColor : null,
fillColor: day.isSelected ? _handleDaysFillColor : null,
shape: CircleBorder(
side: widget.border
? BorderSide(
Expand Down

0 comments on commit 2acca66

Please sign in to comment.