├── 1.png
├── 2.png
├── 3.png
├── assets
└── images
│ ├── land.png
│ ├── kitchen.png
│ └── office.png
├── README.md
├── .gitignore
├── lib
├── model.dart
├── home.dart
└── main.dart
├── pubspec.yaml
├── pubspec.lock
└── LICENSE
/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justkawal/architect_ui/HEAD/1.png
--------------------------------------------------------------------------------
/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justkawal/architect_ui/HEAD/2.png
--------------------------------------------------------------------------------
/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justkawal/architect_ui/HEAD/3.png
--------------------------------------------------------------------------------
/assets/images/land.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justkawal/architect_ui/HEAD/assets/images/land.png
--------------------------------------------------------------------------------
/assets/images/kitchen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justkawal/architect_ui/HEAD/assets/images/kitchen.png
--------------------------------------------------------------------------------
/assets/images/office.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/justkawal/architect_ui/HEAD/assets/images/office.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # architect_ui
2 |
3 | Architect UI design
4 |
5 |
6 |
7 | # Donate
8 |
9 | [Paypal Me ](https://www.paypal.me/kawal7415) on paypal.me/kawal7415
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | /android/
12 | /ios/
13 | /test/
14 | .vscode/
15 | .metadata
16 |
17 | # IntelliJ related
18 | *.iml
19 | *.ipr
20 | *.iws
21 | .idea/
22 |
23 | # The .vscode folder contains launch configuration and tasks you configure in
24 | # VS Code which you may wish to be included in version control, so this line
25 | # is commented out by default.
26 | #.vscode/
27 |
28 | # Flutter/Dart/Pub related
29 | **/doc/api/
30 | .dart_tool/
31 | .flutter-plugins
32 | .flutter-plugins-dependencies
33 | .packages
34 | .pub-cache/
35 | .pub/
36 | /build/
37 |
38 | # Web related
39 | lib/generated_plugin_registrant.dart
40 |
41 | # Exceptions to above rules.
42 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
43 |
--------------------------------------------------------------------------------
/lib/model.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ArchitectModel {
4 | String imageUrl, name, description, price;
5 |
6 | ArchitectModel(
7 | {@required this.imageUrl,
8 | @required this.name,
9 | @required this.description,
10 | @required this.price});
11 | }
12 |
13 | List listModel = [
14 | ArchitectModel(
15 | imageUrl: "kitchen.png",
16 | name: "Kitchen 1",
17 | description: "The furniture from quality designed houses.",
18 | price: "\$4,800"),
19 | ArchitectModel(
20 | imageUrl: "office.png",
21 | name: "Office 1",
22 | description: "Highest level of refinement and comfort.",
23 | price: "\$4,800"),
24 | ArchitectModel(
25 | imageUrl: "land.png",
26 | name: "Land 1",
27 | description: "The land from the heaven.",
28 | price: "\$4,800"),
29 | ];
30 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: architect_ui
2 | description: A new Flutter project.
3 |
4 | # The following defines the version and build number for your application.
5 | # A version number is three numbers separated by dots, like 1.2.43
6 | # followed by an optional build number separated by a +.
7 | # Both the version and the builder number may be overridden in flutter
8 | # build by specifying --build-name and --build-number, respectively.
9 | # In Android, build-name is used as versionName while build-number used as versionCode.
10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
12 | # Read more about iOS versioning at
13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
14 | version: 1.0.0+1
15 |
16 | environment:
17 | sdk: ">=2.1.0 <3.0.0"
18 |
19 | dependencies:
20 | flutter:
21 | sdk: flutter
22 |
23 | # The following adds the Cupertino Icons font to your application.
24 | # Use with the CupertinoIcons class for iOS style icons.
25 | cupertino_icons: ^0.1.2
26 |
27 | dev_dependencies:
28 | flutter_test:
29 | sdk: flutter
30 |
31 |
32 | # For information on the generic Dart part of this file, see the
33 | # following page: https://dart.dev/tools/pub/pubspec
34 |
35 | # The following section is specific to Flutter.
36 | flutter:
37 |
38 | # The following line ensures that the Material Icons font is
39 | # included with your application, so that you can use the icons in
40 | # the material Icons class.
41 | uses-material-design: true
42 |
43 | # To add assets to your application, add an assets section, like this:
44 | assets:
45 | - assets/images/
46 | # - images/a_dot_ham.jpeg
47 |
48 | # An image asset can refer to one or more resolution-specific "variants", see
49 | # https://flutter.dev/assets-and-images/#resolution-aware.
50 |
51 | # For details regarding adding assets from package dependencies, see
52 | # https://flutter.dev/assets-and-images/#from-packages
53 |
54 | # To add custom fonts to your application, add a fonts section here,
55 | # in this "flutter" section. Each entry in this list should have a
56 | # "family" key with the font family name, and a "fonts" key with a
57 | # list giving the asset and other descriptors for the font. For
58 | # example:
59 | # fonts:
60 | # - family: Schyler
61 | # fonts:
62 | # - asset: fonts/Schyler-Regular.ttf
63 | # - asset: fonts/Schyler-Italic.ttf
64 | # style: italic
65 | # - family: Trajan Pro
66 | # fonts:
67 | # - asset: fonts/TrajanPro.ttf
68 | # - asset: fonts/TrajanPro_Bold.ttf
69 | # weight: 700
70 | #
71 | # For details regarding fonts from package dependencies,
72 | # see https://flutter.dev/custom-fonts/#from-packages
73 |
--------------------------------------------------------------------------------
/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | archive:
5 | dependency: transitive
6 | description:
7 | name: archive
8 | url: "https://pub.dartlang.org"
9 | source: hosted
10 | version: "2.0.11"
11 | args:
12 | dependency: transitive
13 | description:
14 | name: args
15 | url: "https://pub.dartlang.org"
16 | source: hosted
17 | version: "1.5.2"
18 | async:
19 | dependency: transitive
20 | description:
21 | name: async
22 | url: "https://pub.dartlang.org"
23 | source: hosted
24 | version: "2.4.0"
25 | boolean_selector:
26 | dependency: transitive
27 | description:
28 | name: boolean_selector
29 | url: "https://pub.dartlang.org"
30 | source: hosted
31 | version: "1.0.5"
32 | charcode:
33 | dependency: transitive
34 | description:
35 | name: charcode
36 | url: "https://pub.dartlang.org"
37 | source: hosted
38 | version: "1.1.2"
39 | collection:
40 | dependency: transitive
41 | description:
42 | name: collection
43 | url: "https://pub.dartlang.org"
44 | source: hosted
45 | version: "1.14.11"
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 | crypto:
54 | dependency: transitive
55 | description:
56 | name: crypto
57 | url: "https://pub.dartlang.org"
58 | source: hosted
59 | version: "2.1.3"
60 | cupertino_icons:
61 | dependency: "direct main"
62 | description:
63 | name: cupertino_icons
64 | url: "https://pub.dartlang.org"
65 | source: hosted
66 | version: "0.1.3"
67 | flutter:
68 | dependency: "direct main"
69 | description: flutter
70 | source: sdk
71 | version: "0.0.0"
72 | flutter_test:
73 | dependency: "direct dev"
74 | description: flutter
75 | source: sdk
76 | version: "0.0.0"
77 | image:
78 | dependency: transitive
79 | description:
80 | name: image
81 | url: "https://pub.dartlang.org"
82 | source: hosted
83 | version: "2.1.4"
84 | matcher:
85 | dependency: transitive
86 | description:
87 | name: matcher
88 | url: "https://pub.dartlang.org"
89 | source: hosted
90 | version: "0.12.6"
91 | meta:
92 | dependency: transitive
93 | description:
94 | name: meta
95 | url: "https://pub.dartlang.org"
96 | source: hosted
97 | version: "1.1.8"
98 | path:
99 | dependency: transitive
100 | description:
101 | name: path
102 | url: "https://pub.dartlang.org"
103 | source: hosted
104 | version: "1.6.4"
105 | pedantic:
106 | dependency: transitive
107 | description:
108 | name: pedantic
109 | url: "https://pub.dartlang.org"
110 | source: hosted
111 | version: "1.8.0+1"
112 | petitparser:
113 | dependency: transitive
114 | description:
115 | name: petitparser
116 | url: "https://pub.dartlang.org"
117 | source: hosted
118 | version: "2.4.0"
119 | quiver:
120 | dependency: transitive
121 | description:
122 | name: quiver
123 | url: "https://pub.dartlang.org"
124 | source: hosted
125 | version: "2.0.5"
126 | sky_engine:
127 | dependency: transitive
128 | description: flutter
129 | source: sdk
130 | version: "0.0.99"
131 | source_span:
132 | dependency: transitive
133 | description:
134 | name: source_span
135 | url: "https://pub.dartlang.org"
136 | source: hosted
137 | version: "1.5.5"
138 | stack_trace:
139 | dependency: transitive
140 | description:
141 | name: stack_trace
142 | url: "https://pub.dartlang.org"
143 | source: hosted
144 | version: "1.9.3"
145 | stream_channel:
146 | dependency: transitive
147 | description:
148 | name: stream_channel
149 | url: "https://pub.dartlang.org"
150 | source: hosted
151 | version: "2.0.0"
152 | string_scanner:
153 | dependency: transitive
154 | description:
155 | name: string_scanner
156 | url: "https://pub.dartlang.org"
157 | source: hosted
158 | version: "1.0.5"
159 | term_glyph:
160 | dependency: transitive
161 | description:
162 | name: term_glyph
163 | url: "https://pub.dartlang.org"
164 | source: hosted
165 | version: "1.1.0"
166 | test_api:
167 | dependency: transitive
168 | description:
169 | name: test_api
170 | url: "https://pub.dartlang.org"
171 | source: hosted
172 | version: "0.2.11"
173 | typed_data:
174 | dependency: transitive
175 | description:
176 | name: typed_data
177 | url: "https://pub.dartlang.org"
178 | source: hosted
179 | version: "1.1.6"
180 | vector_math:
181 | dependency: transitive
182 | description:
183 | name: vector_math
184 | url: "https://pub.dartlang.org"
185 | source: hosted
186 | version: "2.0.8"
187 | xml:
188 | dependency: transitive
189 | description:
190 | name: xml
191 | url: "https://pub.dartlang.org"
192 | source: hosted
193 | version: "3.5.0"
194 | sdks:
195 | dart: ">=2.4.0 <3.0.0"
196 |
--------------------------------------------------------------------------------
/lib/home.dart:
--------------------------------------------------------------------------------
1 | import 'package:architect_ui/model.dart';
2 | import 'package:flutter/material.dart';
3 | import 'dart:math';
4 |
5 | class Home extends StatefulWidget {
6 | @override
7 | _HomeState createState() => _HomeState();
8 | }
9 |
10 | class _HomeState extends State {
11 | double pi = 22 / 1260;
12 | int selectedIndex = 0;
13 |
14 | Widget getListItems(ArchitectModel model) {
15 | return Container(
16 | width: 228,
17 | margin: EdgeInsets.only(right: 30),
18 | child: Column(
19 | children: [
20 | Expanded(
21 | flex: 4,
22 | child: Stack(
23 | children: [
24 | Container(
25 | foregroundDecoration: BoxDecoration(
26 | image: DecorationImage(
27 | image: AssetImage("assets/images/${model.imageUrl}"),
28 | fit: BoxFit.cover),
29 | ),
30 | ),
31 | Positioned.directional(
32 | textDirection: TextDirection.ltr,
33 | end: 0,
34 | bottom: 1,
35 | child: ClipPath(
36 | clipper: _Hexagon(),
37 | child: Container(
38 | width: 70,
39 | height: 80,
40 | color: Color(0xFFCD9274),
41 | child: Transform.rotate(
42 | angle: 180 * pi,
43 | child: Center(
44 | child: Icon(
45 | Icons.keyboard_backspace,
46 | size: 37,
47 | color: Color(0xFFFADDC8),
48 | ),
49 | ),
50 | ),
51 | ),
52 | ),
53 | ),
54 | ],
55 | ),
56 | ),
57 | Expanded(
58 | flex: 1,
59 | child: Container(
60 | child: Row(
61 | children: [
62 | Text(
63 | model.name,
64 | maxLines: 1,
65 | overflow: TextOverflow.fade,
66 | style: TextStyle(
67 | fontSize: 32,
68 | color: Color(0xFFfcf0e4),
69 | ),
70 | ),
71 | ],
72 | ),
73 | ),
74 | ),
75 | Expanded(
76 | flex: 2,
77 | child: Container(
78 | child: Center(
79 | child: Text(
80 | model.description,
81 | maxLines: 3,
82 | overflow: TextOverflow.ellipsis,
83 | style: TextStyle(
84 | fontSize: 21,
85 | color: Color(0xFFaacedc),
86 | ),
87 | ),
88 | ),
89 | ),
90 | ),
91 | Expanded(
92 | flex: 1,
93 | child: Container(
94 | child: Row(
95 | crossAxisAlignment: CrossAxisAlignment.start,
96 | children: [
97 | Text(
98 | model.price,
99 | maxLines: 1,
100 | overflow: TextOverflow.ellipsis,
101 | style: TextStyle(
102 | fontSize: 24,
103 | fontWeight: FontWeight.bold,
104 | color: Color(0xFFecdfcf),
105 | ),
106 | ),
107 | ],
108 | ),
109 | ),
110 | ),
111 | SizedBox(height: 18)
112 | ],
113 | ),
114 | );
115 | }
116 |
117 | List iconList = [
118 | Icons.pie_chart_outlined,
119 | Icons.branding_watermark,
120 | Icons.shopping_cart
121 | ];
122 |
123 | Widget getBottomBar(int index) {
124 | return GestureDetector(
125 | onTap: () {
126 | selectedIndex = index;
127 | setState(() {});
128 | },
129 | child: Container(
130 | child: Column(
131 | mainAxisAlignment: MainAxisAlignment.center,
132 | children: [
133 | Icon(
134 | iconList[index],
135 | color: index == selectedIndex
136 | ? Color(0xFFf6b889)
137 | : Color(0xFF568398),
138 | size: 40,
139 | ),
140 | SizedBox(height: 5),
141 | Container(
142 | width: 10,
143 | height: 10,
144 | decoration: BoxDecoration(
145 | color: index == selectedIndex
146 | ? Color(0xFFF6b889)
147 | : Color(0xFF568398),
148 | borderRadius: BorderRadius.circular(20)),
149 | ),
150 | ],
151 | ),
152 | ),
153 | );
154 | }
155 |
156 | @override
157 | Widget build(BuildContext context) {
158 | return MaterialApp(
159 | debugShowCheckedModeBanner: false,
160 | home: Scaffold(
161 | backgroundColor: Color(0xFF406376),
162 | body: Container(
163 | width: double.infinity,
164 | height: double.infinity,
165 | child: Column(
166 | children: [
167 | Expanded(
168 | flex: 1,
169 | child: Padding(
170 | padding: EdgeInsets.symmetric(horizontal: 25.0),
171 | child: Container(
172 | margin: EdgeInsets.only(top: 36),
173 | child: Row(
174 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
175 | crossAxisAlignment: CrossAxisAlignment.center,
176 | children: [
177 | Icon(Icons.settings,
178 | color: Color(0xFFF5B788), size: 32),
179 | Icon(Icons.blur_on, color: Color(0xFFF5B788), size: 32),
180 | ],
181 | ),
182 | ),
183 | ),
184 | ),
185 | Expanded(
186 | flex: 2,
187 | child: Padding(
188 | padding: EdgeInsets.symmetric(horizontal: 25),
189 | child: Column(
190 | children: [
191 | SizedBox(height: 30),
192 | Text(
193 | "Choose you own ready design",
194 | maxLines: 2,
195 | style:
196 | TextStyle(color: Color(0xFFFDF4e8), fontSize: 44),
197 | ),
198 | ],
199 | ),
200 | ),
201 | ),
202 | Expanded(
203 | flex: 5,
204 | child: Padding(
205 | padding: EdgeInsets.only(left: 25),
206 | child: Container(
207 | width: double.infinity,
208 | height: double.infinity,
209 | child: ListView(
210 | scrollDirection: Axis.horizontal,
211 | children: listModel
212 | .toList()
213 | .asMap()
214 | .entries
215 | .map((MapEntry map) {
216 | return getListItems(map.value);
217 | }).toList(),
218 | ),
219 | ),
220 | ),
221 | ),
222 | Expanded(
223 | flex: 1,
224 | child: Container(
225 | color: Color(0xFF223f50),
226 | padding: EdgeInsets.symmetric(horizontal: 55),
227 | child: Row(
228 | mainAxisAlignment: MainAxisAlignment.spaceBetween,
229 | children: iconList.asMap().entries.map((MapEntry map) {
230 | return getBottomBar(map.key);
231 | }).toList()),
232 | ),
233 | ),
234 | ],
235 | ),
236 | ),
237 | ),
238 | );
239 | }
240 | }
241 |
242 | class _Hexagon extends CustomClipper {
243 | double pi = 22 / 1260;
244 | @override
245 | Path getClip(Size size) {
246 | double perpendicular = (size.width / 2) * tan(30 * pi);
247 | double travel = (size.width / 2) / cos(30 * pi);
248 |
249 | final path = Path();
250 |
251 | path.lineTo(size.width / 2, 0);
252 | path.lineTo(0, perpendicular);
253 | path.lineTo(0, perpendicular + travel);
254 | path.lineTo(size.width / 2, 2 * perpendicular + travel);
255 | path.lineTo(size.width, perpendicular + travel);
256 | path.lineTo(size.width, perpendicular);
257 | path.lineTo(size.width / 2, 0);
258 |
259 | path.close();
260 |
261 | return path;
262 | }
263 |
264 | @override
265 | bool shouldReclip(CustomClipper oldClipper) => true;
266 | }
267 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:architect_ui/home.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | void main() => runApp(MyApp());
5 |
6 | class MyApp extends StatelessWidget {
7 | @override
8 | Widget build(BuildContext context) {
9 | return MaterialApp(
10 | title: 'Architect Ui',
11 | debugShowCheckedModeBanner: false,
12 | home: ArchitectUI(),
13 | );
14 | }
15 | }
16 |
17 | class ArchitectUI extends StatefulWidget {
18 | @override
19 | _ArchitectUIState createState() => _ArchitectUIState();
20 | }
21 |
22 | class _ArchitectUIState extends State {
23 | double pi = 22 / 1260;
24 |
25 | /// Make a 3d box with the use of four containers
26 | Widget get3DBox(
27 | {int color1,
28 | int color2,
29 | int color3,
30 | int color4,
31 | int color5,
32 | BoxShadow boxShadow,
33 | double start = 0.0,
34 | double top = 0.0,
35 | scale = 1.0,
36 | double width = double.infinity,
37 | double height = double.infinity}) {
38 | Matrix4 matrix = Matrix4.identity();
39 | matrix.rotateZ(45 * pi);
40 |
41 | return Positioned.directional(
42 | textDirection: TextDirection.ltr,
43 | start: start,
44 | top: top,
45 | child: Transform.scale(
46 | scale: scale,
47 | child: Container(
48 | width: width,
49 | height: height,
50 | color: Colors.transparent,
51 | child: Stack(
52 | children: [
53 | Positioned.directional(
54 | textDirection: TextDirection.ltr,
55 | top: 60,
56 | child: Transform(
57 | transform: Matrix4.skewY(-50 / 100),
58 | child: Container(
59 | width: 110,
60 | height: 120,
61 | color: Color(color1),
62 | ),
63 | ),
64 | ),
65 | Positioned.directional(
66 | textDirection: TextDirection.ltr,
67 | start: 110,
68 | child: Transform(
69 | transform: Matrix4.skewY(50 / 100),
70 | child: Container(
71 | width: 110,
72 | height: 120,
73 | decoration: BoxDecoration(
74 | gradient: LinearGradient(
75 | begin: Alignment.topRight,
76 | end: Alignment.bottomLeft,
77 | colors: [
78 | Color(color2),
79 | Color(color3),
80 | ],
81 | ),
82 | ),
83 | ),
84 | ),
85 | ),
86 | Positioned.directional(
87 | textDirection: TextDirection.ltr,
88 | start: 33,
89 | top: 102,
90 | child: Transform(
91 | transform: Matrix4.rotationX(57 * pi),
92 | origin: Offset(77, 77),
93 | child: Transform(
94 | transform: matrix,
95 | origin: Offset(77, 77),
96 | child: Container(
97 | width: 156,
98 | height: 156,
99 | decoration: BoxDecoration(
100 | boxShadow: [
101 | boxShadow == null
102 | ? BoxShadow(color: Colors.transparent)
103 | : boxShadow,
104 | ],
105 | gradient: LinearGradient(
106 | begin: Alignment.bottomLeft,
107 | end: Alignment.topRight,
108 | colors: [
109 | Color(color4),
110 | Color(color5),
111 | ],
112 | ),
113 | ),
114 | ),
115 | ),
116 | ),
117 | ),
118 | ],
119 | ),
120 | ),
121 | ),
122 | );
123 | }
124 |
125 | @override
126 | Widget build(BuildContext context) {
127 | return Scaffold(
128 | body: Container(
129 | color: Color(0xFFFCE8CD),
130 | width: double.infinity,
131 | height: double.infinity,
132 | child: CustomPaint(
133 | painter: BackgroundPainter(),
134 | child: Container(
135 | child: Column(
136 | children: [
137 | Expanded(
138 | flex: 5,
139 | child: Stack(
140 | children: [
141 | get3DBox(
142 | color1: 0xFF52737F,
143 | color2: 0xFF1B3B46,
144 | color3: 0xFF3B5865,
145 | color4: 0xFF1D353F,
146 | color5: 0xFF28434D,
147 | start: 22,
148 | top: 264,
149 | scale: 0.87,
150 | width: 220,
151 | height: 290,
152 | boxShadow: BoxShadow(
153 | color: Colors.black.withOpacity(0.25),
154 | offset: Offset(22, 0),
155 | blurRadius: 45,
156 | spreadRadius: 0.3,
157 | ),
158 | ),
159 | get3DBox(
160 | color1: 0xFFDAA184,
161 | color2: 0xFF785657,
162 | color3: 0xFFB2826B,
163 | color4: 0xFF72584A,
164 | color5: 0xFF987562,
165 | start: 242,
166 | top: 375,
167 | scale: 0.46,
168 | width: 220,
169 | height: 240),
170 | get3DBox(
171 | color1: 0xFFEACBAC,
172 | color2: 0xFFB28A70,
173 | color3: 0xFFBE997C,
174 | color4: 0xFF9D7D63,
175 | color5: 0xFFDFB38E,
176 | start: 230,
177 | top: -44,
178 | scale: 1.4,
179 | width: 220,
180 | height: 290,
181 | boxShadow: BoxShadow(
182 | color: Colors.grey.withOpacity(0.5),
183 | offset: Offset(22, 0),
184 | blurRadius: 45,
185 | spreadRadius: 0.3,
186 | ),
187 | ),
188 | Positioned.directional(
189 | textDirection: TextDirection.ltr,
190 | start: 40,
191 | top: 500,
192 | child: Container(
193 | width: 250,
194 | child: Text(
195 | "Ready made rooms to go",
196 | maxLines: 2,
197 | overflow: TextOverflow.visible,
198 | style: TextStyle(
199 | color: Color(0xFFFDF4E8), fontSize: 40),
200 | ),
201 | ),
202 | ),
203 | ],
204 | ),
205 | ),
206 | Expanded(
207 | flex: 2,
208 | child: Container(
209 | padding: EdgeInsets.symmetric(horizontal: 40, vertical: 2),
210 | color: Colors.transparent,
211 | child: Column(
212 | children: [
213 | Text(
214 | "Virtual digital showrooms transform your dreams into reality at one touch of screen.",
215 | maxLines: 3,
216 | style:
217 | TextStyle(color: Color(0xFF8CADBC), fontSize: 21),
218 | ),
219 | SizedBox(height: 40),
220 | GestureDetector(
221 | onTap: () {
222 | Navigator.push(
223 | context,
224 | MaterialPageRoute(
225 | builder: (context) => Home()));
226 | },
227 | child: Container(
228 | height: 60,
229 | decoration: BoxDecoration(
230 | borderRadius: BorderRadius.circular(15),
231 | border: Border.all(
232 | color: Color(0xFFF5B788), width: 3)),
233 | child: Row(
234 | mainAxisAlignment: MainAxisAlignment.spaceAround,
235 | children: [
236 | Text(
237 | "Get Started",
238 | style: TextStyle(
239 | color: Color(0xFFF5B788),
240 | fontSize: 28,
241 | ),
242 | ),
243 | Transform.rotate(
244 | angle: 180 * pi,
245 | child: Icon(
246 | Icons.keyboard_backspace,
247 | size: 35,
248 | color: Color(0xFFF5B788),
249 | ),
250 | ),
251 | ],
252 | ),
253 | ),
254 | ),
255 | ],
256 | ),
257 | ),
258 | )
259 | ],
260 | ),
261 | ),
262 | ),
263 | ),
264 | );
265 | }
266 | }
267 |
268 | /// Paints the background inclined lines.
269 | class BackgroundPainter extends CustomPainter {
270 | @override
271 | void paint(Canvas canvas, Size size) {
272 | final paint = Paint();
273 |
274 | paint.color = Color(0xFF2B4A5B);
275 |
276 | var path = Path();
277 |
278 | path.lineTo(0, .21 * size.height);
279 | path.lineTo(0.26 * size.width, .28 * size.height);
280 | path.lineTo(0.26 * size.width, .45 * size.height);
281 | path.lineTo(0.565 * size.width, .521 * size.height);
282 | path.lineTo(0.85 * size.width, .44 * size.height);
283 | path.lineTo(size.width, .475 * size.height);
284 | path.lineTo(size.width, size.height);
285 | path.lineTo(0, size.height);
286 |
287 | path.close();
288 | canvas.drawPath(path, paint);
289 | }
290 |
291 | @override
292 | bool shouldRepaint(CustomPainter oldDelegate) => false;
293 | }
294 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "[]"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright [yyyy] [name of copyright owner]
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------