And yet today I am uploading a ready-made application to this repository. A bit in a hurry, which makes the files messy, but I want to start making another application, this time calmly (and again with BLoC architecture).
So before I start talking about the app: For the application to work for you, you must create a project on Firebase and add an Android and/or IOS application to the project (generate a google-services file for the platform). Follow the instructions on the Firebase website, after that everything should work fine.
After opening the application, it shows a standard login screen. The user can log in or create an account. When creating an account, it is checked whether the user with the given login already exists, whether the passwords are the same and whether the password has at least 6 characters. Of course, after logging in, the user will be transferred further (which I will talk about in a moment) and his login details will be saved locally so that the next time the application is launched, the user will not have to enter his login details again.
After registering / logging in, the user must set his nickname to be able to use the functions of the application. It is more of a visual addition, so as not to be associated only through a unique login. After entering the login, the functions of the application are unlocked. The user sees which groups he is in (or not in any). A user can create his own group (his own group names cannot be repeated, but another user can create a group with the same name as another user) or count on being added to a group (a user cannot request to be added or join yourself, due to the assumption of privacy of groups and photos in these groups in the application. After creating your group, the user becomes its administrator, who is the only one who can kick other group members or delete the group completely (other group users can leave the group or together with admin to add users to the group. There is also a button for refreshing data on the screen (because I did not make queries as streams) and some visual additions, such as a clock or custom shapes. The user can switch between pages using navigation (NOTE: after pressing another button on the navigation, THE NEW PAGE IS NOT LOADED, BUT THE WIDGETS VIEWED ON THE SCREEN ARE CHANGED).
Write Note Screen:
This page is simple: the user can simply draw or write something, create a note of his choice using the ready-made tools in the top bar. After clicking the save icon, the user can save the created note in the phone gallery.
Add Images Screen:
In this screen user can select images from gallery after clicking button with big plus. He can choose as many as he wants. After adding images, their preview is displayed. After clicking on a tile with a image, it will be removed from the list and will not be added to the group’s images. After selecting at least one image, the user can add the selected image or images to the selected group to which he belongs (if he is not in any group, then he cannot add). The rest of the operation of this page, i.e. sending and messages, I leave to be seen in the pictures.
Browse Images Screen:
The last screen is used to view all sent images by all members of the group selected on the list to which the logged in user belongs. After clicking on the loaded image, the user has a preview of the image in full screen. Unfortunately, I did not add the ability to download these images or view detailed information about the image. The rest is as shown in the attached images. And of course, after pressing the last button on the navigation bar, the user logs out.
I think this application is quite ambitious and has potential, but there are many shortcomings (e.g. checking the user’s internet connection on a regular basis and handling it, handling queries with streams, no use of BLoC, file clutter, etc.) . Anyway, I’m leaving it here, maybe someone will want to develop it further, test it. And at that time I will start making another application, this time for sure with BLoC and possible streams. And I won’t mess with the code anymore, I promise 😆 it’s just a one-time action. If you have any cool idea for an app to create, contact me and give me this idea, I will gladly make it. Greetings!