Skip to content

Commit

Permalink
Merge pull request #8 from ramirezsebas/master
Browse files Browse the repository at this point in the history
  • Loading branch information
unacorbatanegra authored Jan 9, 2024
2 parents bd2fb2a + 8278fed commit faa00d4
Show file tree
Hide file tree
Showing 32 changed files with 726 additions and 442 deletions.
2 changes: 1 addition & 1 deletion .fvm/flutter_sdk
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,5 @@ samples, guidance on mobile development, and a full API reference.
<a href="https://www.flaticon.com/free-icons/instagram-logo" title="instagram logo icons">Instagram logo icons created by Freepik - Flaticon</a>

<a href="https://www.flaticon.com/free-icons/youtube" title="youtube icons">Youtube icons created by Freepik - Flaticon</a>

<a href="https://www.flaticon.com/free-icons/facebook" title="facebook icons">Facebook icons created by Freepik - Flaticon</a>
Binary file added assets/icons/facebook.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/speakers/speaker_5.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/images/team/team_5.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/team/team_8.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
132 changes: 132 additions & 0 deletions lib/app/models/speaker_model.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
import 'package:equatable/equatable.dart';

class SpeakerModel extends Equatable {
final int id;
final String imagePath;
final String name;
final String profession;
final String? talkTitle;
final String? linkedinUrl;
final String? twitterUrl;
final String? youtubeUrl;
final String? facebookUrl;
final String countryEmoji;

const SpeakerModel({
required this.id,
required this.imagePath,
required this.name,
required this.profession,
required this.talkTitle,
required this.linkedinUrl,
required this.twitterUrl,
required this.youtubeUrl,
required this.facebookUrl,
required this.countryEmoji,
});

SpeakerModel copyWith({
int? id,
String? imagePath,
String? name,
String? profession,
String? talkTitle,
String? linkedinUrl,
String? twitterUrl,
String? youtubeUrl,
String? facebookUrl,
String? countryEmoji,
String? l10nCode,
}) {
return SpeakerModel(
id: id ?? this.id,
imagePath: imagePath ?? this.imagePath,
name: name ?? this.name,
profession: profession ?? this.profession,
talkTitle: talkTitle ?? this.talkTitle,
linkedinUrl: linkedinUrl ?? this.linkedinUrl,
twitterUrl: twitterUrl ?? this.twitterUrl,
youtubeUrl: youtubeUrl ?? this.youtubeUrl,
facebookUrl: facebookUrl ?? this.facebookUrl,
countryEmoji: countryEmoji ?? this.countryEmoji,
);
}

@override
List<Object?> get props => [
id,
imagePath,
name,
profession,
talkTitle,
linkedinUrl,
twitterUrl,
youtubeUrl,
facebookUrl,
countryEmoji,
];
}

const List<SpeakerModel> speakers = [
SpeakerModel(
id: 0,
imagePath: 'assets/images/speakers/speaker_3.jpg',
name: 'Carlitos Vargas',
profession: 'Senior Flutter Developer | Banco Basa',
talkTitle: null,
linkedinUrl: 'https://www.linkedin.com/in/kalitodev',
twitterUrl: null,
youtubeUrl: null,
facebookUrl: null,
countryEmoji: '🇵🇾',
),
SpeakerModel(
id: 1,
imagePath: 'assets/images/speakers/speaker_4.jpg',
name: 'María Teresa Samudio González',
profession: 'Software Engineer | Very Good Ventures',
talkTitle: null,
linkedinUrl: 'https://www.linkedin.com/in/maria-teresa-samudio/',
twitterUrl: null,
youtubeUrl: null,
facebookUrl: null,
countryEmoji: '🇵🇾',
),
SpeakerModel(
id: 2,
imagePath: 'assets/images/speakers/speaker_1.png',
name: 'Diego Velasquez',
profession: 'Software Engineer | Google Developer Expert',
talkTitle: null,
linkedinUrl: 'https://www.linkedin.com/in/diegoveloper/',
twitterUrl: 'https://twitter.com/diegoveloper',
youtubeUrl: 'https://www.youtube.com/diegoveloper',
facebookUrl: null,
countryEmoji: '🇵🇪',
),
SpeakerModel(
id: 3,
imagePath: 'assets/images/speakers/speaker_2.jpg',
name: 'Hansy Schmitt',
profession: 'Senior Mobile/Backend Developer',
talkTitle: null,
linkedinUrl: null,
twitterUrl: null,
youtubeUrl: null,
facebookUrl: null,
countryEmoji: '🇵🇪',
),
SpeakerModel(
id: 4,
imagePath: 'assets/images/speakers/speaker_5.jpeg',
name: 'David Nuñez',
profession: 'Senior Mobile Developer',
talkTitle:
'Performance Best Practices: Estrategias y Mejoras Prácticas en Flutter',
linkedinUrl: "https://www.linkedin.com/in/david-rios-dev/",
twitterUrl: null,
youtubeUrl: null,
facebookUrl: "https://www.facebook.com/davidriosdev",
countryEmoji: '🇵🇪',
),
];
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ const team = [
),
Team(
name: 'Nicolas Lopez',
role: 'Flutter Developer',
role: 'Software Engineer',
image: 'assets/images/team/team_4.jpeg',
twitterUrl: "https://twitter.com/unacorbatanegra",
linkedinUrl: null,
githubUrl: "https://github.com/unacorbatanegra",
),
Team(
name: 'Matias Ramirez',
role: 'Flutter Developer',
role: 'Software Developer',
image: 'assets/images/team/team_5.jpeg',
twitterUrl: "https://twitter.com/RamirezMatias03",
linkedinUrl:
Expand All @@ -80,10 +80,18 @@ const team = [
),
Team(
name: 'Matias Casco',
role: 'Flutter Developer',
role: 'Software Developer',
image: 'assets/images/team/team_7.jpg',
twitterUrl: null,
linkedinUrl: null,
linkedinUrl: "https://www.linkedin.com/in/matias-casco-lobos-b3b491177/",
githubUrl: null,
),
Team(
name: 'Leonardo Paredes',
role: 'Product Designer',
image: 'assets/images/team/team_8.jpeg',
twitterUrl: null,
linkedinUrl: "https://www.linkedin.com/in/leo-paredest/",
githubUrl: null,
),
];
20 changes: 20 additions & 0 deletions lib/app/notifiers/language_change_notifier.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'package:flutter/widgets.dart';

