Skip to content

Commit 467f16c

Browse files
Merge pull request #174 from shravyackm/master
GFBorder component added
2 parents d3e0a41 + 018b571 commit 467f16c

7 files changed

Lines changed: 280 additions & 390 deletions

File tree

example/lib/main.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ class MyApp extends StatelessWidget {
1414
);
1515
}
1616

17-
//
1817
class MyHomePage extends StatefulWidget {
1918
@override
2019
_MyHomePageState createState() => _MyHomePageState();

example/pubspec.lock

Lines changed: 1 addition & 243 deletions
Original file line numberDiff line numberDiff line change
@@ -1,243 +1 @@
1-
# Generated by pub
2-
# See https://dart.dev/tools/pub/glossary#lockfile
3-
packages:
4-
async:
5-
dependency: transitive
6-
description:
7-
name: async
8-
url: "https://pub.dartlang.org"
9-
source: hosted
10-
version: "2.4.2"
11-
boolean_selector:
12-
dependency: transitive
13-
description:
14-
name: boolean_selector
15-
url: "https://pub.dartlang.org"
16-
source: hosted
17-
version: "2.0.0"
18-
characters:
19-
dependency: transitive
20-
description:
21-
name: characters
22-
url: "https://pub.dartlang.org"
23-
source: hosted
24-
version: "1.0.0"
25-
charcode:
26-
dependency: transitive
27-
description:
28-
name: charcode
29-
url: "https://pub.dartlang.org"
30-
source: hosted
31-
version: "1.1.3"
32-
clock:
33-
dependency: transitive
34-
description:
35-
name: clock
36-
url: "https://pub.dartlang.org"
37-
source: hosted
38-
version: "1.0.1"
39-
collection:
40-
dependency: transitive
41-
description:
42-
name: collection
43-
url: "https://pub.dartlang.org"
44-
source: hosted
45-
version: "1.14.13"
46-
convert:
47-
dependency: transitive
48-
description:
49-
name: convert
50-
url: "https://pub.dartlang.org"
51-
source: hosted
52-
version: "2.1.1"
53-
cupertino_icons:
54-
dependency: "direct main"
55-
description:
56-
name: cupertino_icons
57-
url: "https://pub.dartlang.org"
58-
source: hosted
59-
version: "0.1.3"
60-
fake_async:
61-
dependency: transitive
62-
description:
63-
name: fake_async
64-
url: "https://pub.dartlang.org"
65-
source: hosted
66-
version: "1.1.0"
67-
flutter:
68-
dependency: "direct main"
69-
description: flutter
70-
source: sdk
71-
version: "0.0.0"
72-
flutter_svg:
73-
dependency: "direct main"
74-
description:
75-
name: flutter_svg
76-
url: "https://pub.dartlang.org"
77-
source: hosted
78-
version: "0.18.1"
79-
flutter_test:
80-
dependency: "direct dev"
81-
description: flutter
82-
source: sdk
83-
version: "0.0.0"
84-
flutter_web_plugins:
85-
dependency: transitive
86-
description: flutter
87-
source: sdk
88-
version: "0.0.0"
89-
getwidget:
90-
dependency: "direct main"
91-
description:
92-
path: ".."
93-
relative: true
94-
source: path
95-
version: "1.1.3"
96-
matcher:
97-
dependency: transitive
98-
description:
99-
name: matcher
100-
url: "https://pub.dartlang.org"
101-
source: hosted
102-
version: "0.12.8"
103-
meta:
104-
dependency: transitive
105-
description:
106-
name: meta
107-
url: "https://pub.dartlang.org"
108-
source: hosted
109-
version: "1.1.8"
110-
path:
111-
dependency: transitive
112-
description:
113-
name: path
114-
url: "https://pub.dartlang.org"
115-
source: hosted
116-
version: "1.7.0"
117-
path_drawing:
118-
dependency: transitive
119-
description:
120-
name: path_drawing
121-
url: "https://pub.dartlang.org"
122-
source: hosted
123-
version: "0.4.1+1"
124-
path_parsing:
125-
dependency: transitive
126-
description:
127-
name: path_parsing
128-
url: "https://pub.dartlang.org"
129-
source: hosted
130-
version: "0.1.4"
131-
petitparser:
132-
dependency: transitive
133-
description:
134-
name: petitparser
135-
url: "https://pub.dartlang.org"
136-
source: hosted
137-
version: "3.0.4"
138-
plugin_platform_interface:
139-
dependency: transitive
140-
description:
141-
name: plugin_platform_interface
142-
url: "https://pub.dartlang.org"
143-
source: hosted
144-
version: "1.0.1"
145-
sky_engine:
146-
dependency: transitive
147-
description: flutter
148-
source: sdk
149-
version: "0.0.99"
150-
source_span:
151-
dependency: transitive
152-
description:
153-
name: source_span
154-
url: "https://pub.dartlang.org"
155-
source: hosted
156-
version: "1.7.0"
157-
stack_trace:
158-
dependency: transitive
159-
description:
160-
name: stack_trace
161-
url: "https://pub.dartlang.org"
162-
source: hosted
163-
version: "1.9.5"
164-
stream_channel:
165-
dependency: transitive
166-
description:
167-
name: stream_channel
168-
url: "https://pub.dartlang.org"
169-
source: hosted
170-
version: "2.0.0"
171-
string_scanner:
172-
dependency: transitive
173-
description:
174-
name: string_scanner
175-
url: "https://pub.dartlang.org"
176-
source: hosted
177-
version: "1.0.5"
178-
term_glyph:
179-
dependency: transitive
180-
description:
181-
name: term_glyph
182-
url: "https://pub.dartlang.org"
183-
source: hosted
184-
version: "1.1.0"
185-
test_api:
186-
dependency: transitive
187-
description:
188-
name: test_api
189-
url: "https://pub.dartlang.org"
190-
source: hosted
191-
version: "0.2.17"
192-
typed_data:
193-
dependency: transitive
194-
description:
195-
name: typed_data
196-
url: "https://pub.dartlang.org"
197-
source: hosted
198-
version: "1.2.0"
199-
url_launcher:
200-
dependency: "direct main"
201-
description:
202-
name: url_launcher
203-
url: "https://pub.dartlang.org"
204-
source: hosted
205-
version: "5.4.1"
206-
url_launcher_macos:
207-
dependency: transitive
208-
description:
209-
name: url_launcher_macos
210-
url: "https://pub.dartlang.org"
211-
source: hosted
212-
version: "0.0.1+2"
213-
url_launcher_platform_interface:
214-
dependency: transitive
215-
description:
216-
name: url_launcher_platform_interface
217-
url: "https://pub.dartlang.org"
218-
source: hosted
219-
version: "1.0.5"
220-
url_launcher_web:
221-
dependency: transitive
222-
description:
223-
name: url_launcher_web
224-
url: "https://pub.dartlang.org"
225-
source: hosted
226-
version: "0.1.1"
227-
vector_math:
228-
dependency: transitive
229-
description:
230-
name: vector_math
231-
url: "https://pub.dartlang.org"
232-
source: hosted
233-
version: "2.0.8"
234-
xml:
235-
dependency: transitive
236-
description:
237-
name: xml
238-
url: "https://pub.dartlang.org"
239-
source: hosted
240-
version: "4.2.0"
241-
sdks:
242-
dart: ">=2.9.0-14.0.dev <3.0.0"
243-
flutter: ">=1.18.0-6.0.pre <2.0.0"
1+
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import 'dart:ui';
2+
import 'package:flutter/material.dart';
3+
import 'package:getwidget/components/border/gf_dashed_border.dart';
4+
import 'package:getwidget/types/gf_border_type.dart';
5+
6+
class GFBorder extends StatelessWidget {
7+
GFBorder({
8+
@required this.child,
9+
this.color = Colors.black,
10+
this.strokeWidth = 1,
11+
this.type = GFBorderType.Rect,
12+
this.dashedLine = const <double>[3, 1],
13+
this.padding = const EdgeInsets.all(10),
14+
this.radius = const Radius.circular(0),
15+
this.customPath,
16+
}) : assert(child != null),
17+
assert(_isValiddashedLine(dashedLine), 'Invalid dash pattern');
18+
19+
/// child of type [Widget] which can be any component or text , etc
20+
final Widget child;
21+
22+
/// padding of time [EdgeInsets] where in padding is given to the border types
23+
final EdgeInsets padding;
24+
25+
/// storkeWidth of type [double] which is used to define the thickness of the border
26+
final double strokeWidth;
27+
28+
/// color of type [Color] or GFColor which is used to change the color of the border type
29+
final Color color;
30+
31+
/// dashedLine of type [List<double>] which is used for the linear and simple dashed line of border
32+
final List<double> dashedLine;
33+
34+
/// type of [GFBorderType] which is used to define the different types of borders ie, circle, Rect, RRect and oval
35+
final GFBorderType type;
36+
37+
/// radius of type [Radius] used to give a curved border only when the border type is RRect, in other cases radius will not work
38+
final Radius radius;
39+
40+
/// customPath of type [PathBuilder] used for drawing the paths
41+
final PathBuilder customPath;
42+
43+
@override
44+
Widget build(BuildContext context) => Stack(
45+
children: <Widget>[
46+
Positioned.fill(
47+
child: CustomPaint(
48+
painter: DashedType(
49+
strokeWidth: strokeWidth,
50+
radius: radius,
51+
color: color,
52+
type: type,
53+
dashedLine: dashedLine,
54+
customPath: customPath,
55+
),
56+
),
57+
),
58+
Container(padding: padding, child: child),
59+
],
60+
);
61+
}
62+
63+
/// the value of dashedLine cannot be 0 or null, it should have some definite and proper value
64+
bool _isValiddashedLine(List<double> dash) {
65+
final Set<double> _dashSet = dash.toSet();
66+
if (_dashSet == null) {
67+
return false;
68+
}
69+
if (_dashSet.length == 1 && _dashSet.elementAt(0) == 0.0) {
70+
return false;
71+
}
72+
if (_dashSet.isEmpty) {
73+
return false;
74+
}
75+
return true;
76+
}

0 commit comments

Comments
 (0)