This is a chat app made by flutter without fancy ui design but most of features for chat app are implemented.
- This app needs unit test 😱 😱 😱
- one to one chat
- group chat
- rich text message
- video and audio chat
- group video chat
- add friend and delete friend
- editing and dispatching event in group
- create group and join group
- React to messages with emoji.
This is a Flutter mobile app targeting Android and iOS.
- The code for the Flutter app is contained in the folder lib.
- model folder contains all the database model
- redux folder contains all Action, Middleware, Reducer for state management.
- screen folder contains UI pages
- service folder contains Query from Firestore
- download flutter sdk and 1.12.13+hotfix.9 is the version for this app:
$ flutter doctor
- git clone it
$ git clone https://github.com/TingzhouJia/flutter-chat.git
- register your firebase account and setup firestore database
collection | document | collection | document |
---|---|---|---|
favorUser | userId | favorList | |
friends | userId | info | userId |
group | groupId | ||
message | userId/ groupId | userId/groupMessage | messages |
recentChat | userId | info | userId/SYSTEM |
request | userId | requests | userId |
user | userId | ||
userGroup | userId | info | groupId |
- model design
- favorUser
name | type | value |
---|---|---|
favorUser | String | a reference like in mongoDB |
- friends
name | type | value |
---|---|---|
Image | String | use firebase storage to get img url |
nickname | String | 'kiki' |
notification | bool | false |
strongNotif | bool | false |
setTop | bool | false |
- group
name | type | value |
---|---|---|
authorId | String | wldwklmamcmcmclk39fjfn |
description | String | this is a group for learn flutter |
hexcolor | String | ffffff |
id | String | asklaldd39kk3nd |
name | String | flutter study group |
newInvitation | List | [ adauish7hqo3 ] |
startDate | DateTime | 2019-03-12 |
users | List | wldwklmamcmcmclk39fjfn |
visibility | bool | true |
cupertino_icons: ^0.1.2
flutter_screenutil: ^1.0.2
agora_rtc_engine: 1.0.5
permission_handler: ^3.0.0
dio: ^3.0.9
emoji_picker: ^0.1.0
transparent_image: ^1.0.0
flutter_spinkit: ^4.1.2
image_picker: ^0.6.3+4
firebase_storage: ^3.1.3
firebase_auth: ^0.15.5+3
firebase_messaging: ^6.0.13
firebase_database: ^3.0.7
cloud_firestore: ^0.13.4+2
json_serializable: ^3.3.0
image_pickers: ^1.0.7+1
flutter_redux: ^0.6.0
built_collection: ^4.3.2
redux: ^4.0.0
redux_epics: ^0.13.0
built_value: ^7.0.9
flutter_slidable: ^0.5.4
flutter_svg: ^0.17.3+1
shared_preferences: ^0.5.6+3
built_value_generator: ^7.0.9
font_awesome_flutter: ^8.8.1
oktoast: ^2.3.1+1
flutter_datetime_picker: ^1.3.5