├── .gitignore
├── .metadata
├── .vscode
└── launch.json
├── README.md
├── analysis_options.yaml
├── analysis_options.yml
├── assets
├── fonts
│ ├── NotoSans-Bold.ttf
│ ├── Roboto-Bold.ttf
│ ├── Roboto-Medium.ttf
│ └── Roboto-Regular.ttf
├── images
│ ├── background
│ │ ├── bg.png
│ │ └── flutterando_logo.png
│ ├── box_n_likes.png
│ ├── brazilian_cases
│ │ ├── bancoBs2.jpg
│ │ ├── banco_bs2.png
│ │ ├── celcoin.png
│ │ ├── globo.jpg
│ │ ├── globo.png
│ │ ├── ifood.png
│ │ ├── nubank.jpg
│ │ ├── nubank.png
│ │ ├── quintoAndar.png
│ │ └── suaMusica.png
│ ├── co_organizers
│ │ ├── adby_circle.png
│ │ ├── alvaro_circle.png
│ │ ├── deivinho_circle.png
│ │ ├── fausto_circle.png
│ │ ├── gabriela.png
│ │ ├── ian_circle.png
│ │ ├── jeh2_circle.png
│ │ ├── kelven_galvao.png
│ │ ├── leticia_circle.png
│ │ ├── mateus_felipe_circle.png
│ │ ├── max.png
│ │ ├── renato_mota_circle.png
│ │ ├── stell_circle.png
│ │ ├── taua.png
│ │ ├── tiagosito.png
│ │ └── toshi_circle.png
│ ├── founders
│ │ ├── bwolf_circle.png
│ │ ├── david_araujo_circle.png
│ │ ├── jacob_circle.png
│ │ └── mateus_perez_circle.png
│ ├── icons
│ │ └── svgs
│ │ │ ├── discord.svg
│ │ │ ├── facebook.svg
│ │ │ ├── instagram.svg
│ │ │ ├── linkedin.svg
│ │ │ ├── medium.svg
│ │ │ ├── meetup.svg
│ │ │ ├── package.png
│ │ │ ├── package.svg
│ │ │ ├── telegram.svg
│ │ │ ├── twitter.svg
│ │ │ └── youtube.svg
│ ├── last videos
│ │ ├── context.jpg
│ │ ├── dart.jpg
│ │ ├── designPatter.jpg
│ │ ├── ffi.jpg
│ │ ├── flutter.jpg
│ │ ├── jacob.jpg
│ │ ├── jacob2.jpg
│ │ ├── jacob3.jpg
│ │ ├── jacob4.jpg
│ │ ├── jacob_experiencia.jpg
│ │ ├── realidade_aumentada.jpg
│ │ └── valuenotifier.jpg
│ ├── logo-horizontal-big.png
│ ├── logo-horizontal.png
│ ├── logo-symbol.png
│ ├── meetups
│ │ ├── arquitetura_boas_praticas.jpeg
│ │ ├── async_await.jpeg
│ │ ├── codigo_aberto.jpeg
│ │ ├── ddd_com_modular.jpeg
│ │ ├── flutter_brasil.png
│ │ ├── latam.jpeg
│ │ ├── latam_2_edicao.jpeg
│ │ ├── modular_slidy.jpg
│ │ └── value_notifier.png
│ ├── packages
│ │ ├── asuka.svg
│ │ ├── flutter_modular.svg
│ │ ├── flutter_triple.svg
│ │ ├── flutterando_analysis.svg
│ │ ├── hasura_connect.svg
│ │ ├── koin.svg
│ │ ├── slidy.svg
│ │ └── uno.svg
│ └── partners
│ │ ├── adventista.png
│ │ ├── f-team-logo--branco.png
│ │ ├── fteam_icon.png
│ │ ├── google_startups.png
│ │ ├── pupz.png
│ │ └── quem_contrata.png
└── lang
│ ├── en_US.json
│ └── pt_BR.json
├── data
├── brazilian_cases_data.json
├── coorganizers_data.json
├── followers_number.json
├── founders_data.json
├── meetups_data.json
├── packages_data.json
├── partner_communities.json
├── partners_data.json
└── youtube_data.json
├── lib
├── app
│ ├── app_module.dart
│ ├── app_widget.dart
│ ├── modules
│ │ └── home
│ │ │ ├── domain
│ │ │ ├── entities
│ │ │ │ ├── result_brazilian_cases.dart
│ │ │ │ ├── result_co_organizers.dart
│ │ │ │ ├── result_followers_numbers.dart
│ │ │ │ ├── result_founders.dart
│ │ │ │ ├── result_insta_followers.dart
│ │ │ │ ├── result_meetups.dart
│ │ │ │ ├── result_package.dart
│ │ │ │ ├── result_partner_communities.dart
│ │ │ │ ├── result_partners.dart
│ │ │ │ ├── result_youtube.dart
│ │ │ │ └── send_contact
│ │ │ │ │ ├── contact.dart
│ │ │ │ │ └── result_contact.dart
│ │ │ ├── errors
│ │ │ │ ├── errors.dart
│ │ │ │ ├── errors_send_contact.dart
│ │ │ │ └── get_insta_followers_error.dart
│ │ │ ├── repositories
│ │ │ │ ├── brazilian_cases_repository.dart
│ │ │ │ ├── co_organizers_repository.dart
│ │ │ │ ├── founders_repository.dart
│ │ │ │ ├── insta_followers_repository.dart
│ │ │ │ ├── meetups_repository.dart
│ │ │ │ ├── packages_repository.dart
│ │ │ │ ├── partner_communities_repository.dart
│ │ │ │ ├── partners_repository.dart
│ │ │ │ ├── send_contact_repository.dart
│ │ │ │ └── youtube_repository.dart
│ │ │ └── usecases
│ │ │ │ ├── get_brazilian_cases.dart
│ │ │ │ ├── get_co_organizers.dart
│ │ │ │ ├── get_follower_numbers.dart
│ │ │ │ ├── get_founders.dart
│ │ │ │ ├── get_insta_followers.dart
│ │ │ │ ├── get_meetups.dart
│ │ │ │ ├── get_packages.dart
│ │ │ │ ├── get_partner_communities.dart
│ │ │ │ ├── get_partners.dart
│ │ │ │ ├── get_youtube.dart
│ │ │ │ └── send_contact.dart
│ │ │ ├── external
│ │ │ ├── datasources
│ │ │ │ ├── brazilian_cases_remote_datasource.dart
│ │ │ │ ├── co_organizers_remote_datasource.dart
│ │ │ │ ├── founders_remote_datasource.dart
│ │ │ │ ├── insta_followers_datasource.dart
│ │ │ │ ├── meetups_remote_datasource.dart
│ │ │ │ ├── packages_remote_datasource.dart
│ │ │ │ ├── partner_communities_remote_datasource.dart
│ │ │ │ ├── partners_remote_datasource.dart
│ │ │ │ ├── send_contact_server_datasource.dart
│ │ │ │ └── youtube_remote_datasource.dart
│ │ │ └── mappers
│ │ │ │ ├── contact_mapper.dart
│ │ │ │ ├── partner_communities_mapper.dart
│ │ │ │ ├── result_brazilian_cases_mapper.dart
│ │ │ │ ├── result_co_organizers_mapper.dart
│ │ │ │ ├── result_founders_mapper.dart
│ │ │ │ ├── result_insta_followers_mapper.dart
│ │ │ │ ├── result_meetups_mapper.dart
│ │ │ │ ├── result_packages_mapper.dart
│ │ │ │ ├── result_partners_mapper.dart
│ │ │ │ └── result_youtube_mapper.dart
│ │ │ ├── home_controller.dart
│ │ │ ├── home_module.dart
│ │ │ ├── home_page.dart
│ │ │ ├── infra
│ │ │ ├── datasources
│ │ │ │ ├── brazilian_cases_datasource.dart
│ │ │ │ ├── co_organizers_datasource.dart
│ │ │ │ ├── founders_datasource.dart
│ │ │ │ ├── insta_followers_datasource.dart
│ │ │ │ ├── meetups_datasource.dart
│ │ │ │ ├── packages_datasource.dart
│ │ │ │ ├── partner_communities_datasource.dart
│ │ │ │ ├── partners_datasource.dart
│ │ │ │ ├── send_contact_datasource.dart
│ │ │ │ └── youtube_datasource.dart
│ │ │ └── repositories
│ │ │ │ ├── brazilian_cases_repository_impl.dart
│ │ │ │ ├── co_organizers_repository_impl.dart
│ │ │ │ ├── founders_repository_impl.dart
│ │ │ │ ├── insta_followers_repository_impl.dart
│ │ │ │ ├── meetups_repository_impl.dart
│ │ │ │ ├── packages_repository_impl.dart
│ │ │ │ ├── partner_communities_repository.impl.dart
│ │ │ │ ├── partners_repository_impl.dart
│ │ │ │ ├── send_contact_repository_impl.dart
│ │ │ │ └── youtube_repository_impl.dart
│ │ │ └── widgets
│ │ │ ├── brazilian_cases
│ │ │ ├── brazilian_cases_controller.dart
│ │ │ ├── brazilian_cases_widget.dart
│ │ │ └── widgets
│ │ │ │ └── brazilian_case_item.dart
│ │ │ ├── co_organizers
│ │ │ ├── co_organizers_store.dart
│ │ │ ├── co_organizers_widget.dart
│ │ │ └── widgets
│ │ │ │ └── co_organizer_item.dart
│ │ │ ├── footer
│ │ │ ├── contact_form
│ │ │ │ ├── contact_form.dart
│ │ │ │ └── widgets
│ │ │ │ │ ├── contact_field.dart
│ │ │ │ │ └── send_button.dart
│ │ │ ├── follow_us
│ │ │ │ ├── follow_us.dart
│ │ │ │ └── widgets
│ │ │ │ │ └── social_networks.dart
│ │ │ ├── footer.dart
│ │ │ └── footer_controller.dart
│ │ │ ├── founders
│ │ │ ├── founders_store.dart
│ │ │ ├── founders_widget.dart
│ │ │ └── widgets
│ │ │ │ └── founder_item.dart
│ │ │ ├── header
│ │ │ ├── header_store.dart
│ │ │ ├── header_widget.dart
│ │ │ └── widgets
│ │ │ │ └── header_social_media.dart
│ │ │ ├── latest_channel_videos
│ │ │ ├── latest_channel_videos_store.dart
│ │ │ ├── latest_channel_videos_widget.dart
│ │ │ └── widgets
│ │ │ │ └── channel_video_tile.dart
│ │ │ ├── latest_meetups
│ │ │ ├── latest_meetups_store.dart
│ │ │ ├── latest_meetups_widget.dart
│ │ │ └── widgets
│ │ │ │ └── meetup_tile.dart
│ │ │ ├── navbar
│ │ │ ├── navbar_controller.dart
│ │ │ └── navbar_widget.dart
│ │ │ ├── packages
│ │ │ ├── packages_store.dart
│ │ │ ├── packages_widget.dart
│ │ │ └── widgets
│ │ │ │ ├── add_package.dart
│ │ │ │ └── package_tile.dart
│ │ │ ├── partner_communities
│ │ │ ├── partner_communities_controller.dart
│ │ │ ├── partner_communities_widget.dart
│ │ │ └── widgets
│ │ │ │ └── partner_communities_item.dart
│ │ │ └── partners
│ │ │ ├── partners_store.dart
│ │ │ ├── partners_widget.dart
│ │ │ └── widgets
│ │ │ └── partner_logo.dart
│ ├── shared_module.dart
│ └── utils
│ │ ├── colors
│ │ └── colors.dart
│ │ ├── errors
│ │ └── http_error.dart
│ │ ├── grids
│ │ ├── custom_scroll_behavior.dart
│ │ └── number_grid_row_items_by_screen_size.dart
│ │ ├── icons
│ │ └── icons.dart
│ │ ├── images
│ │ └── images.dart
│ │ ├── screen
│ │ └── screen_size.dart
│ │ ├── service
│ │ └── http_service.dart
│ │ ├── text_styles
│ │ └── text_styles.dart
│ │ ├── url_launcher
│ │ └── urls.dart
│ │ ├── validations
│ │ └── validations.dart
│ │ └── widgets
│ │ ├── alert
│ │ ├── alert.dart
│ │ └── alert_animate.dart
│ │ └── scroll_bar
│ │ └── scroll_bar_widget.dart
└── main.dart
├── pubspec.lock
├── pubspec.yaml
├── test
├── app
│ ├── app_controller_test.dart
│ ├── mock
│ │ ├── brazilian_cases_data_mock.dart
│ │ ├── co_organizers_data_mock.dart
│ │ ├── meetups_data_mock.dart
│ │ ├── packages_data_mock.dart
│ │ ├── partners_data_mock.dart
│ │ └── youtube_data_mock.dart
│ └── modules
│ │ └── home
│ │ ├── domain
│ │ └── usecases
│ │ │ ├── get_brazilian_cases_test.dart
│ │ │ ├── get_co_organizers_test.dart
│ │ │ ├── get_meetups_test.dart
│ │ │ ├── get_packages_test.dart
│ │ │ ├── get_partners_test.dart
│ │ │ ├── get_youtube_test.dart
│ │ │ └── send_contact_test.dart
│ │ ├── external
│ │ └── datasources
│ │ │ ├── brazilian_cases_remote_datasource_test.dart
│ │ │ ├── co_organizers_remote_datasource_test.dart
│ │ │ ├── meetups_remote_datasource_test.dart
│ │ │ ├── packages_remote_datasource_test.dart
│ │ │ ├── partners_remote_datasource_test.dart
│ │ │ ├── send_contact_server_datasource_test.dart
│ │ │ └── youtube_remote_datasource_test.dart
│ │ ├── home_controller_test.dart
│ │ ├── home_module_test.dart
│ │ ├── home_page_test.dart
│ │ ├── infra
│ │ └── repositories
│ │ │ ├── brazilian_cases_repository_test.dart
│ │ │ ├── co_organizers_repository_test.dart
│ │ │ ├── meetups_repository_test.dart
│ │ │ ├── packages_repository_test.dart
│ │ │ ├── partners_repository_test.dart
│ │ │ ├── send_contact_repository_test.dart
│ │ │ └── youtube_repository_test.dart
│ │ └── widgets
│ │ ├── brazilian_cases
│ │ ├── brazilian_cases_controller_test.dart
│ │ └── brazilian_cases_widget_test.dart
│ │ ├── header
│ │ ├── header_controller_test.dart
│ │ └── header_widget_test.dart
│ │ ├── latest_channel_videos
│ │ ├── latest_channel_videos_controller_test.dart
│ │ └── latest_channel_videos_widget_test.dart
│ │ ├── latest_meetups
│ │ ├── latest_meetups_controller_test.dart
│ │ └── latest_meetups_widget_test.dart
│ │ ├── navbar
│ │ ├── navbar_controller_test.dart
│ │ └── navbar_widget_test.dart
│ │ ├── packages
│ │ ├── packages_controller_test.dart
│ │ └── packages_widget_test.dart
│ │ └── partners
│ │ ├── partners_controller_test.dart
│ │ └── partners_widget_test.dart
└── widget_test.dart
├── the analysis_options.yml
├── web
├── favicon.png
├── icons
│ ├── Icon-192.png
│ ├── Icon-512.png
│ ├── Icon-maskable-192.png
│ └── Icon-maskable-512.png
├── index.html
└── manifest.json
└── windows
├── .gitignore
├── CMakeLists.txt
├── flutter
├── CMakeLists.txt
├── generated_plugin_registrant.cc
├── generated_plugin_registrant.h
└── generated_plugins.cmake
└── runner
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── resources
└── app_icon.ico
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
/.gitignore:
--------------------------------------------------------------------------------
1 | # Slidy History Files
2 | .slidy/
3 | .fvm/
4 | .vscode/
5 |
6 | # Miscellaneous
7 | *.class
8 | *.log
9 | *.pyc
10 | *.swp
11 | .DS_Store
12 | .atom/
13 | .buildlog/
14 | .history
15 | .env
16 | .svn/
17 | .pubspec.lock
18 |
19 |
20 | # IntelliJ related
21 | *.iml
22 | *.ipr
23 | *.iws
24 | .idea/
25 |
26 | # The .vscode folder contains launch configuration and tasks you configure in
27 | # VS Code which you may wish to be included in version control, so this line
28 | # is commented out by default.
29 | #.vscode/
30 |
31 | # Flutter/Dart/Pub related
32 | **/doc/api/
33 | **/ios/Flutter/.last_build_id
34 | .dart_tool/
35 | .flutter-plugins
36 | .flutter-plugins-dependencies
37 | .packages
38 | .pub-cache/
39 | .pub/
40 | /build/
41 |
42 | # Web related
43 |
44 | # Symbolication related
45 | app.*.symbols
46 |
47 | # Obfuscation related
48 | app.*.map.json
49 |
50 | # Android Studio will place build artifacts here
51 | /android/app/debug
52 | /android/app/profile
53 | /android/app/release
54 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819"
8 | channel: "stable"
9 |
10 | project_type: app
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
17 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
18 | - platform: android
19 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
20 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
21 | - platform: ios
22 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
23 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
24 | - platform: linux
25 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
26 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
27 | - platform: macos
28 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
29 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
30 | - platform: web
31 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
32 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
33 | - platform: windows
34 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
35 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
36 |
37 | # User provided section
38 |
39 | # List of Local paths (relative to this file) that should be
40 | # ignored by the migrate tool.
41 | #
42 | # Files that are not part of the templates will be ignored by default.
43 | unmanaged_files:
44 | - 'lib/main.dart'
45 | - 'ios/Runner.xcodeproj/project.pbxproj'
46 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "site",
9 | "request": "launch",
10 | "type": "dart",
11 | "args": [
12 | "--web-renderer","html"
13 | ]
14 | }
15 | ]
16 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # flutterando
2 |
3 | A new Flutter project.
4 |
5 | ## Getting Started
6 |
7 | This project is a starting point for a Flutter application.
8 |
9 | A few resources to get you started if this is your first Flutter project:
10 |
11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
13 |
14 | For help getting started with Flutter, view our
15 | [online documentation](https://flutter.dev/docs), which offers tutorials,
16 | samples, guidance on mobile development, and a full API reference.
17 |
18 | ## .env
19 | Dont Forget to configure your .env file :)) remove the .example extension name and set your env vars
20 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | include: package:flutter_lints/flutter.yaml
11 |
12 | linter:
13 | # The lint rules applied to this project can be customized in the
14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
15 | # included above or to enable additional rules. A list of all available lints
16 | # and their documentation is published at https://dart.dev/lints.
17 | #
18 | # Instead of disabling a lint rule for the entire project in the
19 | # section below, it can also be suppressed for a single line of code
20 | # or a specific dart file by using the `// ignore: name_of_lint` and
21 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
22 | # producing the lint.
23 | rules:
24 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
25 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
26 |
27 | # Additional information about this file can be found at
28 | # https://dart.dev/guides/language/analysis-options
29 |
--------------------------------------------------------------------------------
/analysis_options.yml:
--------------------------------------------------------------------------------
1 | analyzer:
2 | - enable-experiment:
3 | - non-nullable
--------------------------------------------------------------------------------
/assets/fonts/NotoSans-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/fonts/NotoSans-Bold.ttf
--------------------------------------------------------------------------------
/assets/fonts/Roboto-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/fonts/Roboto-Bold.ttf
--------------------------------------------------------------------------------
/assets/fonts/Roboto-Medium.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/fonts/Roboto-Medium.ttf
--------------------------------------------------------------------------------
/assets/fonts/Roboto-Regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/fonts/Roboto-Regular.ttf
--------------------------------------------------------------------------------
/assets/images/background/bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/background/bg.png
--------------------------------------------------------------------------------
/assets/images/background/flutterando_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/background/flutterando_logo.png
--------------------------------------------------------------------------------
/assets/images/box_n_likes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/box_n_likes.png
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/bancoBs2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/bancoBs2.jpg
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/banco_bs2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/banco_bs2.png
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/celcoin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/celcoin.png
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/globo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/globo.jpg
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/globo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/globo.png
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/ifood.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/ifood.png
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/nubank.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/nubank.jpg
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/nubank.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/nubank.png
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/quintoAndar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/quintoAndar.png
--------------------------------------------------------------------------------
/assets/images/brazilian_cases/suaMusica.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/brazilian_cases/suaMusica.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/adby_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/adby_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/alvaro_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/alvaro_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/deivinho_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/deivinho_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/fausto_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/fausto_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/gabriela.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/gabriela.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/ian_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/ian_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/jeh2_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/jeh2_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/kelven_galvao.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/kelven_galvao.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/leticia_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/leticia_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/mateus_felipe_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/mateus_felipe_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/max.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/max.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/renato_mota_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/renato_mota_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/stell_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/stell_circle.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/taua.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/taua.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/tiagosito.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/tiagosito.png
--------------------------------------------------------------------------------
/assets/images/co_organizers/toshi_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/co_organizers/toshi_circle.png
--------------------------------------------------------------------------------
/assets/images/founders/bwolf_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/founders/bwolf_circle.png
--------------------------------------------------------------------------------
/assets/images/founders/david_araujo_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/founders/david_araujo_circle.png
--------------------------------------------------------------------------------
/assets/images/founders/jacob_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/founders/jacob_circle.png
--------------------------------------------------------------------------------
/assets/images/founders/mateus_perez_circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/founders/mateus_perez_circle.png
--------------------------------------------------------------------------------
/assets/images/icons/svgs/discord.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/svgs/facebook.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/svgs/instagram.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/svgs/linkedin.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/svgs/package.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/icons/svgs/package.png
--------------------------------------------------------------------------------
/assets/images/icons/svgs/telegram.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/svgs/twitter.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/icons/svgs/youtube.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/last videos/context.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/context.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/dart.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/dart.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/designPatter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/designPatter.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/ffi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/ffi.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/flutter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/flutter.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/jacob.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/jacob.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/jacob2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/jacob2.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/jacob3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/jacob3.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/jacob4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/jacob4.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/jacob_experiencia.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/jacob_experiencia.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/realidade_aumentada.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/realidade_aumentada.jpg
--------------------------------------------------------------------------------
/assets/images/last videos/valuenotifier.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/last videos/valuenotifier.jpg
--------------------------------------------------------------------------------
/assets/images/logo-horizontal-big.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/logo-horizontal-big.png
--------------------------------------------------------------------------------
/assets/images/logo-horizontal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/logo-horizontal.png
--------------------------------------------------------------------------------
/assets/images/logo-symbol.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/logo-symbol.png
--------------------------------------------------------------------------------
/assets/images/meetups/arquitetura_boas_praticas.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/meetups/arquitetura_boas_praticas.jpeg
--------------------------------------------------------------------------------
/assets/images/meetups/async_await.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/meetups/async_await.jpeg
--------------------------------------------------------------------------------
/assets/images/meetups/codigo_aberto.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/meetups/codigo_aberto.jpeg
--------------------------------------------------------------------------------
/assets/images/meetups/ddd_com_modular.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/meetups/ddd_com_modular.jpeg
--------------------------------------------------------------------------------
/assets/images/meetups/flutter_brasil.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/meetups/flutter_brasil.png
--------------------------------------------------------------------------------
/assets/images/meetups/latam.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/meetups/latam.jpeg
--------------------------------------------------------------------------------
/assets/images/meetups/latam_2_edicao.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/meetups/latam_2_edicao.jpeg
--------------------------------------------------------------------------------
/assets/images/meetups/modular_slidy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/meetups/modular_slidy.jpg
--------------------------------------------------------------------------------
/assets/images/meetups/value_notifier.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/meetups/value_notifier.png
--------------------------------------------------------------------------------
/assets/images/packages/asuka.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/packages/flutter_modular.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/packages/flutter_triple.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/packages/flutterando_analysis.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/packages/hasura_connect.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/packages/koin.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/packages/slidy.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/packages/uno.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/partners/adventista.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/partners/adventista.png
--------------------------------------------------------------------------------
/assets/images/partners/f-team-logo--branco.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/partners/f-team-logo--branco.png
--------------------------------------------------------------------------------
/assets/images/partners/fteam_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/partners/fteam_icon.png
--------------------------------------------------------------------------------
/assets/images/partners/google_startups.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/partners/google_startups.png
--------------------------------------------------------------------------------
/assets/images/partners/pupz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/partners/pupz.png
--------------------------------------------------------------------------------
/assets/images/partners/quem_contrata.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Flutterando/website/76247d8290c5229b52cec58e249f79ba4a799d05/assets/images/partners/quem_contrata.png
--------------------------------------------------------------------------------
/assets/lang/en_US.json:
--------------------------------------------------------------------------------
1 | {
2 | "title_header": "The biggest Flutter community of Brazil",
3 | "subtitle_header": "Flutterando is the largest Flutter community in Brazil. Think about Flutter, think about Flutterando. Be part of our community!",
4 | "title_meetups": "Last meetups",
5 | "subtitle_meetups": "Keep an eye on our last meetings",
6 | "title_video_channel":"Latest channel videos",
7 | "subtitle_video_channel":"Stay on top of our latest content",
8 | "title_coorganizers":"Organization",
9 | "subtitle_coorganizers":"Know the team that makes the community happen",
10 | "title_packages":"Community Packages",
11 | "subtitle_packages":"Download the Community Packages",
12 | "button_packages":"Access",
13 | "title_cases":"Brazilian Cases",
14 | "subtitle_cases":"See how Brazilian companies are having success with Flutter in their aplications",
15 | "title_partner_communities":"Partner Communities",
16 | "subtitle_partner_communities":"View Brazilian Flutter Communities",
17 | "button_cases": "See More",
18 | "title_partners":"Partners",
19 | "subtitle_partners":"These are the companies that support our community",
20 | "form_title":"Contact us",
21 | "form_name":"Name",
22 | "form_email":"Email",
23 | "form_your_message":"Message",
24 | "form_button":"Submit",
25 | "footer_social_media":"Follow us on social media",
26 | "footer_contact":"Contact",
27 | "title_founders": "Founders",
28 | "subtitle_founders": "Who started all of this"
29 | }
30 |
31 |
--------------------------------------------------------------------------------
/assets/lang/pt_BR.json:
--------------------------------------------------------------------------------
1 | {
2 | "title_header": "A maior comunidade de Flutter do Brasil",
3 | "subtitle_header": "A Flutterando é a maior comunidade de Flutter no Brasil. Pensou em Flutter, pensou na Flutterando. Faça parte da nossa comunidade!",
4 | "title_meetups": "Últimos eventos",
5 | "subtitle_meetups": "Fique por dentro dos nossos últimos encontros",
6 | "title_video_channel":"Últimos vídeos do canal",
7 | "subtitle_video_channel":"Fique por dentro do nosso conteúdo mais recente",
8 | "title_coorganizers":"Organização",
9 | "subtitle_coorganizers": "Conheça a turma que faz a comunidade acontecer",
10 | "title_packages":"Pacotes da Comunidade",
11 | "subtitle_packages":"Faça o download dos pacotes da comunidade",
12 | "button_packages":"Acesso",
13 | "title_cases":"Casos brasileiros",
14 | "subtitle_cases":"Veja como empresas brasileiras estão tendo sucesso com o Flutter em suas aplicações",
15 | "title_partner_communities":"Comunidades Parceiras",
16 | "subtitle_partner_communities":"Veja como comunidades brasileiras de Flutter",
17 | "button_cases": "Ver mais",
18 | "title_partners":"Parceiros",
19 | "subtitle_partners":"Estas são as empresas que apoiam nossa comunidade",
20 | "form_title":"Entre em contato conosco",
21 | "form_name":"Nome",
22 | "form_email":"Email",
23 | "form_your_message":"Sua mensagem",
24 | "form_button":"Enviar",
25 | "footer_social_media":"Siga-nos nas redes sociais",
26 | "footer_contact":"Contato",
27 | "title_founders": "Fundadores",
28 | "subtitle_founders": "Quem começou tudo isso"
29 | }
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/followers_number.json:
--------------------------------------------------------------------------------
1 | {
2 | "youtube": "58.6",
3 | "instagram": "19.4",
4 | "twitter": "6.2",
5 | "discord": "11.9",
6 | "telegram": "9.5",
7 | "facebook": "11.0",
8 | "linkedin": "9.9"
9 | }
10 |
--------------------------------------------------------------------------------
/data/founders_data.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "Jacob Moura",
4 | "pathImage": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/founders/jacob_circle.png",
5 | "linkedin": "https://www.linkedin.com/in/jacob-moura/"
6 | },
7 | {
8 | "name": "Matheus Perez",
9 | "pathImage": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/founders/mateus_perez_circle.png",
10 | "linkedin": "https://www.linkedin.com/in/matheusperez/"
11 | },
12 | {
13 | "name": "Bwolf",
14 | "pathImage": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/founders/bwolf_circle.png",
15 | "linkedin": "https://www.linkedin.com/in/bwolfdev/"
16 | },
17 | {
18 | "name": "David Araujo",
19 | "pathImage": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/founders/david_araujo_circle.png",
20 | "linkedin": "https://www.linkedin.com/in/davidsdearaujo/"
21 | }
22 | ]
--------------------------------------------------------------------------------
/data/meetups_data.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "photoUrl":
4 | "https://cors.flutterando.com.br/vi/Az56U3lzz5Y/maxresdefault.jpg",
5 | "title": "Flutterando Connect | 1º Edição",
6 | "linkUrl": "https://connect.flutterando.com.br",
7 | "date": "terça-feira, 14 de dezembro de 2024 09:00 até 13:00"
8 | },
9 | {
10 | "photoUrl":
11 | "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/meetups/flutter_brasil.png",
12 | "title": "Flutter Brasil 2022",
13 | "linkUrl": "https://www.meetup.com/fluttercwb/events/288573244/",
14 | "date": "quinta-feira, 6 de outubro de 2022 às 19:00 até quinta-feira, 6 de outubro de 2022 às 22:00"
15 | }
16 |
17 | ]
18 |
--------------------------------------------------------------------------------
/data/partner_communities.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "title": "Comunidade 1",
4 | "imageUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/brazilian_cases/nubank.jpg",
5 | "description": "Descrição vai aqui",
6 | "url": "https://www.youtube.com/c/Flutterando"
7 | },
8 | {
9 | "title": "Comunidade 2",
10 | "imageUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/brazilian_cases/bancoBs2.jpg",
11 | "description": "Descrição vai aqui",
12 | "url": "https://www.youtube.com/c/Flutterando"
13 | },
14 | {
15 | "title": "Comunidade 3",
16 | "imageUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/brazilian_cases/globo.jpg",
17 | "description": "Descrição vai aqui",
18 | "url": "https://www.youtube.com/c/Flutterando"
19 | },
20 | {
21 | "title": "Comunidade 4",
22 | "imageUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/brazilian_cases/suaMusica.png",
23 | "description": "Descrição vai aqui",
24 | "url": "https://www.youtube.com/c/Flutterando"
25 | },
26 | {
27 | "title": "Comunidade 5",
28 | "imageUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/brazilian_cases/celcoin.png",
29 | "description": "Descrição vai aqui",
30 | "url": "https://www.youtube.com/c/Flutterando"
31 | },
32 | {
33 | "title": "Comunidade 6",
34 | "imageUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/brazilian_cases/ifood.png",
35 | "description": "Descrição vai aqui",
36 | "url": "https://www.youtube.com/c/Flutterando"
37 | }
38 | ]
--------------------------------------------------------------------------------
/data/partners_data.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "photoUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/partners/fteam_icon.png",
4 | "siteUrl": "https://fteam.dev/"
5 | },
6 | {
7 | "photoUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/partners/adventista.png",
8 | "siteUrl": "https://iatec.com/"
9 | },
10 | {
11 | "photoUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/partners/google_startups.png",
12 | "siteUrl": "https://startup.google.com/"
13 | },
14 | {
15 | "photoUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/partners/pupz.png",
16 | "siteUrl": "https://www.pupz.com.br/"
17 | },
18 | {
19 | "photoUrl": "https://raw.githubusercontent.com/Flutterando/website/main/assets/images/partners/quem_contrata.png",
20 | "siteUrl": "https://quemcontrato.com/"
21 | }
22 | ]
23 |
--------------------------------------------------------------------------------
/lib/app/app_module.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_modular/flutter_modular.dart';
2 |
3 | import 'modules/home/home_module.dart';
4 |
5 | class AppModule extends Module {
6 | @override
7 | void routes(RouteManager r) {
8 | r.module(Modular.initialRoute, module: HomeModule());
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/lib/app/app_widget.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_localizations/flutter_localizations.dart';
3 | import 'package:flutter_modular/flutter_modular.dart';
4 | import 'package:localization/localization.dart';
5 |
6 | class AppWidget extends StatelessWidget {
7 | const AppWidget({super.key});
8 |
9 | @override
10 | Widget build(BuildContext context) {
11 | LocalJsonLocalization.delegate.directories = ['assets/lang/'];
12 |
13 | return MaterialApp.router(
14 | debugShowCheckedModeBanner: false,
15 | title: 'Flutterando',
16 | localeResolutionCallback: (locale, supportedLocales) {
17 | for (var supportedLocale in supportedLocales) {
18 | if (supportedLocale.languageCode == locale?.languageCode) {
19 | return supportedLocale;
20 | }
21 | }
22 | return supportedLocales.first;
23 | },
24 | supportedLocales: const [
25 | Locale('pt', 'BR'),
26 | Locale('en', 'US'),
27 | ],
28 | theme: ThemeData(
29 | primarySwatch: Colors.blue,
30 | ),
31 | localizationsDelegates: [
32 | GlobalMaterialLocalizations.delegate,
33 | GlobalWidgetsLocalizations.delegate,
34 | GlobalCupertinoLocalizations.delegate,
35 | LocalJsonLocalization.delegate,
36 | ],
37 | routeInformationParser: Modular.routeInformationParser,
38 | routerDelegate: Modular.routerDelegate,
39 | );
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_brazilian_cases.dart:
--------------------------------------------------------------------------------
1 | class ResultBrazilianCases {
2 | final String imageUrl;
3 | final String title;
4 | final String description;
5 | final String url;
6 |
7 | ResultBrazilianCases({
8 | required this.imageUrl,
9 | required this.title,
10 | required this.description,
11 | required this.url,
12 | });
13 | }
14 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_co_organizers.dart:
--------------------------------------------------------------------------------
1 | class ResultCoOrganizers {
2 | final String name;
3 | final String pathImage;
4 | final String linkedin;
5 | final String status;
6 |
7 | ResultCoOrganizers({
8 | required this.name,
9 | required this.pathImage,
10 | required this.linkedin,
11 | required this.status,
12 | });
13 | }
14 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_followers_numbers.dart:
--------------------------------------------------------------------------------
1 | class ResultFollowers {
2 | final String youtube;
3 | final String instagram;
4 | final String twitter;
5 | final String discord;
6 | final String telegram;
7 | final String facebook;
8 | final String linkedin;
9 |
10 | ResultFollowers({
11 | required this.youtube,
12 | required this.instagram,
13 | required this.twitter,
14 | required this.discord,
15 | required this.telegram,
16 | required this.facebook,
17 | required this.linkedin,
18 | });
19 | }
20 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_founders.dart:
--------------------------------------------------------------------------------
1 | class ResultFounders {
2 | final String name;
3 | final String pathImage;
4 | final String linkedin;
5 |
6 | ResultFounders({
7 | required this.name,
8 | required this.pathImage,
9 | required this.linkedin,
10 | });
11 | }
12 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_insta_followers.dart:
--------------------------------------------------------------------------------
1 | class ResultInstaFollowers {
2 | int followersNumber;
3 |
4 | ResultInstaFollowers({
5 | required this.followersNumber,
6 | });
7 | }
8 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_meetups.dart:
--------------------------------------------------------------------------------
1 | class ResultMeetups {
2 | final String photoUrl;
3 | final String title;
4 | final String linkUrl;
5 | final String date;
6 |
7 | ResultMeetups({
8 | required this.photoUrl,
9 | required this.title,
10 | required this.linkUrl,
11 | required this.date,
12 | });
13 | }
14 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_package.dart:
--------------------------------------------------------------------------------
1 | class ResultPackage {
2 | final String name;
3 | final String author;
4 | final String version;
5 | final String description;
6 | final String url;
7 | final String imageUrl;
8 |
9 | ResultPackage({
10 | required this.name,
11 | required this.author,
12 | required this.version,
13 | required this.description,
14 | required this.url,
15 | required this.imageUrl,
16 | });
17 | }
18 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_partner_communities.dart:
--------------------------------------------------------------------------------
1 | class ResultPartnerCommunities {
2 | final String imageUrl;
3 | final String title;
4 | final String description;
5 | final String url;
6 |
7 | ResultPartnerCommunities({
8 | required this.imageUrl,
9 | required this.title,
10 | required this.description,
11 | required this.url,
12 | });
13 | }
14 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_partners.dart:
--------------------------------------------------------------------------------
1 | class ResultPartners {
2 | final String photoUrl;
3 | final String siteUrl;
4 |
5 | ResultPartners({
6 | required this.siteUrl,
7 | required this.photoUrl,
8 | });
9 | }
10 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/result_youtube.dart:
--------------------------------------------------------------------------------
1 | class ResultYoutube {
2 | final String imgUrl;
3 | final String title;
4 | final String linkUrl;
5 | final DateTime date;
6 |
7 | ResultYoutube({
8 | required this.imgUrl,
9 | required this.title,
10 | required this.linkUrl,
11 | required this.date,
12 | });
13 | }
14 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/send_contact/contact.dart:
--------------------------------------------------------------------------------
1 | class Contact {
2 | final String name;
3 | final String email;
4 | final String message;
5 |
6 | Contact({required this.name, required this.email, required this.message});
7 | }
8 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/entities/send_contact/result_contact.dart:
--------------------------------------------------------------------------------
1 | class ResultContact {
2 | final String message;
3 |
4 | ResultContact(this.message);
5 | }
6 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/errors/errors.dart:
--------------------------------------------------------------------------------
1 | class FailureGetPartners implements Exception {}
2 |
3 | class FailureGetFounders implements Exception {}
4 |
5 | class FailureGetCoOrganizers implements Exception {}
6 |
7 | class FailureGetPackages implements Exception {}
8 |
9 | class FailureGetMeetups implements Exception {}
10 |
11 | class FailureGetBrazilianCases implements Exception {}
12 |
13 | class FailureGetYoutube implements Exception {}
14 |
15 | class FailureInstaFollowers implements Exception {}
16 |
17 | class FailureGetPartnerCommunities implements Exception {}
18 |
19 | class DatasourceError
20 | implements
21 | FailureGetPartners,
22 | FailureGetFounders,
23 | FailureGetCoOrganizers,
24 | FailureGetPackages,
25 | FailureGetBrazilianCases,
26 | FailureGetYoutube,
27 | FailureInstaFollowers,
28 | FailureGetPartnerCommunities,
29 | FailureGetMeetups {}
30 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/errors/errors_send_contact.dart:
--------------------------------------------------------------------------------
1 | class FailureSendContact implements Exception {}
2 |
3 | class InvalidContactError implements FailureSendContact {
4 | final String message;
5 |
6 | InvalidContactError({
7 | required this.message,
8 | });
9 | }
10 |
11 | class SendContactExternalError implements FailureSendContact {
12 | final String message;
13 |
14 | SendContactExternalError({
15 | required this.message,
16 | });
17 | }
18 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/errors/get_insta_followers_error.dart:
--------------------------------------------------------------------------------
1 | abstract class GeInstaFollowersFailure implements Exception {}
2 |
3 | class GetInstaFollowersError extends GeInstaFollowersFailure {
4 | String? message;
5 |
6 | GetInstaFollowersError({
7 | required this.message,
8 | });
9 | }
10 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/brazilian_cases_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_brazilian_cases.dart';
3 | import 'package:flutterando/app/modules/home/domain/entities/result_followers_numbers.dart';
4 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
5 |
6 | abstract class BrazilianCasesRepository {
7 | Future>> get();
8 | Future> getFolowers();
9 | }
10 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/co_organizers_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_co_organizers.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 |
5 | abstract class CoOrganizersRepository {
6 | Future>> get();
7 | }
8 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/founders_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 |
3 | import '../entities/result_founders.dart';
4 | import '../errors/errors.dart';
5 |
6 | abstract class FoundersRepository {
7 | Future>> get();
8 | }
9 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/insta_followers_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/errors/get_insta_followers_error.dart';
3 |
4 | import '../entities/result_insta_followers.dart';
5 |
6 | abstract class InstaFollowersRepository {
7 | Future> getInstaFollowers();
8 | }
9 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/meetups_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_meetups.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 |
5 | abstract class MeetupsRepository {
6 | Future>> get();
7 | }
8 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/packages_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_package.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 |
5 | abstract class PackagesRepository {
6 | Future>> get();
7 | }
8 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/partner_communities_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 |
3 | import '../entities/result_followers_numbers.dart';
4 | import '../entities/result_partner_communities.dart';
5 | import '../errors/errors.dart';
6 |
7 | abstract class PartnerCommunitiesRepository {
8 | Future>> get();
9 | Future> getFolowers();
10 | }
11 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/partners_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_partners.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 |
5 | abstract class PartnersRepository {
6 | Future>> get();
7 | }
8 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/send_contact_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/contact.dart';
3 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/result_contact.dart';
4 | import 'package:flutterando/app/modules/home/domain/errors/errors_send_contact.dart';
5 |
6 | abstract class SendContactRepository {
7 | Future> send(Contact contact);
8 | }
9 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/repositories/youtube_repository.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_youtube.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 |
5 | abstract class YoutubeRepository {
6 | Future>> get();
7 | }
8 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_brazilian_cases.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_brazilian_cases.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/brazilian_cases_repository.dart';
5 |
6 | abstract class GetBrazilianCases {
7 | Future>> call();
8 | }
9 |
10 | class GetBrazilianCasesImpl implements GetBrazilianCases {
11 | final BrazilianCasesRepository repository;
12 |
13 | GetBrazilianCasesImpl(this.repository);
14 |
15 | @override
16 | Future>> call() async {
17 | return await repository.get();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_co_organizers.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_co_organizers.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/co_organizers_repository.dart';
5 |
6 | abstract class GetCoOrganizers {
7 | Future>> call();
8 | }
9 |
10 | class GetCoOrganizersImpl extends GetCoOrganizers {
11 | final CoOrganizersRepository repository;
12 |
13 | GetCoOrganizersImpl(this.repository);
14 |
15 | @override
16 | Future>> call() async {
17 | return await repository.get();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_follower_numbers.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_followers_numbers.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/brazilian_cases_repository.dart';
5 |
6 | abstract class GetFollowersNumbers {
7 | Future> call();
8 | }
9 |
10 | class GetFolowersNumbersImpl implements GetFollowersNumbers {
11 | final BrazilianCasesRepository repository;
12 |
13 | GetFolowersNumbersImpl(this.repository);
14 |
15 | @override
16 | Future> call() async {
17 | return await repository.getFolowers();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_founders.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 |
3 | import '../entities/result_founders.dart';
4 | import '../errors/errors.dart';
5 | import '../repositories/founders_repository.dart';
6 |
7 | abstract class GetFounders {
8 | Future>> call();
9 | }
10 |
11 | class GetFoundersImpl extends GetFounders {
12 | final FoundersRepository repository;
13 |
14 | GetFoundersImpl(this.repository);
15 |
16 | @override
17 | Future>> call() async {
18 | return await repository.get();
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_insta_followers.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_insta_followers.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/get_insta_followers_error.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/insta_followers_repository.dart';
5 |
6 | abstract class GetInstaFollowers {
7 | Future> call();
8 | }
9 |
10 | class GetInstaFollowersImpl implements GetInstaFollowers {
11 | final InstaFollowersRepository repository;
12 |
13 | GetInstaFollowersImpl(this.repository);
14 |
15 | @override
16 | Future> call() async {
17 | final result = await repository.getInstaFollowers();
18 | return result;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_meetups.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_meetups.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/meetups_repository.dart';
5 |
6 | abstract class GetMeetups {
7 | Future>> call();
8 | }
9 |
10 | class GetMeetupsImpl implements GetMeetups {
11 | final MeetupsRepository repository;
12 |
13 | GetMeetupsImpl(this.repository);
14 |
15 | @override
16 | Future>> call() async {
17 | return await repository.get();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_packages.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_package.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/packages_repository.dart';
5 |
6 | abstract class GetPackages {
7 | Future>> call();
8 | }
9 |
10 | class GetPackagesImpl implements GetPackages {
11 | final PackagesRepository repository;
12 |
13 | GetPackagesImpl(this.repository);
14 |
15 | @override
16 | Future>> call() async {
17 | return await repository.get();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_partner_communities.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
3 | import '../entities/result_partner_communities.dart';
4 | import '../repositories/partner_communities_repository.dart';
5 |
6 | abstract class GetPartnerCommunities {
7 | Future>>
8 | call();
9 | }
10 |
11 | class GetPartnerCommunitiesImpl implements GetPartnerCommunities {
12 | final PartnerCommunitiesRepository repository;
13 |
14 | GetPartnerCommunitiesImpl(this.repository);
15 |
16 | @override
17 | Future>>
18 | call() async {
19 | return await repository.get();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_partners.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_partners.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/partners_repository.dart';
5 |
6 | abstract class GetPartners {
7 | Future>> call();
8 | }
9 |
10 | class GetPartnersImpl implements GetPartners {
11 | final PartnersRepository repository;
12 |
13 | GetPartnersImpl(this.repository);
14 |
15 | @override
16 | Future>> call() async {
17 | return await repository.get();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/get_youtube.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_youtube.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/youtube_repository.dart';
5 |
6 | abstract class GetYoutube {
7 | Future>> call();
8 | }
9 |
10 | class GetYoutubeImpl implements GetYoutube {
11 | final YoutubeRepository repository;
12 |
13 | GetYoutubeImpl(this.repository);
14 |
15 | @override
16 | Future>> call() async {
17 | return await repository.get();
18 | }
19 | }
--------------------------------------------------------------------------------
/lib/app/modules/home/domain/usecases/send_contact.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/contact.dart';
3 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/result_contact.dart';
4 | import 'package:flutterando/app/modules/home/domain/errors/errors_send_contact.dart';
5 | import 'package:flutterando/app/modules/home/domain/repositories/send_contact_repository.dart';
6 | import 'package:flutterando/app/utils/validations/validations.dart';
7 |
8 | abstract class SendContact {
9 | Future> call(Contact contact);
10 | }
11 |
12 | class SendContactImpl implements SendContact {
13 | final SendContactRepository repository;
14 |
15 | SendContactImpl(this.repository);
16 |
17 | @override
18 | Future> call(Contact contact) async {
19 | String fieldsError = verifyFields(contact);
20 | if (fieldsError != '') {
21 | return Left(InvalidContactError(message: fieldsError));
22 | }
23 | return repository.send(contact);
24 | }
25 |
26 | String verifyFields(Contact contact) {
27 | String messageError = '';
28 | if (contact.name.isEmpty || contact.name == '') {
29 | messageError += "O campo nome não pode estar vazio!\n";
30 | }
31 | if (!emailValidation(contact.email)) {
32 | messageError += 'O campo email não esta formatado corretamente!\n';
33 | }
34 | if (contact.message.isEmpty || contact.message == '') {
35 | messageError = 'O campo mensagem não pode estar vazio!\n';
36 | }
37 | return messageError;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/brazilian_cases_remote_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:flutterando/app/modules/home/domain/entities/result_brazilian_cases.dart';
5 | import 'package:flutterando/app/modules/home/domain/entities/result_followers_numbers.dart';
6 | import 'package:flutterando/app/modules/home/external/mappers/result_brazilian_cases_mapper.dart';
7 | import 'package:flutterando/app/modules/home/infra/datasources/brazilian_cases_datasource.dart';
8 |
9 | class BrazilianCasesRemoteDatasource implements BrazilianCasesDatasource {
10 | final Dio dio;
11 | BrazilianCasesRemoteDatasource(this.dio);
12 |
13 | @override
14 | Future> getBrazilianCases() async {
15 | var url = 'https://raw.githubusercontent.com/Flutterando/website/main/data/brazilian_cases_data.json';
16 |
17 | var response = await dio.get(url);
18 |
19 | if (response.statusCode == 200) {
20 | var jsonList = jsonDecode(response.data) as List;
21 | var listBrazilianCases = jsonList.map((e) => ResultBrazilianCasesMapper.fromMap(e)).toList();
22 | listBrazilianCases.shuffle();
23 | return listBrazilianCases;
24 | }
25 |
26 | return [];
27 | }
28 |
29 | @override
30 | Future getFolowers() async {
31 | var url = 'https://raw.githubusercontent.com/Flutterando/website/main/data/followers_number.json';
32 |
33 | var response = await dio.get(url);
34 |
35 | if (response.statusCode == 200) {
36 | var data = jsonDecode(response.data);
37 | return ResultFollowers(
38 | youtube: data['youtube'],
39 | instagram: data['instagram'],
40 | twitter: data['twitter'],
41 | discord: data['discord'],
42 | telegram: data['telegram'],
43 | facebook: data['facebook'],
44 | linkedin: data['linkedin'],
45 | );
46 | }
47 |
48 | return ResultFollowers(
49 | youtube: '',
50 | instagram: '',
51 | twitter: '',
52 | discord: '',
53 | telegram: '',
54 | facebook: '',
55 | linkedin: '',
56 | );
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/co_organizers_remote_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:flutterando/app/modules/home/domain/entities/result_co_organizers.dart';
5 | import 'package:flutterando/app/modules/home/external/mappers/result_co_organizers_mapper.dart';
6 | import 'package:flutterando/app/modules/home/infra/datasources/co_organizers_datasource.dart';
7 |
8 | class CoOrganizersRemoteDatasource implements CoOrganizersDatasource {
9 | final Dio dio;
10 |
11 | CoOrganizersRemoteDatasource(this.dio);
12 |
13 | @override
14 | Future> getCoOrganizers() async {
15 | var url = 'https://raw.githubusercontent.com/Flutterando/website/main/data/coorganizers_data.json';
16 |
17 | var response = await dio.get(url);
18 |
19 | if (response.statusCode == 200) {
20 | var jsonList = jsonDecode(response.data) as List;
21 | var listCoOrganizers = jsonList.map((e) => ResultCoOrganizersMapper.fromMap(e)).toList();
22 | return listCoOrganizers;
23 | }
24 |
25 | return [];
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/founders_remote_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:flutterando/app/modules/home/domain/entities/result_founders.dart';
5 | import 'package:flutterando/app/modules/home/external/mappers/result_founders_mapper.dart';
6 | import 'package:flutterando/app/modules/home/infra/datasources/founders_datasource.dart';
7 |
8 | class FoundersRemoteDatasource implements FoundersDatasource {
9 | final Dio dio;
10 |
11 | FoundersRemoteDatasource(this.dio);
12 |
13 | @override
14 | Future> getFounders() async {
15 | var listFounders = [];
16 |
17 | var url = 'https://raw.githubusercontent.com/Flutterando/website/main/data/founders_data.json';
18 | var response = await dio.get(url);
19 |
20 | if (response.statusCode == 200) {
21 | var jsonList = jsonDecode(response.data) as List;
22 | listFounders = jsonList.map((e) => ResultFoundersMapper.fromMap(e)).toList();
23 | }
24 |
25 | return listFounders;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/insta_followers_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:dio/dio.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_insta_followers.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/get_insta_followers_error.dart';
4 | import 'package:flutterando/app/modules/home/external/mappers/result_insta_followers_mapper.dart';
5 | import 'package:flutterando/app/modules/home/infra/datasources/insta_followers_datasource.dart';
6 | import 'package:flutterando/app/utils/url_launcher/urls.dart';
7 |
8 | class InstaFollowersDatasourceImpl implements InstaFollowersDatasource {
9 | final Dio _dio;
10 | InstaFollowersDatasourceImpl(this._dio);
11 |
12 | @override
13 | Future getInstaFollowers() async {
14 | var response = await _dio.get(LinksUrl.instagramFollowersData);
15 |
16 | if (response.statusCode == 200) {
17 | return ResultInstaFollowersMapper.fromMap(response.data);
18 | } else {
19 | throw GetInstaFollowersError(
20 | message: "Error no instagram followers found!",
21 | );
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/meetups_remote_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:flutterando/app/modules/home/domain/entities/result_meetups.dart';
5 | import 'package:flutterando/app/modules/home/external/mappers/result_meetups_mapper.dart';
6 | import 'package:flutterando/app/modules/home/infra/datasources/meetups_datasource.dart';
7 |
8 | class MeetupsRemoteDatasource implements MeetupsDatasource {
9 | final Dio dio;
10 |
11 | MeetupsRemoteDatasource(this.dio);
12 |
13 | @override
14 | Future> getMeetups() async {
15 | var url =
16 | 'https://raw.githubusercontent.com/Flutterando/website/main/data/meetups_data.json';
17 |
18 | var response = await dio.get(url);
19 |
20 | if (response.statusCode == 200) {
21 | var jsonList = jsonDecode(response.data) as List;
22 |
23 | var listMeetups =
24 | jsonList.map((e) => ResultMeetupsMapper.fromMap(e)).toList();
25 |
26 | return listMeetups;
27 | }
28 |
29 | return [];
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/packages_remote_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:flutterando/app/modules/home/domain/entities/result_package.dart';
5 | import 'package:flutterando/app/modules/home/external/mappers/result_packages_mapper.dart';
6 | import 'package:flutterando/app/modules/home/infra/datasources/packages_datasource.dart';
7 |
8 | class PackagesRemoteDatasource implements PackagesDatasource {
9 | final Dio dio;
10 | PackagesRemoteDatasource(this.dio);
11 | @override
12 | Future> getPackages() async {
13 | var url = 'https://raw.githubusercontent.com/Flutterando/website/main/data/packages_data.json';
14 | var response = await dio.get(url);
15 |
16 | if (response.statusCode == 200) {
17 | var jsonList = jsonDecode(response.data) as List;
18 | var listPackages = jsonList.map((e) => ResultPackagesMapper.fromMap(e)).toList();
19 | listPackages.shuffle();
20 | return listPackages;
21 | }
22 |
23 | return [];
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/partner_communities_remote_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 |
5 | import '../../domain/entities/result_followers_numbers.dart';
6 | import '../../domain/entities/result_partner_communities.dart';
7 | import '../../infra/datasources/partner_communities_datasource.dart';
8 | import '../mappers/partner_communities_mapper.dart';
9 |
10 | class PartnerCommunitiesRemoteDatasource implements PartnerCommunitiesDatasource {
11 | final Dio dio;
12 | PartnerCommunitiesRemoteDatasource(this.dio);
13 |
14 | @override
15 | Future> getPartnerCommunities() async {
16 | var url = 'https://raw.githubusercontent.com/Flutterando/website/main/data/brazilian_cases_data.json';
17 |
18 | var response = await dio.get(url);
19 |
20 | if (response.statusCode == 200) {
21 | var jsonList = jsonDecode(response.data) as List;
22 | var listPartnerCommunities = jsonList.map((e) => ResultPartnerCommunitiesMapper.fromMap(e)).toList();
23 | listPartnerCommunities.shuffle();
24 | return listPartnerCommunities;
25 | }
26 |
27 | return [];
28 | }
29 |
30 | @override
31 | Future getFolowers() async {
32 | var url = 'https://raw.githubusercontent.com/Flutterando/website/main/data/followers_number.json';
33 |
34 | var response = await dio.get(url);
35 |
36 | if (response.statusCode == 200) {
37 | var data = jsonDecode(response.data);
38 | return ResultFollowers(
39 | youtube: data['youtube'],
40 | instagram: data['instagram'],
41 | twitter: data['twitter'],
42 | discord: data['discord'],
43 | telegram: data['telegram'],
44 | facebook: data['facebook'],
45 | linkedin: data['linkedin'],
46 | );
47 | }
48 |
49 | return ResultFollowers(
50 | youtube: '',
51 | instagram: '',
52 | twitter: '',
53 | discord: '',
54 | telegram: '',
55 | facebook: '',
56 | linkedin: '',
57 | );
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/partners_remote_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:flutterando/app/modules/home/domain/entities/result_partners.dart';
5 | import 'package:flutterando/app/modules/home/external/mappers/result_partners_mapper.dart';
6 | import 'package:flutterando/app/modules/home/infra/datasources/partners_datasource.dart';
7 |
8 | class PartnersRemoteDatasource implements PartnersDatasource {
9 | final Dio dio;
10 |
11 | PartnersRemoteDatasource(this.dio);
12 |
13 | @override
14 | Future> getPartners() async {
15 | var url = 'https://raw.githubusercontent.com/Flutterando/website/main/data/partners_data.json';
16 | var response = await dio.get(url);
17 |
18 | if (response.statusCode == 200) {
19 | var jsonList = jsonDecode(response.data) as List;
20 | var listPartners = jsonList.map((e) => ResultPartnersMapper.fromMap(e)).toList();
21 | listPartners.shuffle();
22 | return listPartners;
23 | }
24 |
25 | return [];
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/send_contact_server_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/contact.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/result_contact.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors_send_contact.dart';
4 | import 'package:flutterando/app/modules/home/infra/datasources/send_contact_datasource.dart';
5 | import 'package:hasura_connect/hasura_connect.dart';
6 |
7 | class SendContactServerDatasource implements SendContactDatasource {
8 | final HasuraConnect connection;
9 | SendContactServerDatasource(this.connection);
10 |
11 | Map envVars = {
12 | "title": "production",
13 | "urlSendContact": "https://flutterando-fteam-box.herokuapp.com/v1/graphql",
14 | };
15 |
16 | @override
17 | Future sendContact(Contact contact) async {
18 | var query = """
19 | mutation sendEmail(\$description: String, \$email: String, \$name: String, \$phone_number: String, \$route_id: Int, \$subject: String) {
20 | insert_mail_box(objects: {description: \$description, email: \$email, name: \$name, phone_number: \$phone_number, route_id: \$route_id, subject: \$subject}) {
21 | affected_rows
22 | }
23 | }
24 | """;
25 |
26 | var data = await connection.mutation(query, variables: {
27 | "description": contact.message,
28 | "email": contact.email,
29 | "name": contact.name,
30 | "phone_number": "",
31 | "route_id": 2,
32 | "subject": "Flutterando - Contato",
33 | });
34 |
35 | var id = data["data"]["insert_mail_box"]["affected_rows"];
36 |
37 | if (id != null) {
38 | return ResultContact('O seu email foi enviado com sucesso!');
39 | } else {
40 | throw SendContactExternalError(message: "Erro ao enviar o Email!");
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/datasources/youtube_remote_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:flutterando/app/modules/home/domain/entities/result_youtube.dart';
5 | import 'package:flutterando/app/modules/home/external/mappers/result_youtube_mapper.dart';
6 | import 'package:flutterando/app/modules/home/infra/datasources/youtube_datasource.dart';
7 |
8 | class YoutubeRemoteDatasource implements YoutubeDatasource {
9 | final Dio dio;
10 |
11 | YoutubeRemoteDatasource(this.dio);
12 | @override
13 | Future> getYoutube() async {
14 | var url = 'https://raw.githubusercontent.com/Flutterando/website/main/data/youtube_data.json';
15 | var response = await dio.get(url);
16 |
17 | if (response.statusCode == 200) {
18 | var jsonList = jsonDecode(response.data) as List;
19 | var listYoutube = jsonList.map((e) => ResultYoutubeMapper.fromMap(e)).toList();
20 | return listYoutube;
21 | }
22 |
23 | return [];
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/contact_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/contact.dart';
4 |
5 | class ContactMapper {
6 | static Map toMap(Contact contact) {
7 | return {
8 | 'name': contact.name,
9 | 'email': contact.email,
10 | 'message': contact.message,
11 | };
12 | }
13 |
14 | static Contact fromMap(Map map) {
15 | if (map.isEmpty) return Contact(name: '', email: '', message: '');
16 |
17 | return Contact(
18 | name: map['name'] ??= '',
19 | email: map['email'] ??= '',
20 | message: map['message'] ??= '',
21 | );
22 | }
23 |
24 | static Contact fromContact(Contact contact) {
25 | if (contact.email.isEmpty) {
26 | return Contact(
27 | name: '',
28 | email: '',
29 | message: '',
30 | );
31 | }
32 |
33 | return Contact(
34 | name: contact.name,
35 | email: contact.email,
36 | message: contact.message,
37 | );
38 | }
39 |
40 | String toJson(e) => json.encode(toMap(e));
41 |
42 | static Contact fromJson(String source) => ContactMapper.fromMap(json.decode(source));
43 | }
44 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/partner_communities_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import '../../domain/entities/result_partner_communities.dart';
4 |
5 | class ResultPartnerCommunitiesMapper {
6 | Map toMap(ResultPartnerCommunities resultPartnerCommunities) {
7 | return {
8 | 'imageUrl': resultPartnerCommunities.imageUrl,
9 | 'title': resultPartnerCommunities.title,
10 | 'description': resultPartnerCommunities.description,
11 | 'url': resultPartnerCommunities.url,
12 | };
13 | }
14 |
15 | static ResultPartnerCommunities fromMap(Map map) {
16 | if (map.isEmpty) {
17 | return ResultPartnerCommunities(
18 | imageUrl: '',
19 | title: '',
20 | description: '',
21 | url: '',
22 | );
23 | }
24 |
25 | return ResultPartnerCommunities(
26 | imageUrl: map['imageUrl'] ??= '',
27 | title: map['title'] ??= '',
28 | description: map['description'] ??= '',
29 | url: map['url'] ??= '',
30 | );
31 | }
32 |
33 | String toJson(e) => json.encode(toMap(e));
34 |
35 | static ResultPartnerCommunities fromJson(String source) => ResultPartnerCommunitiesMapper.fromMap(json.decode(source));
36 | }
37 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/result_brazilian_cases_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:flutterando/app/modules/home/domain/entities/result_brazilian_cases.dart';
4 |
5 | class ResultBrazilianCasesMapper {
6 | Map toMap(ResultBrazilianCases resultBrazilianCases) {
7 | return {
8 | 'imageUrl': resultBrazilianCases.imageUrl,
9 | 'title': resultBrazilianCases.title,
10 | 'description': resultBrazilianCases.description,
11 | 'url': resultBrazilianCases.url,
12 | };
13 | }
14 |
15 | static ResultBrazilianCases fromMap(Map map) {
16 | if (map.isEmpty) {
17 | return ResultBrazilianCases(
18 | imageUrl: '',
19 | title: '',
20 | description: '',
21 | url: '',
22 | );
23 | }
24 |
25 | return ResultBrazilianCases(
26 | imageUrl: map['imageUrl'] ??= '',
27 | title: map['title'] ??= '',
28 | description: map['description'] ??= '',
29 | url: map['url'] ??= '',
30 | );
31 | }
32 |
33 | String toJson(e) => json.encode(toMap(e));
34 |
35 | static ResultBrazilianCases fromJson(String source) => ResultBrazilianCasesMapper.fromMap(json.decode(source));
36 | }
37 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/result_co_organizers_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:flutterando/app/modules/home/domain/entities/result_co_organizers.dart';
4 |
5 | class ResultCoOrganizersMapper {
6 | Map toMap(ResultCoOrganizers resultCoOrganizers) {
7 | return {
8 | 'name': resultCoOrganizers.name,
9 | 'pathImage': resultCoOrganizers.pathImage,
10 | 'linkedin': resultCoOrganizers.linkedin,
11 | 'status': resultCoOrganizers.status,
12 | };
13 | }
14 |
15 | static ResultCoOrganizers fromMap(Map map) {
16 | if (map.isEmpty) {
17 | return ResultCoOrganizers(
18 | name: '',
19 | pathImage: '',
20 | linkedin: '',
21 | status: '',
22 | );
23 | }
24 |
25 | return ResultCoOrganizers(
26 | name: map['name'] ??= '',
27 | pathImage: map['pathImage'] ??= '',
28 | linkedin: map['linkedin'] ??= '',
29 | status: map['status'] ??= '',
30 | );
31 | }
32 |
33 | String toJson(e) => json.encode(toMap(e));
34 |
35 | static ResultCoOrganizers fromJson(String source) => ResultCoOrganizersMapper.fromMap(json.decode(source));
36 | }
37 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/result_founders_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:flutterando/app/modules/home/domain/entities/result_founders.dart';
4 |
5 | class ResultFoundersMapper {
6 | static Map toMap(ResultFounders resultFounders) {
7 | return {
8 | 'name': resultFounders.name,
9 | 'pathImage': resultFounders.pathImage,
10 | 'linkedin': resultFounders.linkedin,
11 | };
12 | }
13 |
14 | static ResultFounders fromMap(Map map) {
15 | if (map.isEmpty) {
16 | return ResultFounders(
17 | name: '',
18 | pathImage: '',
19 | linkedin: '',
20 | );
21 | }
22 |
23 | return ResultFounders(
24 | name: map['name'] ??= '',
25 | pathImage: map['pathImage'] ??= '',
26 | linkedin: map['linkedin'] ??= '',
27 | );
28 | }
29 |
30 | String toJson(e) => json.encode(toMap(e));
31 |
32 | static ResultFounders fromJson(String source) => ResultFoundersMapper.fromMap(json.decode(source));
33 | }
34 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/result_insta_followers_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_insta_followers.dart';
2 |
3 | class ResultInstaFollowersMapper {
4 | static ResultInstaFollowers fromMap(Map json) {
5 | return ResultInstaFollowers(
6 | followersNumber: json["graphql"]['user']['edge_followed_by']['count'] ?? 0,
7 | );
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/result_meetups_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:flutterando/app/modules/home/domain/entities/result_meetups.dart';
4 |
5 | class ResultMeetupsMapper {
6 | Map toMap(ResultMeetups resultMeetups) {
7 | return {
8 | 'photoUrl': resultMeetups.photoUrl,
9 | 'title': resultMeetups.title,
10 | 'linkUrl': resultMeetups.linkUrl,
11 | 'date': resultMeetups.date,
12 | };
13 | }
14 |
15 | static ResultMeetups fromMap(Map map) {
16 | if (map.isEmpty) {
17 | return ResultMeetups(
18 | photoUrl: '',
19 | title: '',
20 | linkUrl: '',
21 | date: '',
22 | );
23 | }
24 |
25 | return ResultMeetups(
26 | photoUrl: map['photoUrl'] ??= '',
27 | title: map['title'] ??= '',
28 | linkUrl: map['linkUrl'] ??= '',
29 | date: map['date'] ??= '',
30 | );
31 | }
32 |
33 | String toJson(e) => json.encode(toMap(e));
34 |
35 | static ResultMeetups fromJson(String source) => ResultMeetupsMapper.fromMap(json.decode(source));
36 | }
37 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/result_packages_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:flutterando/app/modules/home/domain/entities/result_package.dart';
4 |
5 | class ResultPackagesMapper {
6 | static ResultPackage fromMap(Map map) {
7 | if (map.isEmpty) {
8 | return ResultPackage(
9 | name: '',
10 | author: '',
11 | version: '',
12 | description: '',
13 | url: '',
14 | imageUrl: '',
15 | );
16 | }
17 |
18 | return ResultPackage(
19 | name: map['name'] ??= '',
20 | author: map['author'] ??= '',
21 | version: map['version'] ??= '',
22 | description: map['description'] ??= '',
23 | url: map['url'] ??= '',
24 | imageUrl: map['imageUrl'] ??= '',
25 | );
26 | }
27 |
28 | static ResultPackage fromJson(String source) => ResultPackagesMapper.fromMap(json.decode(source));
29 | }
30 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/result_partners_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:flutterando/app/modules/home/domain/entities/result_partners.dart';
4 |
5 | class ResultPartnersMapper {
6 | Map toMap(ResultPartners resultPartners) {
7 | return {
8 | 'photoUrl': resultPartners.photoUrl,
9 | 'siteUrl': resultPartners.siteUrl,
10 | };
11 | }
12 |
13 | static ResultPartners fromMap(Map map) {
14 | if (map.isEmpty) return ResultPartners(photoUrl: "", siteUrl: "");
15 |
16 | return ResultPartners(
17 | photoUrl: map['photoUrl'] ??= "",
18 | siteUrl: map['siteUrl'] ??= "",
19 | );
20 | }
21 |
22 | String toJson(e) => json.encode(toMap(e));
23 |
24 | static ResultPartners fromJson(String source) => ResultPartnersMapper.fromMap(json.decode(source));
25 | }
26 |
--------------------------------------------------------------------------------
/lib/app/modules/home/external/mappers/result_youtube_mapper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:flutterando/app/modules/home/domain/entities/result_youtube.dart';
4 |
5 | class ResultYoutubeMapper {
6 | Map toMap(ResultYoutube resultYoutube) {
7 | return {
8 | 'thumbnail': resultYoutube.imgUrl,
9 | 'title': resultYoutube.title,
10 | 'linkUrl': resultYoutube.linkUrl,
11 | 'date': resultYoutube.date.toIso8601String(),
12 | };
13 | }
14 |
15 | static ResultYoutube fromMap(Map map) {
16 | return ResultYoutube(
17 | imgUrl: map['thumbnail'],
18 | title: map['title'],
19 | linkUrl: map['linkUrl'],
20 | date: DateTime.parse(map['date']),
21 | );
22 | }
23 |
24 | String toJson(e) => json.encode(toMap(e));
25 |
26 | static ResultYoutube fromJson(String source) => ResultYoutubeMapper.fromMap(json.decode(source));
27 | }
28 |
--------------------------------------------------------------------------------
/lib/app/modules/home/home_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/utils/screen/screen_size.dart';
2 |
3 | class HomeController {
4 | final ScreenSize screen;
5 | HomeController(this.screen);
6 | }
7 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/brazilian_cases_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_brazilian_cases.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_followers_numbers.dart';
3 |
4 | abstract class BrazilianCasesDatasource {
5 | Future> getBrazilianCases();
6 | Future getFolowers();
7 | }
8 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/co_organizers_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_co_organizers.dart';
2 |
3 | abstract class CoOrganizersDatasource {
4 | Future> getCoOrganizers();
5 | }
6 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/founders_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_founders.dart';
2 |
3 | abstract class FoundersDatasource {
4 | Future> getFounders();
5 | }
6 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/insta_followers_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_insta_followers.dart';
2 |
3 | abstract class InstaFollowersDatasource {
4 | Future getInstaFollowers();
5 | }
6 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/meetups_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_meetups.dart';
2 |
3 | abstract class MeetupsDatasource {
4 | Future> getMeetups();
5 | }
6 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/packages_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_package.dart';
2 |
3 | abstract class PackagesDatasource {
4 | Future> getPackages();
5 | }
6 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/partner_communities_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_followers_numbers.dart';
2 |
3 | import '../../domain/entities/result_partner_communities.dart';
4 |
5 | abstract class PartnerCommunitiesDatasource {
6 | Future> getPartnerCommunities();
7 | Future getFolowers();
8 | }
9 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/partners_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_partners.dart';
2 |
3 | abstract class PartnersDatasource {
4 | Future> getPartners();
5 | }
6 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/send_contact_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/contact.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/result_contact.dart';
3 |
4 | abstract class SendContactDatasource {
5 | Future sendContact(Contact contact);
6 | }
7 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/datasources/youtube_datasource.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutterando/app/modules/home/domain/entities/result_youtube.dart';
2 |
3 | abstract class YoutubeDatasource {
4 | Future> getYoutube();
5 | }
6 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/brazilian_cases_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_brazilian_cases.dart';
3 | import 'package:flutterando/app/modules/home/domain/entities/result_followers_numbers.dart';
4 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
5 | import 'package:flutterando/app/modules/home/domain/repositories/brazilian_cases_repository.dart';
6 | import 'package:flutterando/app/modules/home/infra/datasources/brazilian_cases_datasource.dart';
7 |
8 | class BrazilianCasesRepositoryImpl implements BrazilianCasesRepository {
9 | final BrazilianCasesDatasource datasource;
10 | BrazilianCasesRepositoryImpl(this.datasource);
11 |
12 | @override
13 | Future>> get() async {
14 | try {
15 | final result = await datasource.getBrazilianCases();
16 | return Right(result);
17 | } catch (e) {
18 | return Left(DatasourceError());
19 | }
20 | }
21 |
22 | @override
23 | Future> getFolowers() async {
24 | try {
25 | final result = await datasource.getFolowers();
26 | return Right(result);
27 | } catch (e) {
28 | return Left(DatasourceError());
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/co_organizers_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_co_organizers.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/co_organizers_repository.dart';
5 | import 'package:flutterando/app/modules/home/infra/datasources/co_organizers_datasource.dart';
6 |
7 | class CoOrganizersRepositoryImpl implements CoOrganizersRepository {
8 | final CoOrganizersDatasource datasource;
9 | CoOrganizersRepositoryImpl(this.datasource);
10 |
11 | @override
12 | Future>> get() async {
13 | try {
14 | final result = await datasource.getCoOrganizers();
15 | return Right(result);
16 | } catch (e) {
17 | return Left(DatasourceError());
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/founders_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_founders.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/founders_repository.dart';
5 |
6 | import '../datasources/founders_datasource.dart';
7 |
8 | class FoundersRepositoryImpl implements FoundersRepository {
9 | final FoundersDatasource datasource;
10 | FoundersRepositoryImpl(this.datasource);
11 |
12 | @override
13 | Future>> get() async {
14 | try {
15 | final result = await datasource.getFounders();
16 | return Right(result);
17 | } catch (e) {
18 | return Left(DatasourceError());
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/insta_followers_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_insta_followers.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/get_insta_followers_error.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/insta_followers_repository.dart';
5 | import 'package:flutterando/app/modules/home/infra/datasources/insta_followers_datasource.dart';
6 |
7 | class InstaFollowersRepositoryImpl implements InstaFollowersRepository {
8 | final InstaFollowersDatasource datasource;
9 | InstaFollowersRepositoryImpl(this.datasource);
10 |
11 | @override
12 | Future>
13 | getInstaFollowers() async {
14 | try {
15 | final result = await datasource.getInstaFollowers();
16 | return Right(result);
17 | } on GetInstaFollowersError catch (error) {
18 | return Left(error);
19 | } catch (error, stacktrace) {
20 | return Left(
21 | GetInstaFollowersError(
22 | message: "erro no datasource: ${error.toString()}$stacktrace",
23 | ),
24 | );
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/meetups_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_meetups.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/meetups_repository.dart';
5 | import 'package:flutterando/app/modules/home/infra/datasources/meetups_datasource.dart';
6 |
7 | class MeetupsRepositoryImpl implements MeetupsRepository {
8 | final MeetupsDatasource datasource;
9 | MeetupsRepositoryImpl(this.datasource);
10 |
11 | @override
12 | Future>> get() async {
13 | try {
14 | final result = await datasource.getMeetups();
15 | return Right(result);
16 | } catch (e) {
17 | return Left(DatasourceError());
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/packages_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_package.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/packages_repository.dart';
5 | import 'package:flutterando/app/modules/home/infra/datasources/packages_datasource.dart';
6 |
7 | class PackagesRepositoryImpl implements PackagesRepository {
8 | PackagesDatasource datasource;
9 | PackagesRepositoryImpl(this.datasource);
10 |
11 | @override
12 | Future>> get() async {
13 | try {
14 | final result = await datasource.getPackages();
15 | return Right(result);
16 | } catch (e) {
17 | return Left(DatasourceError());
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/partner_communities_repository.impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_followers_numbers.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 |
5 | import '../../domain/entities/result_partner_communities.dart';
6 | import '../../domain/repositories/partner_communities_repository.dart';
7 | import '../datasources/partner_communities_datasource.dart';
8 |
9 | class PartnerCommunitiesRepositoryImpl implements PartnerCommunitiesRepository {
10 | final PartnerCommunitiesDatasource datasource;
11 | PartnerCommunitiesRepositoryImpl(this.datasource);
12 |
13 | @override
14 | Future>> get() async {
15 | try {
16 | final result = await datasource.getPartnerCommunities();
17 | return Right(result);
18 | } catch (e) {
19 | return Left(DatasourceError());
20 | }
21 | }
22 |
23 | @override
24 | Future> getFolowers() async {
25 | try {
26 | final result = await datasource.getFolowers();
27 | return Right(result);
28 | } catch (e) {
29 | return Left(DatasourceError());
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/partners_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_partners.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/partners_repository.dart';
5 | import 'package:flutterando/app/modules/home/infra/datasources/partners_datasource.dart';
6 |
7 | class PartnersRepositoryImpl implements PartnersRepository {
8 | final PartnersDatasource datasource;
9 | PartnersRepositoryImpl(this.datasource);
10 |
11 | @override
12 | Future>> get() async {
13 | try {
14 | final result = await datasource.getPartners();
15 | return Right(result);
16 | } catch (e) {
17 | return Left(DatasourceError());
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/send_contact_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:dio/dio.dart';
3 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/contact.dart';
4 | import 'package:flutterando/app/modules/home/domain/entities/send_contact/result_contact.dart';
5 | import 'package:flutterando/app/modules/home/domain/errors/errors_send_contact.dart';
6 | import 'package:flutterando/app/modules/home/domain/repositories/send_contact_repository.dart';
7 | import 'package:flutterando/app/modules/home/infra/datasources/send_contact_datasource.dart';
8 |
9 | class SendContactRepositoryImpl implements SendContactRepository {
10 | final SendContactDatasource datasource;
11 | SendContactRepositoryImpl(this.datasource);
12 |
13 | @override
14 | Future> send(Contact contact) async {
15 | try {
16 | final result = await datasource.sendContact(contact);
17 | return Right(result);
18 | } on DioException catch (_) {
19 | return Right(ResultContact("E-mail enviado com sucesso!"));
20 | } catch (e) {
21 | return Left(SendContactExternalError(message: "Erro ao enviar o E-mail!"));
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/lib/app/modules/home/infra/repositories/youtube_repository_impl.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartz/dartz.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_youtube.dart';
3 | import 'package:flutterando/app/modules/home/domain/errors/errors.dart';
4 | import 'package:flutterando/app/modules/home/domain/repositories/youtube_repository.dart';
5 | import 'package:flutterando/app/modules/home/infra/datasources/youtube_datasource.dart';
6 |
7 | class YoutubeRepositoryImpl implements YoutubeRepository {
8 | final YoutubeDatasource datasource;
9 | YoutubeRepositoryImpl(this.datasource);
10 |
11 | @override
12 | Future>> get() async {
13 | try {
14 | final result = await datasource.getYoutube();
15 | return Right(result);
16 | } catch (e) {
17 | return Left(DatasourceError());
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/modules/home/widgets/brazilian_cases/brazilian_cases_controller.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_triple/flutter_triple.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_brazilian_cases.dart';
3 | import 'package:flutterando/app/modules/home/domain/usecases/get_brazilian_cases.dart';
4 | import 'package:flutterando/app/utils/screen/screen_size.dart';
5 |
6 | class BrazilianCasesController extends Store> {
7 | final ScreenSize screen;
8 | final GetBrazilianCases usecase;
9 | BrazilianCasesController(this.screen, this.usecase) : super([]) {
10 | fetchBrazilianCases();
11 | }
12 |
13 | Future fetchBrazilianCases() async {
14 | var response = await usecase();
15 | response.fold(
16 | (l) => setError(l),
17 | (brazilianCases) => update(brazilianCases),
18 | );
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/modules/home/widgets/co_organizers/co_organizers_store.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter_triple/flutter_triple.dart';
2 | import 'package:flutterando/app/modules/home/domain/entities/result_co_organizers.dart';
3 | import 'package:flutterando/app/modules/home/domain/usecases/get_co_organizers.dart';
4 | import 'package:flutterando/app/utils/screen/screen_size.dart';
5 |
6 | class CoOrganizersStore extends Store> {
7 | final GetCoOrganizers usecase;
8 | final ScreenSize screen;
9 | CoOrganizersStore(this.screen, this.usecase) : super([]) {
10 | fetchPartners();
11 | }
12 |
13 | Future fetchPartners() async {
14 | var response = await usecase.call();
15 | response.fold(
16 | (l) => setError(l),
17 | (coOrganizers) => update(coOrganizers),
18 | );
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/lib/app/modules/home/widgets/footer/contact_form/widgets/contact_field.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutterando/app/utils/colors/colors.dart';
3 | import 'package:flutterando/app/utils/text_styles/text_styles.dart';
4 |
5 | class ContactField extends StatelessWidget {
6 | final String title;
7 | final int maxLines;
8 | final String? Function(String?)? validator;
9 | final TextEditingController controller;
10 |
11 | const ContactField({
12 | required this.title,
13 | required this.maxLines,
14 | required this.controller,
15 | required this.validator,
16 | });
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | Widget titleWidget() {
21 | return Focus(
22 | descendantsAreFocusable: false,
23 | canRequestFocus: false,
24 | child: SelectableText(
25 | title,
26 | style: TextStyles.roboto(20),
27 | ),
28 | );
29 | }
30 |
31 | Widget textFieldWidget() {
32 | return TextFormField(
33 | controller: controller,
34 | maxLines: maxLines,
35 | validator: validator,
36 | style: TextStyles.roboto(16),
37 | decoration: new InputDecoration(
38 | filled: true,
39 | fillColor: PrimaryColors.darkest,
40 | errorStyle: TextStyle(fontSize: 14),
41 | border: new OutlineInputBorder(
42 | borderRadius: const BorderRadius.all(
43 | const Radius.circular(6.0),
44 | )),
45 | ),
46 | );
47 | }
48 |
49 | return Column(
50 | crossAxisAlignment: CrossAxisAlignment.start,
51 | children: [
52 | SizedBox(height: 32),
53 | titleWidget(),
54 | SizedBox(height: 6),
55 | textFieldWidget(),
56 | ],
57 | );
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/lib/app/modules/home/widgets/footer/contact_form/widgets/send_button.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_modular/flutter_modular.dart';
3 | import 'package:flutterando/app/modules/home/widgets/footer/footer_controller.dart';
4 | import 'package:flutterando/app/utils/colors/colors.dart';
5 | import 'package:flutterando/app/utils/text_styles/text_styles.dart';
6 | import 'package:localization/localization.dart';
7 |
8 | class SendButton extends StatefulWidget {
9 | final Function sendContact;
10 | const SendButton(this.sendContact, {super.key});
11 | @override
12 | _SendButtonState createState() => _SendButtonState();
13 | }
14 |
15 | class _SendButtonState extends State {
16 | final controller = Modular.get();
17 | @override
18 | void dispose() {
19 | Modular.dispose();
20 | super.dispose();
21 | }
22 |
23 | @override
24 | Widget build(BuildContext context) {
25 | final fontScale = controller.screen.fontScale(context);
26 | return Padding(
27 | padding: const EdgeInsets.only(top: 12),
28 | child: Align(
29 | child: InkWell(
30 | child: Container(
31 | decoration: const BoxDecoration(
32 | color: PrimaryColors.carmesim,
33 | borderRadius: BorderRadius.all(Radius.circular(16)),
34 | ),
35 | alignment: Alignment.center,
36 | width: double.infinity,
37 | height: 28 * fontScale,
38 | child: Text(
39 | "form_button".i18n(),
40 | style: TextStyles.roboto(12 * fontScale, fontWeight: FontWeight.bold),
41 | ),
42 | ),
43 | onTap: () async {
44 | await widget.sendContact();
45 | },
46 | ),
47 | ),
48 | );
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/lib/app/modules/home/widgets/footer/follow_us/widgets/social_networks.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_modular/flutter_modular.dart';
3 | import 'package:flutter_svg/svg.dart';
4 | import 'package:flutterando/app/modules/home/widgets/footer/footer_controller.dart';
5 | import 'package:flutterando/app/utils/icons/icons.dart';
6 | import 'package:flutterando/app/utils/url_launcher/urls.dart';
7 | import 'package:url_launcher/url_launcher.dart';
8 |
9 | class SocialNetworks extends StatefulWidget {
10 | final double fontScale;
11 | SocialNetworks(this.fontScale);
12 |
13 | @override
14 | _SocialNetworksState createState() => _SocialNetworksState();
15 | }
16 |
17 | class _SocialNetworksState extends State {
18 | final controller = Modular.get();
19 | @override
20 | void dispose() {
21 | Modular.dispose();
22 | super.dispose();
23 | }
24 |
25 | Widget build(BuildContext context) {
26 | Widget socialnetWork(String image, String linkUrl) {
27 | return InkWell(
28 | onTap: () async {
29 | await launchUrl(Uri.parse(linkUrl));
30 | },
31 | child: Container(
32 | child: SvgPicture.asset(
33 | image,
34 | height: 20 * widget.fontScale,
35 | width: 20 * widget.fontScale,
36 | fit: BoxFit.cover,
37 | ),
38 | padding: EdgeInsets.only(
39 | left: 10 * widget.fontScale,
40 | ),
41 | ),
42 | );
43 | }
44 |
45 | return Container(
46 | child: Wrap(
47 | alignment: WrapAlignment.end,
48 | children: [
49 | socialnetWork(IconUrls.instagram, LinksUrl.instagram),
50 | socialnetWork(IconUrls.facebook, LinksUrl.facebook),
51 | socialnetWork(IconUrls.twitter, LinksUrl.twitter),
52 | socialnetWork(IconUrls.telegram, LinksUrl.telegram),
53 | socialnetWork(IconUrls.discord, LinksUrl.discord),
54 | socialnetWork(IconUrls.medium, LinksUrl.medium),
55 | socialnetWork(IconUrls.youtube, LinksUrl.youtube),
56 | socialnetWork(IconUrls.meetup, LinksUrl.meetup),
57 | ],
58 | ),
59 | );
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/lib/app/modules/home/widgets/footer/footer.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_modular/flutter_modular.dart';
3 | import 'package:flutterando/app/modules/home/widgets/footer/contact_form/contact_form.dart';
4 | import 'package:flutterando/app/modules/home/widgets/footer/follow_us/follow_us.dart';
5 | import 'package:flutterando/app/modules/home/widgets/footer/footer_controller.dart';
6 | import 'package:flutterando/app/utils/screen/screen_size.dart';
7 |
8 | class Footer extends StatefulWidget {
9 | @override
10 | _FooterState createState() => _FooterState();
11 | }
12 |
13 | class _FooterState extends State