Skip to content

Commit e13b01f

Browse files
committed
bumped to version 2.3.0
2 parents 380b8cf + 12c068a commit e13b01f

7 files changed

+259
-181
lines changed

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# Changelog
22

3+
4+
## 2.3.0
5+
6+
* **Breaking Change**: New `ExpandableCarouselOptions` introduced for `ExpandableCarousel`.
7+
* **Breaking Change**: New `ExpandableCarouselController` introduced for `ExpandableCarousel`.
8+
* **Breaking Change**: New `ExpandableCarouselState` introduced for `ExpandableCarousel`.
9+
* **Breaking Change**: All slide indicator properties have been consolidated into the `SlideIndicatorOptions` class.
10+
* **Enhancement**: `issue #44` Added optional halo effect for slide indicators, customizable via `SlideIndicatorOptions` properties (`enableHalo`, `haloPadding`, `haloDecoration`).
11+
* **Chore**: Removed dead code.
12+
* **Fix**: `issue #46` fixed.
13+
* **Fix**: `issue #44` fixed.
14+
* **Fix**: `issue #40` fixed.
15+
316
## 2.2.0
417

518
* **New Feature**: Support for custom slide indicators added.

lib/flutter_carousel_widget.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ export 'package:flutter_carousel_widget/src/helpers/flutter_expandable_carousel_
1111
export 'package:flutter_carousel_widget/src/indicators/circular_slide_indicator.dart';
1212
export 'package:flutter_carousel_widget/src/indicators/circular_static_indicator.dart';
1313
export 'package:flutter_carousel_widget/src/indicators/circular_wave_slide_indicator.dart';
14+
export 'package:flutter_carousel_widget/src/indicators/models/slide_indicator_options_model.dart';
1415
export 'package:flutter_carousel_widget/src/indicators/sequential_fill_indicator.dart';
1516
export 'package:flutter_carousel_widget/src/indicators/slide_indicator.dart';

lib/src/indicators/circular_slide_indicator.dart

Lines changed: 30 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,42 @@
1-
import 'package:flutter/material.dart' hide CarouselController;
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_carousel_widget/src/indicators/models/slide_indicator_options_model.dart';
23

34
import 'slide_indicator.dart';
45

