Skip to content

Commit 0ada54b

Browse files
committed
Updated UI for base info pages, added adaptive layouts, fixed widgets
1 parent dd2561d commit 0ada54b

File tree

7 files changed

+140
-82
lines changed

7 files changed

+140
-82
lines changed

lib/pages/TestPage.dart

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import 'package:flutter/material.dart';
2-
import 'package:threeactions_area/pages/UiTestPage.dart';
32
import 'package:threeactions_area/resources/Resources.dart';
4-
import 'package:threeactions_area/widgets/base/TextContent.dart';
53
import 'package:threeactions_area/widgets/base/TextSubtitle.dart';
64
import 'package:threeactions_area/widgets/base/TextTitle.dart';
75
import 'package:threeactions_area/widgets/cv_elements/EventsBlock.dart';
@@ -138,11 +136,16 @@ class TestPageState extends State {
138136
children: [
139137
EventsBlock(titleColor: AppColors.ContentDarkBlue,),
140138
SizedBox(height: 32.0,),
141-
Row(
142-
mainAxisAlignment: MainAxisAlignment.center,
143-
crossAxisAlignment: CrossAxisAlignment.center,
139+
TextTitle(text: "Work and skills", textColor: AppColors.ContentDarkBlue,),
140+
SizedBox(height: 16.0,),
141+
Wrap(
142+
direction: Axis.horizontal,
143+
alignment: WrapAlignment.center,
144+
crossAxisAlignment: WrapCrossAlignment.center,
145+
spacing: 16.0,
146+
runSpacing: 16.0,
144147
children: [
145-
// SizedBox(width: 60.0,),
148+
WorkExpTimeline(),
146149
SkillsColumn([
147150
SkillItem("Main", ["Android", "Kotlin", "Java", "Flutter"]),
148151
SkillItem("UI", ["Jetpack Compose", "XML"]),
@@ -152,10 +155,9 @@ class TestPageState extends State {
152155
"Architecture", ["Clean", "MVP", "MVVM", "MVI", "Redux", "Multi Module", "SDUI/BDUI"]),
153156
SkillItem("DI", ["Dagger 2", "Koin", "Hilt"]),
154157
SkillItem("Async", ["RxJava 2", "Kotlin Coroutines", "Hilt", "Threads"]),
158+
SkillItem("Soft", ["Public Speaking", "Tech interviews", "Design/Tech review", "Teamwork","Feature leading",]),
155159
SkillItem("Other", ["Python", "Figma",]),
156-
]),
157-
SizedBox(width: 16.0,),
158-
WorkExpTimeline(),
160+
]),
159161
],
160162
)
161163
],

lib/pages/base/BaseInfoPage.dart

Lines changed: 66 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
import 'package:flutter/material.dart';
2-
import 'package:flutter/widgets.dart';
32
import 'package:threeactions_area/resources/Resources.dart';
43
import 'package:threeactions_area/widgets/base/TextTitle.dart';
54
import 'package:threeactions_area/widgets/base/TextTitleBig.dart';
65

