Skip to content

Commit 7394e9e

Browse files
committed
Footer Creation
1 parent 7e39ef5 commit 7394e9e

7 files changed

Lines changed: 161 additions & 20 deletions

File tree

assets/images/icon_bug_report.png

527 Bytes
Loading

assets/images/icon_rss_feed.png

1.47 KB
Loading

lib/components/colors.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import 'package:flutter/painting.dart';
22

3-
// STEP 1: Define the color palette. What are the colors used for the website?
3+
// Define the color palette. What are the colors used for the website?
44

55
const Color backgroundColor = Color(0xFF27323A);
66

77
// Text
88
const Color textPrimaryColor = Color(0xFF212529);
99
const Color textTitleColor = Color(0xFF254A76);
10+
const Color textWhiteDarkBackgroundColor = Color(0xFFF8F9FA);
1011
// Link
1112
const Color linkColor = Color(0xFF0175C2);
1213
const Color linkTitleColor = Color(0xFF1967d2);

lib/components/typography.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import 'package:flutter/painting.dart';
33

44
import 'components.dart';
55

6-
// Step 2: Create reuseable text styles (fonts, text sizes, and colors).
6+
//Create reuseable text styles (fonts, text sizes, and colors).
77

88
const String fontFamily = 'Google Sans';
99

@@ -16,3 +16,9 @@ const TextStyle linkTitleTextStyle = TextStyle(
1616

1717
const TextStyle bodyTextStyle = TextStyle(
1818
fontSize: 14, color: textPrimaryColor, height: 1.5, fontFamily: "Roboto");
19+
20+
const TextStyle footerLinkTextStyle = TextStyle(
21+
fontSize: 14,
22+
color: textWhiteDarkBackgroundColor,
23+
height: 1.6,
24+
fontFamily: "Roboto");

lib/main.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,11 @@ class MyApp extends StatelessWidget {
4646
MostPopular(),
4747
TopFlutter(),
4848
TopDart(),
49+
Container(height: 92),
4950
],
5051
),
5152
),
53+
Footer(),
5254
],
5355
),
5456
),

lib/ui/blocks.dart