class LanguageChangeNotifier extends ChangeNotifier {
Locale _locale;

LanguageChangeNotifier({
Locale locale = const Locale('es'),
}) : _locale = locale;

Locale get locale => _locale;

bool get isSpanish => _locale.languageCode == 'es';

String get languageText => isSpanish ? 'ES' : 'EN';

void changeLocale(Locale locale) {
_locale = locale;
notifyListeners();
}
}
107 changes: 107 additions & 0 deletions lib/app/pages/landing_page.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
import 'package:flutter/material.dart';
import 'package:flutter_conf_web/app/models/speaker_model.dart';
import 'package:flutter_conf_web/app/sections/speakers_section.dart';
import 'package:flutter_conf_web/app/widgets/about_section.dart';
import 'package:flutter_conf_web/app/widgets/animated_banner_widget.dart';
import 'package:flutter_conf_web/app/widgets/custom_drawer.dart';
import 'package:flutter_conf_web/app/widgets/footer.dart';
import 'package:flutter_conf_web/app/widgets/navigation_bar.dart';
import 'package:flutter_conf_web/l10n/l10n.dart';

class LandingPage extends StatelessWidget {
final scaffoldKey = GlobalKey<ScaffoldState>();
final scrollController = ScrollController();
final homeKey = GlobalKey();
final aboutKey = GlobalKey();
final speakersKey = GlobalKey();
final sponsorsKey = GlobalKey();

LandingPage({super.key});

void scrollToKey(GlobalKey key) {
final RenderBox? renderBox =
key.currentContext?.findRenderObject() as RenderBox?;
final position = renderBox?.localToGlobal(Offset.zero);
scrollController.animateTo(
position?.dy ?? 0,
duration: const Duration(milliseconds: 500),
curve: Curves.easeInOut,
);
}

void scrollToTop() {
scrollController.animateTo(
0,
duration: const Duration(milliseconds: 500),
curve: Curves.easeInOut,
);
}

@override
Widget build(BuildContext context) {
final l10n = context.l10n;

return Scaffold(
key: scaffoldKey,
endDrawer: CustomDrawer(
scaffoldKey: scaffoldKey,
onScrollToHome: () {
scrollToTop();
},
onScrollToAbout: () {
scrollToKey(aboutKey);
},
onScrollToSpeakers: () {
scrollToKey(speakersKey);
},
// onScollToSponsors: () {
// scrollToKey(sponsorsKey);
// },
),
body: Column(
children: [
CustomNavigationBar(
scaffoldKey: scaffoldKey,
onScrollToHome: () {
scrollToTop();
},
onScrollToAbout: () {
scrollToKey(aboutKey);
},
onScrollToSpeakers: () {
scrollToKey(speakersKey);
},
// onScollToSponsors: () {
// scrollToKey(sponsorsKey);
// },
),
Expanded(
child: ListView(
controller: scrollController,
children: [
const AnimatedBannerWidget(),
const SizedBox(height: 50),
AboutSection(
key: aboutKey,
),
const SizedBox(height: 50),
Text(
l10n.speakers,
key: speakersKey,
style: const TextStyle(
fontSize: 36,
fontWeight: FontWeight.bold,
),
textAlign: TextAlign.center,
),
const SpeakersSection(speakers: speakers),
const SizedBox(height: 50),
],
),
),
const Footer(),
],
),
);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flutter_conf_web/feature/landing/models/team_model.dart';
import 'package:flutter_conf_web/app/models/team_model.dart';
import 'package:flutter_conf_web/gen/assets.gen.dart';
import 'package:go_router/go_router.dart';
import 'package:url_launcher/url_launcher.dart';
Expand Down
Loading

0 comments on commit faa00d4

Please sign in to comment.