7-
import '../../widgets/base/TextSubtitle.dart';
8-
96
class BaseInfoPage extends StatelessWidget {
107
final String title;
118
final String mainImageAsset;
@@ -29,45 +26,94 @@ class BaseInfoPage extends StatelessWidget {
2926

3027
@override
3128
Widget build(BuildContext context) {
29+
// TODO Adaptive feature - remove left-right side bg,
30+
// and set this image as vertical fullscreen bg with
31+
// geometric logo on top (like in mobile version from Figma)
32+
// but with more dimmed brightness
33+
3234
return Scaffold(
3335
backgroundColor: Colors.black,
3436
body: Row(
3537
mainAxisAlignment: MainAxisAlignment.spaceBetween,
3638
crossAxisAlignment: CrossAxisAlignment.center,
3739
children: [
3840
Container(
39-
width: 380.0,
41+
width: 256.0,
4042
padding: EdgeInsets.only(
4143
left: 32.0, top: 32.0, right: 32.0, bottom: 96.0),
4244
decoration: BoxDecoration(
4345
image: DecorationImage(
4446
image: AssetImage(mainImageAsset),
4547
fit: BoxFit.cover,
4648
)),
47-
child: Stack(
48-
children: [
49-
Align(
49+
child: Align(
5050
alignment: Alignment.center,
5151
child: accentFilterColor != null ? ColorFiltered(
5252
colorFilter: ColorFilter.mode(accentFilterColor!, BlendMode.srcATop),
5353
child: Image.asset(logoImageAsset),
5454
) : Image.asset(logoImageAsset)
5555
),
56-
Align(
57-
alignment: Alignment.bottomCenter,
58-
child: TextTitleBig(
59-
text: title,
60-
textColor: accentFilterColor ?? AppColors.ContentWhite,
61-
),
62-
)
63-
],
64-
),
56+
// Stack(
57+
// children: [
58+
// Align(
59+
// alignment: Alignment.center,
60+
// child: accentFilterColor != null ? ColorFiltered(
61+
// colorFilter: ColorFilter.mode(accentFilterColor!, BlendMode.srcATop),
62+
// child: Image.asset(logoImageAsset),
63+
// ) : Image.asset(logoImageAsset)
64+
// ),
65+
// Align(
66+
// alignment: Alignment.bottomCenter,
67+
// child: TextTitleBig(
68+
// text: title,
69+
// textColor: accentFilterColor ?? AppColors.ContentWhite,
70+
// ),
71+
// )
72+
// ],
73+
// ),
6574
),
6675
Expanded(
6776
child: Container(
6877
alignment: Alignment.topLeft,
6978
child: _buildMainContent(content)),
70-
)
79+
),
80+
Transform.flip(
81+
flipX: true,
82+
child: Container(
83+
width: 256.0,
84+
padding: EdgeInsets.only(
85+
left: 32.0, top: 32.0, right: 32.0, bottom: 96.0),
86+
decoration: BoxDecoration(
87+
image: DecorationImage(
88+
image: AssetImage(mainImageAsset),
89+
fit: BoxFit.cover,
90+
)),
91+
child: Align(
92+
alignment: Alignment.center,
93+
child: accentFilterColor != null ? ColorFiltered(
94+
colorFilter: ColorFilter.mode(accentFilterColor!, BlendMode.srcATop),
95+
child: Image.asset(logoImageAsset),
96+
) : Image.asset(logoImageAsset)
97+
)
98+
// Stack( children: [
99+
// Align(
100+
// alignment: Alignment.center,
101+
// child: accentFilterColor != null ? ColorFiltered(
102+
// colorFilter: ColorFilter.mode(accentFilterColor!, BlendMode.srcATop),
103+
// child: Image.asset(logoImageAsset),
104+
// ) : Image.asset(logoImageAsset)
105+
// ),
106+
// Align(
107+
// alignment: Alignment.bottomCenter,
108+
// child: TextTitleBig(
109+
// text: title,
110+
// textColor: accentFilterColor ?? AppColors.ContentWhite,
111+
// ),
112+
// )
113+
// ],
114+
// ),
115+
),
116+
),
71117
],
72118
),
73119
);
@@ -83,13 +129,13 @@ class BaseInfoPage extends StatelessWidget {
83129
alignment: Alignment.bottomCenter,
84130
child: isPaddingEnabled
85131
? Padding(
86-
padding: EdgeInsets.only(top: 32.0),
87-
child: TextTitle(
132+
padding: EdgeInsets.only(top: 64.0),
133+
child: TextTitleBig(
88134
text: subtitle!,
89135
textColor: accentFilterColor ?? AppColors.ContentWhite,
90136
),
91137
)
92-
: TextTitle(
138+
: TextTitleBig(
93139
text: subtitle!,
94140
textColor: accentFilterColor ?? AppColors.ContentWhite,
95141
),

lib/widgets/base/ImageGallery.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ class ImageModel {
1212
String resourcePath;
1313
String title;
1414
String description;
15-
String? goToUrl = null;
15+
String? goToUrl;
1616

1717
ImageModel(
1818
{required this.resourcePath,
1919
required this.title,
2020
required this.description,
21-
this.goToUrl = null});
21+
this.goToUrl});
2222
}
2323

2424
class ImageGallery extends StatefulWidget {
@@ -187,7 +187,7 @@ class SimpleGalleryState extends State with TickerProviderStateMixin {
187187
});
188188
}
189189

190-
Timer? delayedAppear = null;
190+
Timer? delayedAppear;
191191

192192
void _animateShow(int index) {
193193
controllers[index].forward();

lib/widgets/base/SkillsColumn.dart

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
12
import 'package:flutter/material.dart';
2-
import 'package:flutter/widgets.dart';
33

44
import '../../resources/Resources.dart';
55
import 'TextContent.dart';
@@ -21,7 +21,7 @@ class SkillsColumn extends StatelessWidget {
2121
Widget build(BuildContext context) {
2222
return Column(
2323
mainAxisAlignment: MainAxisAlignment.start,
24-
crossAxisAlignment: CrossAxisAlignment.end,
24+
crossAxisAlignment: CrossAxisAlignment.start,
2525
children: _buildRowContent(),
2626
);
2727
}
@@ -42,11 +42,12 @@ class SkillsBlock extends StatelessWidget {
4242
padding: EdgeInsets.only(bottom: 8.0),
4343
child: Column(
4444
mainAxisAlignment: MainAxisAlignment.start,
45-
crossAxisAlignment: CrossAxisAlignment.end,
45+
crossAxisAlignment: CrossAxisAlignment.start,
4646
children: [
4747
TextSubtitle(text: item.name, textColor: AppColors.ContentDarkBlue,),
4848
Wrap(
4949
spacing: 4.0,
50+
runSpacing: 4.0,
5051
children: _buildWrapContent(item.skillsList),
5152
)
5253
],

lib/widgets/cv_elements/EventButton.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'package:flutter/material.dart';
2-
import 'package:flutter/widgets.dart';
32
import 'package:url_launcher/url_launcher_string.dart';
43

54
class EventButton extends StatefulWidget {

lib/widgets/cv_elements/EventsBlock.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import 'package:flutter/material.dart';
2+
import 'package:threeactions_area/widgets/base/TextSubtitle.dart';
3+
import 'package:threeactions_area/widgets/base/TextTitle.dart';
24
import 'package:threeactions_area/widgets/cv_elements/EventButton.dart';
35

46
import '../base/TextContentBig.dart';
@@ -14,7 +16,7 @@ class EventsBlock extends StatelessWidget {
1416
mainAxisAlignment: MainAxisAlignment.start,
1517
crossAxisAlignment: CrossAxisAlignment.center,
1618
children: [
17-
TextContentBig(text: "Speaking", textColor: titleColor,),
19+
TextTitle(text: "Speaking", textColor: titleColor,),
1820
SizedBox(height: 16.0,),
1921
Wrap(
2022
spacing: 8.0,

lib/widgets/cv_elements/WorkExpTimeline.dart

Lines changed: 53 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:flutter/material.dart';
12
import 'package:flutter/widgets.dart';
23

34
import '../../resources/Resources.dart';
@@ -10,66 +11,73 @@ class WorkExpTimeline extends StatelessWidget {
1011
return Padding(
1112
padding: EdgeInsets.only(bottom: 16.0),
1213
child: Row(
13-
mainAxisAlignment: MainAxisAlignment.start,
14+
mainAxisAlignment: MainAxisAlignment.end,
1415
children: [
16+
Column(
17+
mainAxisAlignment: MainAxisAlignment.end,
18+
crossAxisAlignment: CrossAxisAlignment.end,
19+
children: [
20+
TextSubtitle(
21+
text: date,
22+
textColor: AppColors.ContentDarkBlue,
23+
textAlign: TextAlign.end,
24+
),
25+
TextContent(
26+
text: companyInfo,
27+
textColor: AppColors.ContentDarkBlue,
28+
textAlign: TextAlign.end,
29+
),
30+
TextContentMin(
31+
text: description,
32+
textColor: AppColors.ContentDarkBlue,
33+
textAlign: TextAlign.end,
34+
)
35+
],
36+
),
37+
SizedBox(
38+
width: 8.0,
39+
),
1540
Container(
1641
width: 16.0,
1742
height: 2.0,
1843
// color: Colors.white,
1944
color: Color(0xff6EA1A9),
2045
),
21-
SizedBox(
22-
width: 8.0,
23-
),
24-
Column(
25-
mainAxisAlignment: MainAxisAlignment.start,
26-
crossAxisAlignment: CrossAxisAlignment.start,
27-
children: [
28-
TextSubtitle(text: date, textColor: AppColors.ContentDarkBlue,),
29-
TextContent(text: companyInfo, textColor: AppColors.ContentDarkBlue),
30-
TextContentMin(text: description, textColor: AppColors.ContentDarkBlue)
31-
],
32-
)
3346
],
3447
),
3548
);
3649
}
3750

3851
@override
3952
Widget build(BuildContext context) {
40-
return IntrinsicHeight(
41-
child: Row(
42-
mainAxisAlignment: MainAxisAlignment.start,
43-
crossAxisAlignment: CrossAxisAlignment.start,
44-
children: [
45-
Container(
46-
width: 2.0,
47-
// color: Colors.white,
48-
color: Color(0xff6EA1A9),
53+
return IntrinsicWidth(
54+
child: Container(
55+
decoration: BoxDecoration(
56+
border: Border(
57+
right: Divider.createBorderSide(context,
58+
color: Color(0xff6EA1A9), width: 2.0),
4959
),
50-
Column(
51-
mainAxisAlignment: MainAxisAlignment.start,
52-
crossAxisAlignment: CrossAxisAlignment.start,
53-
children: [
54-
_buildExpItem(
55-
"2016-2018",
56-
"HOSTCO - Information Security Analyst",
57-
"Audit and integration of security\nsystems in IT companies"),
58-
_buildExpItem("2018", "ARGIN - Android Developer",
59-
"Augmented reality projects, video/image\ntracking"),
60-
_buildExpItem("2018-2019", "EastWind - Android Developer",
61-
"Custom development, projects in\nbanking, services and marketplaces"),
62-
_buildExpItem(
63-
"2019-2021",
64-
"Home Credit Bank - Middle Android Developer",
65-
"FinTech (financial technology), private\nbanking, marketplace, loan projects"),
66-
_buildExpItem(
67-
"2021 - Current time",
68-
"Skyeng - Senior Android Developer",
69-
"EdTech (educational technology),\ninternational language learning projects"),
70-
],
71-
)
72-
],
60+
),
61+
child: Column(
62+
mainAxisAlignment: MainAxisAlignment.end,
63+
crossAxisAlignment: CrossAxisAlignment.end,
64+
children: [
65+
_buildExpItem(
66+
"2021 - Current time",
67+
"Skyeng - Senior Android Developer",
68+
"EdTech (educational technology),\ninternational language learning projects"),
69+
_buildExpItem(
70+
"2019-2021",
71+
"Home Credit Bank - Middle Android Developer",
72+
"FinTech (financial technology), private\nbanking, marketplace, loan projects"),
73+
_buildExpItem("2018-2019", "EastWind - Android Developer",
74+
"Custom development, projects in\nbanking, services and marketplaces"),
75+
_buildExpItem("2018", "ARGIN - Android Developer",
76+
"Augmented reality projects, video/image\ntracking"),
77+
_buildExpItem("2016-2018", "HOSTCO - Information Security Analyst",
78+
"Audit and integration of security\nsystems in IT companies"),
79+
],
80+
),
7381
),
7482
);
7583
}

0 commit comments

Comments
 (0)