56
class CircularSlideIndicator implements SlideIndicator {
6-
const CircularSlideIndicator({
7-
this.itemSpacing = 20,
8-
this.indicatorRadius = 6,
9-
this.indicatorBorderWidth = 1,
10-
this.indicatorBorderColor,
11-
this.padding,
12-
this.alignment = Alignment.bottomCenter,
13-
this.currentIndicatorColor,
14-
this.indicatorBackgroundColor,
15-
});
7+
const CircularSlideIndicator(
8+
{this.slideIndicatorOptions = const SlideIndicatorOptions()});
169

17-
final AlignmentGeometry alignment;
18-
final Color? currentIndicatorColor;
19-
final Color? indicatorBackgroundColor;
20-
final Color? indicatorBorderColor;
21-
final double indicatorBorderWidth;
22-
final double indicatorRadius;
23-
final double itemSpacing;
24-
final EdgeInsets? padding;
10+
final SlideIndicatorOptions slideIndicatorOptions;
2511

2612
@override
2713
Widget build(int currentPage, double pageDelta, int itemCount) {
28-
var activeColor = const Color(0xFFFFFFFF);
29-
var backgroundColor = const Color(0x66FFFFFF);
30-
31-
// if (SchedulerBinding.instance.window.platformBrightness ==
32-
// Brightness.light) {
33-
// activeColor = const Color(0xFF000000);
34-
// backgroundColor = const Color.fromARGB(255, 163, 159, 159);
35-
// }
36-
3714
return Container(
38-
alignment: alignment,
39-
padding: padding,
40-
child: SizedBox(
41-
width: itemCount * itemSpacing,
42-
height: indicatorRadius * 2,
43-
child: CustomPaint(
44-
painter: CircularIndicatorPainter(
45-
currentIndicatorColor: currentIndicatorColor ?? activeColor,
46-
indicatorBackgroundColor:
47-
indicatorBackgroundColor ?? backgroundColor,
48-
currentPage: currentPage,
49-
pageDelta: pageDelta,
50-
itemCount: itemCount,
51-
radius: indicatorRadius,
52-
indicatorBorderColor: indicatorBorderColor,
53-
borderWidth: indicatorBorderWidth,
15+
alignment: slideIndicatorOptions.alignment,
16+
padding: slideIndicatorOptions.padding,
17+
child: Container(
18+
decoration: slideIndicatorOptions.enableHalo
19+
? slideIndicatorOptions.haloDecoration
20+
: null,
21+
padding: slideIndicatorOptions.enableHalo
22+
? slideIndicatorOptions.haloPadding
23+
: null,
24+
child: SizedBox(
25+
width: itemCount * slideIndicatorOptions.itemSpacing,
26+
height: slideIndicatorOptions.indicatorRadius * 2,
27+
child: CustomPaint(
28+
painter: CircularIndicatorPainter(
29+
currentIndicatorColor:
30+
slideIndicatorOptions.currentIndicatorColor,
31+
indicatorBackgroundColor:
32+
slideIndicatorOptions.indicatorBackgroundColor,
33+
currentPage: currentPage,
34+
pageDelta: pageDelta,
35+
itemCount: itemCount,
36+
radius: slideIndicatorOptions.indicatorRadius,
37+
indicatorBorderColor: slideIndicatorOptions.indicatorBorderColor,
38+
borderWidth: slideIndicatorOptions.indicatorBorderWidth,
39+
),
5440
),
5541
),
5642
),

lib/src/indicators/circular_static_indicator.dart

Lines changed: 29 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,42 @@
11
import 'package:flutter/material.dart' hide CarouselController;
2-
3-
import 'slide_indicator.dart';
2+
import 'package:flutter_carousel_widget/flutter_carousel_widget.dart';
43

54
class CircularStaticIndicator extends SlideIndicator {
65
CircularStaticIndicator({
7-
this.itemSpacing = 20,
8-
this.indicatorRadius = 6,
9-
this.padding,
10-
this.alignment = Alignment.bottomCenter,
11-
this.currentIndicatorColor,
12-
this.indicatorBackgroundColor,
13-
this.enableAnimation = false,
14-
this.indicatorBorderWidth = 1,
15-
this.indicatorBorderColor,
6+
this.slideIndicatorOptions = const SlideIndicatorOptions(),
167
});
178

18-
final AlignmentGeometry alignment;
19-
final Color? currentIndicatorColor;
20-
final bool enableAnimation;
21-
final Color? indicatorBackgroundColor;
22-
final Color? indicatorBorderColor;
23-
final double indicatorBorderWidth;
24-
final double indicatorRadius;
25-
final double itemSpacing;
26-
final EdgeInsets? padding;
9+
final SlideIndicatorOptions slideIndicatorOptions;
2710

2811
@override
2912
Widget build(int currentPage, double pageDelta, int itemCount) {
30-
var activeColor = const Color(0xFFFFFFFF);
31-
var backgroundColor = const Color(0x66FFFFFF);
32-
33-
// if (SchedulerBinding.instance.window.platformBrightness ==
34-
// Brightness.light) {
35-
// activeColor = const Color(0xFF000000);
36-
// backgroundColor = const Color(0xFF878484);
37-
// }
38-
3913
return Container(
40-
alignment: alignment,
41-
padding: padding,
42-
child: SizedBox(
43-
width: itemCount * itemSpacing,
44-
height: indicatorRadius * 2,
45-
child: CustomPaint(
46-
painter: CircularStaticIndicatorPainter(
47-
currentIndicatorColor: currentIndicatorColor ?? activeColor,
48-
indicatorBackgroundColor:
49-
indicatorBackgroundColor ?? backgroundColor,
50-
currentPage: currentPage,
51-
pageDelta: pageDelta,
52-
itemCount: itemCount,
53-
radius: indicatorRadius,
54-
enableAnimation: enableAnimation,
55-
indicatorBorderColor: indicatorBorderColor,
56-
borderWidth: indicatorBorderWidth,
14+
alignment: slideIndicatorOptions.alignment,
15+
padding: slideIndicatorOptions.padding,
16+
child: Container(
17+
decoration: slideIndicatorOptions.enableHalo
18+
? slideIndicatorOptions.haloDecoration
19+
: null,
20+
padding: slideIndicatorOptions.enableHalo
21+
? slideIndicatorOptions.haloPadding
22+
: null,
23+
child: SizedBox(
24+
width: itemCount * slideIndicatorOptions.itemSpacing,
25+
height: slideIndicatorOptions.indicatorRadius * 2,
26+
child: CustomPaint(
27+
painter: CircularStaticIndicatorPainter(
28+
currentIndicatorColor:
29+
slideIndicatorOptions.currentIndicatorColor,
30+
indicatorBackgroundColor:
31+
slideIndicatorOptions.indicatorBackgroundColor,
32+
currentPage: currentPage,
33+
pageDelta: pageDelta,
34+
itemCount: itemCount,
35+
radius: slideIndicatorOptions.indicatorRadius,
36+
enableAnimation: slideIndicatorOptions.enableAnimation,
37+
indicatorBorderColor: slideIndicatorOptions.indicatorBorderColor,
38+
borderWidth: slideIndicatorOptions.indicatorBorderWidth,
39+
),
5740
),
5841
),
5942
),

lib/src/indicators/circular_wave_slide_indicator.dart

Lines changed: 29 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,41 @@
1-
import 'package:flutter/material.dart' hide CarouselController;
2-
3-
import 'slide_indicator.dart';
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_carousel_widget/flutter_carousel_widget.dart';
43

54
class CircularWaveSlideIndicator implements SlideIndicator {
65
CircularWaveSlideIndicator({
7-
this.itemSpacing = 20,
8-
this.indicatorRadius = 6,
9-
this.padding,
10-
this.alignment = Alignment.bottomCenter,
11-
this.currentIndicatorColor,
12-
this.indicatorBackgroundColor,
13-
this.indicatorBorderWidth = 1,
14-
this.indicatorBorderColor,
6+
this.slideIndicatorOptions = const SlideIndicatorOptions(),
157
});
168

17-
final AlignmentGeometry alignment;
18-
final Color? currentIndicatorColor;
19-
final Color? indicatorBackgroundColor;
20-
final Color? indicatorBorderColor;
21-
final double indicatorBorderWidth;
22-
final double indicatorRadius;
23-
final double itemSpacing;
24-
final EdgeInsets? padding;
9+
final SlideIndicatorOptions slideIndicatorOptions;
2510

2611
@override
2712
Widget build(int currentPage, double pageDelta, int itemCount) {
28-
var activeColor = const Color(0xFFFFFFFF);
29-
var backgroundColor = const Color(0x66FFFFFF);
30-
31-
// if (SchedulerBinding.instance.window.platformBrightness ==
32-
// Brightness.light) {
33-
// activeColor = const Color(0xFF000000);
34-
// backgroundColor = const Color(0xFF878484);
35-
// }
36-
3713
return Container(
38-
alignment: alignment,
39-
padding: padding,
40-
child: SizedBox(
41-
width: itemCount * itemSpacing,
42-
height: indicatorRadius * 2,
43-
child: CustomPaint(
44-
painter: CircularWaveIndicatorPainter(
45-
currentIndicatorColor: currentIndicatorColor ?? activeColor,
46-
indicatorBackgroundColor:
47-
indicatorBackgroundColor ?? backgroundColor,
48-
currentPage: currentPage,
49-
pageDelta: pageDelta,
50-
itemCount: itemCount,
51-
radius: indicatorRadius,
52-
indicatorBorderColor: indicatorBorderColor,
53-
borderWidth: indicatorBorderWidth,
14+
alignment: slideIndicatorOptions.alignment,
15+
padding: slideIndicatorOptions.padding,
16+
child: Container(
17+
decoration: slideIndicatorOptions.enableHalo
18+
? slideIndicatorOptions.haloDecoration
19+
: null,
20+
padding: slideIndicatorOptions.enableHalo
21+
? slideIndicatorOptions.haloPadding
22+
: null,
23+
child: SizedBox(
24+
width: itemCount * slideIndicatorOptions.itemSpacing,
25+
height: slideIndicatorOptions.indicatorRadius * 2,
26+
child: CustomPaint(
27+
painter: CircularWaveIndicatorPainter(
28+
currentIndicatorColor:
29+
slideIndicatorOptions.currentIndicatorColor,
30+
indicatorBackgroundColor:
31+
slideIndicatorOptions.indicatorBackgroundColor,
32+
currentPage: currentPage,
33+
pageDelta: pageDelta,
34+
itemCount: itemCount,
35+
radius: slideIndicatorOptions.indicatorRadius,
36+
indicatorBorderColor: slideIndicatorOptions.indicatorBorderColor,
37+
borderWidth: slideIndicatorOptions.indicatorBorderWidth,
38+
),
5439
),
5540
),
5641
),

0 commit comments

Comments
 (0)