Skip to content

Commit 3cf775f

Browse files
committed
Refactoring, updated base page, added svg support, custom svg icons, updated portfolio page
1 parent 22c74e5 commit 3cf775f

27 files changed

+867
-86
lines changed

assets/img/ic_github.svg

Lines changed: 10 additions & 0 deletions
Loading

assets/img/ic_google.svg

Lines changed: 13 additions & 0 deletions
Loading

assets/img/ic_linkedin.svg

Lines changed: 10 additions & 0 deletions
Loading

assets/img/ic_telegram.svg

Lines changed: 10 additions & 0 deletions
Loading

assets/img/ic_x_twitter.svg

Lines changed: 3 additions & 0 deletions
Loading

lib/main.dart

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
import 'package:flutter/material.dart';
2-
import 'package:threeactions_area/pages/MainPage.dart';
32
import 'package:threeactions_area/pages/MusicReleasesPage.dart';
4-
import 'package:threeactions_area/pages/TestPage.dart';
5-
import 'package:threeactions_area/pages/UiTestPage.dart';
63

74
void main() {
85
runApp(MyApp());

lib/pages/MainPage.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,32 +49,32 @@ class MainPageState extends State<MainPage> {
4949
crossAxisAlignment: CrossAxisAlignment.start,
5050
children: [
5151
SocialButton(
52-
imageUrl:
52+
imagePath:
5353
"https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png",
5454
redirectUrl: "https://github.com/GreyLabsDev",
5555
),
5656
SocialButton(
57-
imageUrl:
57+
imagePath:
5858
"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSXwDJB5CoM0AwKPRHbg4NYNzP6nNBWJ6a1E_MwbkTlDby2KG6lOfoDiL23AcMUuGy05MI&usqp=CAU",
5959
redirectUrl: "https://www.linkedin.com/in/sergey-sh/",
6060
),
6161
SocialButton(
62-
imageUrl:
62+
imagePath:
6363
"http://store-images.s-microsoft.com/image/apps.31997.13510798887167234.6cd52261-a276-49cf-9b6b-9ef8491fb799.30e70ce4-33c5-43d6-9af1-491fe4679377",
6464
redirectUrl: "https://www.instagram.com/sergey.shr/",
6565
),
6666
SocialButton(
67-
imageUrl:
67+
imagePath:
6868
"https://cdn-icons-png.flaticon.com/512/124/124021.png",
6969
redirectUrl: "https://twitter.com/sergey_shr",
7070
),
7171
SocialButton(
72-
imageUrl:
72+
imagePath:
7373
"https://cdna.artstation.com/p/assets/images/images/047/850/148/large/arthur-deleye-artstation-logo.jpg?1648587486",
7474
redirectUrl: "https://www.artstation.com/threeactions",
7575
),
7676
SocialButton(
77-
imageUrl:
77+
imagePath:
7878
"https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Spotify_App_Logo.svg/2048px-Spotify_App_Logo.svg.png",
7979
redirectUrl: "https://open.spotify.com/track/3NHfDEuRhrnpWN5hj5xRhr?si=NoxU-5qfSKebRbE7nXMALw",
8080
)

lib/pages/MusicReleasesPage.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:threeactions_area/resources/Resources.dart';
3-
import 'package:threeactions_area/widgets/music/CoverArtCard.dart';
4-
import 'package:threeactions_area/widgets/music/MusicServiceCard.dart';
3+
import 'package:threeactions_area/widgets/music_widgets/CoverArtCard.dart';
4+
import 'package:threeactions_area/widgets/music_widgets/MusicServiceCard.dart';
55

66
class MusicReleasePage extends StatefulWidget {
77
@override

lib/pages/PortfolioMainPage.dart

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:threeactions_area/widgets/base/SocialButton.dart';
3+
import 'package:threeactions_area/widgets/base/TextContent.dart';
4+
import 'package:threeactions_area/widgets/base/TextContentBig.dart';
5+
import 'package:threeactions_area/widgets/portfolio_widgets/EventsBlock.dart';
6+
import 'package:threeactions_area/widgets/svg_painters/IconGithub.dart';
7+
import 'package:threeactions_area/widgets/svg_painters/IconGoogle.dart';
8+
import 'package:threeactions_area/widgets/svg_painters/IconLinkedIn.dart';
9+
import 'package:threeactions_area/widgets/svg_painters/IconXTwitter.dart';
10+
11+
import '../resources/Resources.dart';
12+
import '../widgets/base/SkillsColumn.dart';
13+
import '../widgets/base/TextTitle.dart';
14+
import '../widgets/portfolio_widgets/WorkExpTimeline.dart';
15+
import 'base/BaseInfoPage.dart';
16+
17+
class PortfolioMainPage extends StatelessWidget {
18+
const PortfolioMainPage({super.key});
19+
20+
@override
21+
Widget build(BuildContext context) {
22+
return Scaffold(
23+
backgroundColor: AppColors.BgDarkBlue,
24+
body: BaseInfoPage(
25+
title: "SKLS",
26+
mainImageAsset: "assets/img/button_bg_skills.png",
27+
logoImageAsset: "assets/img/logo_skills_big.png",
28+
subtitle: "S.SH",
29+
isAllPaddingEnabled: false,
30+
isHorizontalPaddingEabled: true,
31+
accentFilterColor: AppColors.ContentDarkBlue,
32+
bgColor: AppColors.BgDarkBlue,
33+
content: Column(
34+
crossAxisAlignment: CrossAxisAlignment.center,
35+
children: [
36+
SizedBox(
37+
height: 8.0,
38+
),
39+
TextTitle(
40+
text: "Android Developer / Speaker",
41+
textColor: AppColors.ContentDarkBlue,
42+
),
43+
SizedBox(
44+
height: 8.0,
45+
),
46+
TextContentBig(
47+
text:
48+
"Software engeneering and information security\n7 years of software development experience\n9 years IT experience",
49+
textColor: AppColors.ContentDarkBlue,
50+
textAlign: TextAlign.center,
51+
),
52+
SizedBox(
53+
height: 32.0,
54+
),
55+
EventsBlock(
56+
titleColor: AppColors.ContentDarkBlue,
57+
),
58+
SizedBox(
59+
height: 32.0,
60+
),
61+
TextTitle(
62+
text: "Work and skills",
63+
textColor: AppColors.ContentDarkBlue,
64+
),
65+
SizedBox(
66+
height: 16.0,
67+
),
68+
_buildAdaptiveSkillTable(true),
69+
SizedBox(
70+
height: 32.0,
71+
),
72+
TextContentBig(
73+
text: "Social",
74+
textColor: AppColors.ContentDarkBlue,
75+
),
76+
SizedBox(
77+
height:8.0,
78+
),
79+
// https://www.figma.com/community/file/839558611085349133
80+
Row(
81+
mainAxisAlignment: MainAxisAlignment.center,
82+
crossAxisAlignment: CrossAxisAlignment.center,
83+
children: [
84+
Flexible(
85+
flex: 1,
86+
fit: FlexFit.loose,
87+
child: SocialButtonWithContent(redirectUrl: "mailto:[email protected]", child: IconGoogle(color: AppColors.ContentDarkBlue),)
88+
),
89+
Flexible(
90+
flex: 1,
91+
fit: FlexFit.loose,
92+
child: SocialButtonWithContent(redirectUrl: "https://github.com/GreyLabsDev", child: IconGithub(color: AppColors.ContentDarkBlue),)
93+
),
94+
Flexible(
95+
flex: 1,
96+
fit: FlexFit.loose,
97+
child: SocialButtonWithContent(redirectUrl: "https://www.linkedin.com/in/sergey-sh/", child: Iconlinkedin(color: AppColors.ContentDarkBlue),)
98+
),
99+
Flexible(
100+
flex: 1,
101+
fit: FlexFit.loose,
102+
child: SocialButtonWithContent(redirectUrl: "https://twitter.com/sergey_shr", child: IconXTwitter(color: AppColors.ContentDarkBlue),)
103+
),
104+
],
105+
),
106+
SizedBox(
107+
height: 48.0,
108+
),
109+
],
110+
),
111+
),
112+
);
113+
}
114+
}
115+
116+
Widget _buildAdaptiveSkillTable(bool useRow) {
117+
return LayoutBuilder(
118+
builder: (BuildContext context, BoxConstraints constraints) {
119+
bool useDefaultRow = constraints.maxWidth >= 770;
120+
if (useDefaultRow) {
121+
return Row(
122+
mainAxisAlignment: MainAxisAlignment.center,
123+
crossAxisAlignment: CrossAxisAlignment.center,
124+
children: [
125+
Flexible(
126+
flex: 1,
127+
fit: FlexFit.tight,
128+
child: WorkExpTimeline(),
129+
),
130+
Flexible(
131+
flex: 1,
132+
fit: FlexFit.tight,
133+
child: SkillsColumn([
134+
SkillItem("Main", ["Android", "Kotlin", "Java", "Flutter"]),
135+
SkillItem("UI", ["Jetpack Compose", "XML"]),
136+
SkillItem("Data", [
137+
"Realm",
138+
"Room",
139+
"SQL",
140+
"Retrofit",
141+
"GraphQL",
142+
"JSON",
143+
"XML"
144+
]),
145+
SkillItem("Architecture", [
146+
"Clean",
147+
"MVP",
148+
"MVVM",
149+
"MVI",
150+
"Redux",
151+
"Multi Module",
152+
"SDUI/BDUI"
153+
]),
154+
SkillItem("DI", ["Dagger 2", "Koin", "Hilt"]),
155+
SkillItem("Async", ["RxJava 2", "Kotlin Coroutines", "Threads"]),
156+
SkillItem("Soft", [
157+
"Public Speaking",
158+
"Tech interviews",
159+
"Design/Tech review",
160+
"Teamwork",
161+
"Feature leading",
162+
]),
163+
SkillItem("Other", [
164+
"Python",
165+
"Figma",
166+
]),
167+
], 16.0),
168+
)
169+
],
170+
);
171+
} else {
172+
return Wrap(
173+
direction: Axis.horizontal,
174+
alignment: WrapAlignment.center,
175+
spacing: 16.0,
176+
runSpacing: 16.0,
177+
children: [
178+
Flexible(
179+
flex: 1,
180+
fit: FlexFit.tight,
181+
child: WorkExpTimeline(),
182+
),
183+
Flexible(
184+
flex: 2,
185+
fit: FlexFit.loose,
186+
child: SkillsColumn([
187+
SkillItem("Main", ["Android", "Kotlin", "Java", "Flutter"]),
188+
SkillItem("UI", ["Jetpack Compose", "XML"]),
189+
SkillItem("Data", [
190+
"Realm",
191+
"Room",
192+
"SQL",
193+
"Retrofit",
194+
"GraphQL",
195+
"JSON",
196+
"XML"
197+
]),
198+
SkillItem("Architecture", [
199+
"Clean",
200+
"MVP",
201+
"MVVM",
202+
"MVI",
203+
"Redux",
204+
"Multi Module",
205+
"SDUI/BDUI"
206+
]),
207+
SkillItem("DI", ["Dagger 2", "Koin", "Hilt"]),
208+
SkillItem("Async", ["RxJava 2", "Kotlin Coroutines", "Threads"]),
209+
SkillItem("Soft", [
210+
"Public Speaking",
211+
"Tech interviews",
212+
"Design/Tech review",
213+
"Teamwork",
214+
"Feature leading",
215+
]),
216+
SkillItem("Other", [
217+
"Python",
218+
"Figma",
219+
"FreeCAD"
220+
]),
221+
], 32.0),
222+
)
223+
],
224+
);
225+
}
226+
});
227+
}

0 commit comments

Comments
 (0)