Lines changed: 149 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ class MenuBar extends StatelessWidget {
3333
visibleWhen: [Condition.smallerThan(name: TABLET)],
3434
child: IconButton(
3535
onPressed: () {},
36-
icon: Icon(Icons.menu, color: Color(0xFFF8F9FA), size: 24),
36+
icon: Icon(Icons.menu,
37+
color: textWhiteDarkBackgroundColor, size: 24),
3738
),
3839
),
3940
ResponsiveVisibility(
@@ -44,7 +45,8 @@ class MenuBar extends StatelessWidget {
4445
padding: EdgeInsets.fromLTRB(0, 8, 0, 8),
4546
child: Text(
4647
'Sign in',
47-
style: TextStyle(fontSize: 14, color: Color(0xFFF8F9FA)),
48+
style: TextStyle(
49+
fontSize: 14, color: textWhiteDarkBackgroundColor),
4850
),
4951
),
5052
),
@@ -59,7 +61,8 @@ class MenuBar extends StatelessWidget {
5961
children: [
6062
Text(
6163
'Help',
62-
style: TextStyle(fontSize: 14, color: Color(0xFFF8F9FA)),
64+
style: TextStyle(
65+
fontSize: 14, color: textWhiteDarkBackgroundColor),
6366
),
6467
Icon(Icons.keyboard_arrow_down,
6568
color: Color(0xFF757575), size: 18),
@@ -260,11 +263,15 @@ class MostPopular extends StatelessWidget {
260263
alignment: Alignment.centerRight,
261264
child: Padding(
262265
padding: EdgeInsets.only(right: 16),
263-
child: Text('VIEW ALL',
264-
style: TextStyle(
265-
color: linkColor,
266-
fontSize: 16,
267-
fontWeight: FontWeight.bold)),
266+
child: GestureDetector(
267+
onTap: () =>
268+
openUrl('https://pub.dev/packages?sort=popularity'),
269+
child: Text('VIEW ALL',
270+
style: TextStyle(
271+
color: linkColor,
272+
fontSize: 16,
273+
fontWeight: FontWeight.bold)),
274+
),
268275
),
269276
),
270277
],
@@ -317,11 +324,14 @@ class TopFlutter extends StatelessWidget {
317324
alignment: Alignment.centerRight,
318325
child: Padding(
319326
padding: EdgeInsets.only(right: 16),
320-
child: Text('VIEW ALL',
321-
style: TextStyle(
322-
color: linkColor,
323-
fontSize: 16,
324-
fontWeight: FontWeight.bold)),
327+
child: GestureDetector(
328+
onTap: () => openUrl('https://pub.dev/flutter/packages'),
329+
child: Text('VIEW ALL',
330+
style: TextStyle(
331+
color: linkColor,
332+
fontSize: 16,
333+
fontWeight: FontWeight.bold)),
334+
),
325335
),
326336
),
327337
],
@@ -394,11 +404,14 @@ class TopDart extends StatelessWidget {
394404
alignment: Alignment.centerRight,
395405
child: Padding(
396406
padding: EdgeInsets.only(right: 16),
397-
child: Text('VIEW ALL',
398-
style: TextStyle(
399-
color: linkColor,
400-
fontSize: 16,
401-
fontWeight: FontWeight.bold)),
407+
child: GestureDetector(
408+
onTap: () => openUrl('https://pub.dev/dart/packages'),
409+
child: Text('VIEW ALL',
410+
style: TextStyle(
411+
color: linkColor,
412+
fontSize: 16,
413+
fontWeight: FontWeight.bold)),
414+
),
402415
),
403416
),
404417
],
@@ -451,3 +464,121 @@ class PackageCard extends StatelessWidget {
451464
);
452465
}
453466
}
467+
468+
class Footer extends StatelessWidget {
469+
EdgeInsetsGeometry linkTextPadding =
470+
const EdgeInsets.symmetric(horizontal: 8);
471+
Widget divider = const SizedBox(
472+
height: 18,
473+
child: const VerticalDivider(
474+
color: textWhiteDarkBackgroundColor,
475+
thickness: 1,
476+
),
477+
);
478+
@override
479+
Widget build(BuildContext context) {
480+
return Container(
481+
width: double.infinity,
482+
color: backgroundColor,
483+
padding: EdgeInsets.fromLTRB(16, 29, 16, 25),
484+
child: Wrap(
485+
alignment: WrapAlignment.center,
486+
runSpacing: 4,
487+
children: [
488+
GestureDetector(
489+
onTap: () => openUrl('https://dart.dev/'),
490+
child: Padding(
491+
padding: linkTextPadding,
492+
child: Text(
493+
'Dart language',
494+
style: footerLinkTextStyle,
495+
),
496+
),
497+
),
498+
divider,
499+
GestureDetector(
500+
onTap: () => openUrl('https://pub.dev/policy'),
501+
child: Padding(
502+
padding: linkTextPadding,
503+
child: Text(
504+
'Policy',
505+
style: footerLinkTextStyle,
506+
),
507+
),
508+
),
509+
divider,
510+
GestureDetector(
511+
onTap: () =>
512+
openUrl('https://www.google.com/intl/en/policies/terms/'),
513+
child: Padding(
514+
padding: linkTextPadding,
515+
child: Text(
516+
'Terms',
517+
style: footerLinkTextStyle,
518+
),
519+
),
520+
),
521+
divider,
522+
GestureDetector(
523+
onTap: () => openUrl('https://pub.dev/security'),
524+
child: Padding(
525+
padding: linkTextPadding,
526+
child: Text(
527+
'Security',
528+
style: footerLinkTextStyle,
529+
),
530+
),
531+
),
532+
divider,
533+
GestureDetector(
534+
onTap: () =>
535+
openUrl('https://www.google.com/intl/en/policies/privacy/'),
536+
child: Padding(
537+
padding: linkTextPadding,
538+
child: Text(
539+
'Privacy',
540+
style: footerLinkTextStyle,
541+
),
542+
),
543+
),
544+
divider,
545+
GestureDetector(
546+
onTap: () => openUrl('https://pub.dev/help'),
547+
child: Padding(
548+
padding: linkTextPadding,
549+
child: Text(
550+
'Help',
551+
style: footerLinkTextStyle,
552+
),
553+
),
554+
),
555+
divider,
556+
Padding(padding: EdgeInsets.only(right: 6)),
557+
GestureDetector(
558+
onTap: () => openUrl('https://pub.dev/feed.atom'),
559+
child: Padding(
560+
padding: EdgeInsets.symmetric(horizontal: 6),
561+
child: ImageIcon(
562+
AssetImage('assets/images/icon_rss_feed.png'),
563+
color: textWhiteDarkBackgroundColor,
564+
size: 20,
565+
),
566+
),
567+
),
568+
GestureDetector(
569+
onTap: () => openUrl(
570+
'https://github.com/dart-lang/pub-dev/issues/new?body=URL%3A+https%3A%2F%2Fpub.dev%2F%0A%0A%3CDescribe+your+issue+or+suggestion+here%3E&title=%3CSummarize+your+issues+here%3E&labels=Area%3A+site+feedback'),
571+
child: Padding(
572+
padding: EdgeInsets.symmetric(horizontal: 6),
573+
child: ImageIcon(
574+
AssetImage('assets/images/icon_bug_report.png'),
575+
color: textWhiteDarkBackgroundColor,
576+
size: 20,
577+
),
578+
),
579+
),
580+
],
581+
),
582+
);
583+
}
584+
}

resources/icon_rss_feed.svg

Lines changed: 1 addition & 0 deletions
Loading

0 commit comments

Comments
 (0)