If you want to read an article about this project, there is an aritcle that is written by me and sponsored by Stream. Here is the link: https://gstrm.io/sahinefe
-
BLoC for state management
-
DDD Architecture
-
Navigator 2.0 (GoRouter)
-
Dependency Injection
-
2 Different, popular services (Firebase & GetStream)
-
2 Different presentations of the GetStream usage (Prepared UI which is coming from the GetStream Package and Manuel UI that's combined with the core package)
-
Localization from official Flutter docs
-
Official Camera Plugin from the Flutter itself
-
Local Storage (Hydrated Bloc)
-
Internet Connection Checker
You can also watch the playlist which is related to Flutter Social Chat via YouTube: https://www.youtube.com/watch?v=r9MtCK33J78&list=PL3PvZdDvJcMIixstKkuvLWQleqJ1VhLrf
-- Since the firebase project keys are private, I do not share them generally, but for the tutorial purpose, I share "firebase.options.dart" file as an example for you. If you want to use this application, first you must complete the necessary setups for the "GetStream" and "Firebase". You can not run the application directly If you fork, you will need appKey and devtoken for the "GetStream" section, and "firebase_options.dart" file that is coming from the Firebase itself.
-
For the GetStream, you can register for free: https://getstream.io/try-for-free/
-
Also to create devToken, you can visit the link: https://getstream.io/chat/docs/flutter-dart/token_generator/?language=dart
-
For the "Firebase", you can also register for free, and then complete necessary steps. After that, you will need to create a firebase project to use in this project. To register, visit: https://firebase.google.com
-- Also, you should know, sign-in section of this application is coming from my other open source project that is actually "phone_number_sign_in_cubit" project.
You can also find the related project here: https://github.com/alperefesahin/phone_number_sign_in_cubit
-- For this open-source app, the integration, widget, unit tests will exist coming soon...
You should specify the version of the related packages below.
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
auto_size_text:
intl_phone_number_input:
go_router:
wave:
pin_code_fields:
bot_toast:
progress_indicators:
flutter_expandable_fab:
cupertino_icons:
image_picker:
camera:
flutter_svg:
animated_text_kit:
rounded_loading_button:
cached_network_image:
awesome_icons:
date_format:
page_transition:
permission_handler:
image:
path_provider:
connectivity_plus:
flutter_bloc:
hydrated_bloc:
freezed_annotation:
json_annotation:
injectable:
get_it:
fpdart:
uuid:
firebase_core:
firebase_auth:
firebase_storage:
cloud_firestore:
stream_chat_flutter:
dev_dependencies:
flutter_test:
sdk: flutter
lint:
build_runner:
freezed:
injectable_generator:
json_serializable: