Hybrid, Functional, and Nice Designed Chat App: Flutter Social Chat

Sponsored by Stream!

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

r1 2

Distinctive features gathered in a Single App

  • 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

Video Tutorial (YouTube)

You can also watch the playlist which is related to Flutter Social Chat via YouTube: https://www.youtube.com/watch?v=r9MtCK33J78&list=PL3PvZdDvJcMIixstKkuvLWQleqJ1VhLrf

maxresdefault

Images from the App

1 2

3 4

5 6

8 9

2011

17 15

16 16

21 13

12 7

Before Beginning: READ BEFORE USING!

— 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.

— 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

Testing

— For this open-source app, the integration, widget, unit tests will exist coming soon…

Packages

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:

GitHub

View Github