Segment display widget
Segment display widget for Flutter. Supports multiple types of segment displays and segment customization.
Contents
Features
- 7-segment display
- 14-segment display
- 16-segment display
- Customizable segment shapes (segment styles)
- Supports
.
(decimal point) and:
(colon) characters
See WEB DEMO.
Installation
- Depend on it
Add this to your package's pubspec.yaml file:
dependencies:
segment_display: ^0.5.0
- Install it
You can install packages from the command line:
$ flutter packages get
Alternatively, your editor might support flutter packages get. Check the docs for your editor to learn more.
- Import it
Now in your Dart code, you can use:
import 'package:segment_display/segment_display.dart';
Usage
Seven-segment display
Example:
SevenSegmentDisplay(
value: "123",
size: 12.0,
)
Fourteen-segment display
Example:
FourteenSegmentDisplay(
value: "123",
size: 12.0,
)
Sixteen-segment display
Example:
SixteenSegmentDisplay(
value: "123",
size: 12.0,
)
Styles and customization
You can customize segment display with:
characterSpacing
- space between individual charactersbackgroundColor
- display background colorsegmentStyle
- style for segments (shape, color,...), see segment style
Example:
SevenSegmentDisplay(
text: "123",
textSize: 12.0,
characterSpacing: 10.0,
backgroundColor: Colors.transparent,
segmentStyle: HexSegmentStyle(
enabledColor: Colors.red,
disabledColor: Colors.red.withOpacity(0.15),
),
)
Segment style
To change segment color, size or shape, use segment style.
There are following segment styles:
- DefaultSegmentStyle
- HexSegmentStyle
- RectSegmentStyle
and you can also create or own style (shape) - see custom segment styles
Example:
SevenSegmentDisplay(
value: "13:37",
size: 12.0,
segmentStyle: HexSegmentStyle(
enabledColor: const Color(0xFF00FF00),
disabledColor: const Color(0xFF00FF00).withOpacity(0.15),
segmentBaseSize: const Size(1.0, 2.0),
),
)
enabledColor
- color of enabled segmentsdisabledColor
- color of disabled segmentssegmentBaseSize
- size ratio for segments;Size(1.0, 2.0)
basically means that ratio will be 1:2 (width:length)
NOTE:
SegmentStyle.segmentBaseSize
*SegmentDisplay.textSize
= segmentSize
Custom segment styles
To create your own segment style (shape), extends SegmentStyle
class and implement methods
createHorizontalPath
, createVerticalPath
, createDiagonalBackwardPath
and createDiagonalForwardPath
.
class CustomSegmentStyle extends SegmentStyle {
const CustomSegmentStyle({
Size segmentBaseSize,
Color enabledColor,
Color disabledColor,
}) : super(
segmentBaseSize: segmentBaseSize,
enabledColor: enabledColor,
disabledColor: disabledColor,
);
@override
Path createHorizontalPath(SegmentPosition position, Size segmentSize) {
// ...
}
@override
Path createVerticalPath(SegmentPosition position, Size segmentSize) {
// ...
}
@override
Path createDiagonalBackwardPath(SegmentPosition position, Size segmentSize) {
// ...
}
@override
Path createDiagonalForwardPath(SegmentPosition position, Size segmentSize) {
// ...
}
}
You can also customize shape for individual segments by overriding createPath**
methods.
For 7-segment display, there are createPath7*
methods, for 14-segment display createPath14*
and so on.
Example: if you want to change the shape of the top segment in 7-segment display, you just have to override createPath7A
method.
class CustomSegmentStyle extends SegmentStyle {
// ..
@override
Path createPath7A(Size segmentSize, double padding) {
// ...
}
// ...
}
NOTE:
createPath**
methods usecreateHorizontalPath
/createVerticalPath
/createDiagonalBackwardPath
/createDiagonalForwardPath
by default so you don't have to override allcreatePath7*
methods.
Features and bugs
Please file feature requests and bugs at the issue tracker.