Skip to content

Commit 92c6ce1

Browse files
committed
clean code
1 parent d673576 commit 92c6ce1

File tree

67 files changed

+4338
-28
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+4338
-28
lines changed

.flutter-plugins

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# This is a generated file; do not edit or check into version control.
2+
advance_pdf_viewer=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\advance_pdf_viewer-2.0.0\\
3+
file_picker=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\file_picker-4.0.1\\
4+
flutter_plugin_android_lifecycle=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\flutter_plugin_android_lifecycle-2.0.3\\
5+
google_maps_flutter=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\google_maps_flutter-2.0.9\\
6+
image_picker=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\image_picker-0.8.4\\
7+
image_picker_for_web=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\image_picker_for_web-2.1.3\\
8+
location=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\location-4.3.0\\
9+
location_web=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\location_web-3.1.1\\
10+
open_file=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\open_file-3.2.1\\
11+
path_provider=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\path_provider-2.0.3\\
12+
path_provider_linux=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\path_provider_linux-2.0.2\\
13+
path_provider_macos=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\path_provider_macos-2.0.2\\
14+
path_provider_windows=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\path_provider_windows-2.0.3\\
15+
shared_preferences=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences-2.0.7\\
16+
shared_preferences_linux=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences_linux-2.0.2\\
17+
shared_preferences_macos=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences_macos-2.0.2\\
18+
shared_preferences_web=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences_web-2.0.2\\
19+
shared_preferences_windows=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\shared_preferences_windows-2.0.2\\
20+
sqflite=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\sqflite-2.0.0+4\\
21+
sqlite3_flutter_libs=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\sqlite3_flutter_libs-0.5.0\\
22+
url_launcher=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher-6.0.10\\
23+
url_launcher_linux=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher_linux-2.0.2\\
24+
url_launcher_macos=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher_macos-2.0.2\\
25+
url_launcher_web=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher_web-2.0.4\\
26+
url_launcher_windows=C:\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\url_launcher_windows-2.0.2\\

.flutter-plugins-dependencies

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"advance_pdf_viewer","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\advance_pdf_viewer-2.0.0\\\\","dependencies":["path_provider"]},{"name":"file_picker","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\file_picker-4.0.1\\\\","dependencies":[]},{"name":"google_maps_flutter","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\google_maps_flutter-2.0.9\\\\","dependencies":[]},{"name":"image_picker","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\image_picker-0.8.4\\\\","dependencies":[]},{"name":"location","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\location-4.3.0\\\\","dependencies":[]},{"name":"open_file","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\open_file-3.2.1\\\\","dependencies":[]},{"name":"path_provider","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-2.0.3\\\\","dependencies":[]},{"name":"shared_preferences","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences-2.0.7\\\\","dependencies":[]},{"name":"sqflite","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\sqflite-2.0.0+4\\\\","dependencies":[]},{"name":"sqlite3_flutter_libs","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\sqlite3_flutter_libs-0.5.0\\\\","dependencies":[]},{"name":"url_launcher","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher-6.0.10\\\\","dependencies":[]}],"android":[{"name":"advance_pdf_viewer","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\advance_pdf_viewer-2.0.0\\\\","dependencies":["path_provider"]},{"name":"file_picker","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\file_picker-4.0.1\\\\","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"flutter_plugin_android_lifecycle","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\flutter_plugin_android_lifecycle-2.0.3\\\\","dependencies":[]},{"name":"google_maps_flutter","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\google_maps_flutter-2.0.9\\\\","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\image_picker-0.8.4\\\\","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"location","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\location-4.3.0\\\\","dependencies":[]},{"name":"open_file","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\open_file-3.2.1\\\\","dependencies":[]},{"name":"path_provider","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider-2.0.3\\\\","dependencies":[]},{"name":"shared_preferences","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences-2.0.7\\\\","dependencies":[]},{"name":"sqflite","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\sqflite-2.0.0+4\\\\","dependencies":[]},{"name":"sqlite3_flutter_libs","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\sqlite3_flutter_libs-0.5.0\\\\","dependencies":[]},{"name":"url_launcher","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher-6.0.10\\\\","dependencies":[]}],"macos":[{"name":"location","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\location-4.3.0\\\\","dependencies":[]},{"name":"path_provider_macos","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_macos-2.0.2\\\\","dependencies":[]},{"name":"shared_preferences_macos","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_macos-2.0.2\\\\","dependencies":[]},{"name":"sqflite","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\sqflite-2.0.0+4\\\\","dependencies":[]},{"name":"sqlite3_flutter_libs","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\sqlite3_flutter_libs-0.5.0\\\\","dependencies":[]},{"name":"url_launcher_macos","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_macos-2.0.2\\\\","dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_linux-2.0.2\\\\","dependencies":[]},{"name":"shared_preferences_linux","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_linux-2.0.2\\\\","dependencies":["path_provider_linux"]},{"name":"url_launcher_linux","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_linux-2.0.2\\\\","dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\path_provider_windows-2.0.3\\\\","dependencies":[]},{"name":"shared_preferences_windows","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_windows-2.0.2\\\\","dependencies":["path_provider_windows"]},{"name":"url_launcher_windows","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_windows-2.0.2\\\\","dependencies":[]}],"web":[{"name":"file_picker","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\file_picker-4.0.1\\\\","dependencies":[]},{"name":"image_picker_for_web","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\image_picker_for_web-2.1.3\\\\","dependencies":[]},{"name":"location_web","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\location_web-3.1.1\\\\","dependencies":[]},{"name":"shared_preferences_web","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\shared_preferences_web-2.0.2\\\\","dependencies":[]},{"name":"url_launcher_web","path":"C:\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.dartlang.org\\\\url_launcher_web-2.0.4\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"advance_pdf_viewer","dependencies":["path_provider"]},{"name":"file_picker","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"google_maps_flutter","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle","image_picker_for_web"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"location","dependencies":["location_web"]},{"name":"location_web","dependencies":[]},{"name":"open_file","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_linux","path_provider_macos","path_provider_windows"]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"shared_preferences","dependencies":["shared_preferences_linux","shared_preferences_macos","shared_preferences_web","shared_preferences_windows"]},{"name":"shared_preferences_linux","dependencies":["path_provider_linux"]},{"name":"shared_preferences_macos","dependencies":[]},{"name":"shared_preferences_web","dependencies":[]},{"name":"shared_preferences_windows","dependencies":["path_provider_windows"]},{"name":"sqflite","dependencies":[]},{"name":"sqlite3_flutter_libs","dependencies":[]},{"name":"url_launcher","dependencies":["url_launcher_linux","url_launcher_macos","url_launcher_web","url_launcher_windows"]},{"name":"url_launcher_linux","dependencies":[]},{"name":"url_launcher_macos","dependencies":[]},{"name":"url_launcher_web","dependencies":[]},{"name":"url_launcher_windows","dependencies":[]}],"date_created":"2022-02-25 22:11:49.600261","version":"2.10.2"}

.gitattributes

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.pdb filter=lfs diff=lfs merge=lfs -text
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package io.flutter.plugins;
2+
3+
import androidx.annotation.Keep;
4+
import androidx.annotation.NonNull;
5+
import io.flutter.Log;
6+
7+
import io.flutter.embedding.engine.FlutterEngine;
8+
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
9+
10+
/**
11+
* Generated file. Do not edit.
12+
* This file is generated by the Flutter tool based on the
13+
* plugins that support the Android platform.
14+
*/
15+
@Keep
16+
public final class GeneratedPluginRegistrant {
17+
private static final String TAG = "GeneratedPluginRegistrant";
18+
public static void registerWith(@NonNull FlutterEngine flutterEngine) {
19+
ShimPluginRegistry shimPluginRegistry = new ShimPluginRegistry(flutterEngine);
20+
try {
21+
pt.tribeiro.flutter_plugin_pdf_viewer.FlutterPluginPdfViewerPlugin.registerWith(shimPluginRegistry.registrarFor("pt.tribeiro.flutter_plugin_pdf_viewer.FlutterPluginPdfViewerPlugin"));
22+
} catch(Exception e) {
23+
Log.e(TAG, "Error registering plugin advance_pdf_viewer, pt.tribeiro.flutter_plugin_pdf_viewer.FlutterPluginPdfViewerPlugin", e);
24+
}
25+
try {
26+
flutterEngine.getPlugins().add(new com.mr.flutter.plugin.filepicker.FilePickerPlugin());
27+
} catch(Exception e) {
28+
Log.e(TAG, "Error registering plugin file_picker, com.mr.flutter.plugin.filepicker.FilePickerPlugin", e);
29+
}
30+
try {
31+
flutterEngine.getPlugins().add(new io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin());
32+
} catch(Exception e) {
33+
Log.e(TAG, "Error registering plugin flutter_plugin_android_lifecycle, io.flutter.plugins.flutter_plugin_android_lifecycle.FlutterAndroidLifecyclePlugin", e);
34+
}
35+
try {
36+
flutterEngine.getPlugins().add(new io.flutter.plugins.googlemaps.GoogleMapsPlugin());
37+
} catch(Exception e) {
38+
Log.e(TAG, "Error registering plugin google_maps_flutter, io.flutter.plugins.googlemaps.GoogleMapsPlugin", e);
39+
}
40+
try {
41+
flutterEngine.getPlugins().add(new io.flutter.plugins.imagepicker.ImagePickerPlugin());
42+
} catch(Exception e) {
43+
Log.e(TAG, "Error registering plugin image_picker, io.flutter.plugins.imagepicker.ImagePickerPlugin", e);
44+
}
45+
try {
46+
flutterEngine.getPlugins().add(new com.lyokone.location.LocationPlugin());
47+
} catch(Exception e) {
48+
Log.e(TAG, "Error registering plugin location, com.lyokone.location.LocationPlugin", e);
49+
}
50+
try {
51+
flutterEngine.getPlugins().add(new com.crazecoder.openfile.OpenFilePlugin());
52+
} catch(Exception e) {
53+
Log.e(TAG, "Error registering plugin open_file, com.crazecoder.openfile.OpenFilePlugin", e);
54+
}
55+
try {
56+
flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
57+
} catch(Exception e) {
58+
Log.e(TAG, "Error registering plugin path_provider, io.flutter.plugins.pathprovider.PathProviderPlugin", e);
59+
}
60+
try {
61+
flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin());
62+
} catch(Exception e) {
63+
Log.e(TAG, "Error registering plugin shared_preferences, io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin", e);
64+
}
65+
try {
66+
flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin());
67+
} catch(Exception e) {
68+
Log.e(TAG, "Error registering plugin sqflite, com.tekartik.sqflite.SqflitePlugin", e);
69+
}
70+
try {
71+
flutterEngine.getPlugins().add(new eu.simonbinder.sqlite3_flutter_libs.Sqlite3FlutterLibsPlugin());
72+
} catch(Exception e) {
73+
Log.e(TAG, "Error registering plugin sqlite3_flutter_libs, eu.simonbinder.sqlite3_flutter_libs.Sqlite3FlutterLibsPlugin", e);
74+
}
75+
try {
76+
flutterEngine.getPlugins().add(new io.flutter.plugins.urllauncher.UrlLauncherPlugin());
77+
} catch(Exception e) {
78+
Log.e(TAG, "Error registering plugin url_launcher, io.flutter.plugins.urllauncher.UrlLauncherPlugin", e);
79+
}
80+
}
81+
}

android/local.properties

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
sdk.dir=C:\\Users\\sdaia\\AppData\\Local\\Android\\Sdk
2+
flutter.sdk=C:\\flutter

example/lib/database/models/recent_chat.dart

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import 'package:floor/floor.dart';
22
import 'package:flutter_chat_mqtt/models/enums.dart';
3-
@DatabaseView("SELECT m.id lastMessageId, m.type as lastMessageType, m.fromId lastMessageFromId, m.text lastMessageText, m.fromName lastMessageFromName, m.roomId roomId, r.name name, r.avatar avatar, r.isGroup isGroup FROM message m"
3+
4+
@DatabaseView(
5+
"SELECT m.id lastMessageId, m.type as lastMessageType, m.fromId lastMessageFromId, m.text lastMessageText, m.fromName lastMessageFromName, m.roomId roomId, r.name name, r.avatar avatar, r.isGroup isGroup FROM message m"
46
" "
57
" "
68
"JOIN room r ON r.id = m.roomId "
7-
"JOIN (SELECT MAX(sendTime) maxtime, fromId from message group by fromId) latest on m.sendTime = latest.maxtime and m.fromId = latest.fromID ")
8-
9+
"JOIN (SELECT MAX(sendTime) maxtime, fromId, roomId from message group by roomId) latest on m.sendTime = latest.maxtime and m.roomId = latest.roomId ")
910
class RecentChat {
1011
final String roomId;
1112
final String name;

example/lib/main.dart

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import 'package:example/mqtt_db_bridge/app_data.dart';
2-
import 'package:example/ui/screens/login_screen.dart';
32
import 'package:example/ui/screens/splash_screen.dart';
4-
import 'package:example/ui/screens/test_page.dart';
53
import 'package:flutter/material.dart';
64
import 'package:flutter_riverpod/flutter_riverpod.dart';
75

86
void main() {
97
AppData();
10-
runApp(ProviderScope(child: const MyApp()));
8+
runApp(const ProviderScope(child: MyApp()));
119
}
1210

1311
class MyApp extends StatelessWidget {
@@ -23,4 +21,4 @@ class MyApp extends StatelessWidget {
2321
home: const SplashScreen(),
2422
);
2523
}
26-
}
24+
}

example/lib/ui/screens/chat_room_screen.dart

+20-14
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
1-
import 'dart:math';
2-
31
import 'package:example/database/models/room.dart';
4-
import 'package:example/database/models/user.dart';
52
import 'package:example/proviers/chat_providers.dart';
63
import 'package:example/proviers/user_provider.dart';
74
import 'package:example/ui/extensions/messages_extensions.dart';
5+
import 'package:example/ui/widgets/room_avatar.dart';
86
import 'package:example/ui/widgets/typing_indicator_text.dart';
97
import 'package:flutter/material.dart';
108
import 'package:flutter_chat_mqtt/chat_app.dart';
@@ -39,13 +37,16 @@ class _ChatRoomScreenState extends ConsumerState<ChatRoomScreen> {
3937
title: Column(
4038
children: [
4139
Text(widget.room.name),
42-
TypingIndicatorText(roomId: widget.room.id, isGroup: widget.room.isGroup, currentUserId: user!.id)
40+
TypingIndicatorText(
41+
roomId: widget.room.id,
42+
isGroup: widget.room.isGroup,
43+
currentUserId: user!.id)
4344
],
4445
),
4546
actions: [
4647
Padding(
4748
padding: const EdgeInsets.all(8.0),
48-
child: CircleAvatar(foregroundImage: NetworkImage(widget.room.avatar ?? '')),
49+
child: RoomAvatar(room: widget.room),
4950
)
5051
],
5152
),
@@ -54,19 +55,23 @@ class _ChatRoomScreenState extends ConsumerState<ChatRoomScreen> {
5455
messages: messages
5556
.map((m) => m.toUiMessage(
5657
userId: m.fromId!, name: m.fromName ?? ""))
57-
.toList().reversed.toList(),
58+
.toList()
59+
.reversed
60+
.toList(),
5861
onTextChanged: _handleTextChanged,
5962
onAttachmentPressed: () {},
6063
onMessageTap: (c, m) {},
6164
onPreviewDataFetched: (tm, p) {},
6265
onSendPressed: _handleSendPressed,
6366
showUserAvatars: widget.room.isGroup,
64-
onMessageVisibilityChanged: (message, visible){
65-
if(visible && message.status != types.Status.seen){
66-
ChatApp.instance()!.eventsSender.sendChatMarker(message.id, ChatMarker.displayed, widget.room.id);
67+
onMessageVisibilityChanged: (message, visible) {
68+
if (visible && message.status != types.Status.seen) {
69+
ChatApp.instance()!.eventsSender.sendChatMarker(
70+
message.id, ChatMarker.displayed, widget.room.id);
6771
}
6872
},
69-
user: types.User(id: user.id, firstName: user.name, imageUrl: user.avatar),
73+
user: types.User(
74+
id: user.id, firstName: user.name, imageUrl: user.avatar),
7075
),
7176
error: (e, s) => Text(e.toString()),
7277
loading: () => Text("Loading...")),
@@ -84,14 +89,15 @@ class _ChatRoomScreenState extends ConsumerState<ChatRoomScreen> {
8489
sendTime: DateTime.now().millisecondsSinceEpoch),
8590
widget.room.id);
8691
}
87-
void _handleTextChanged(String text){
88-
if(text.length % 3 == 0){
92+
93+
void _handleTextChanged(String text) {
94+
if (text.length % 3 == 0) {
8995
ChatApp.instance()!.eventsSender.sendIsTyping(true, widget.room.id);
9096
lastTypingSentTime = DateTime.now();
9197

9298
//if nothing changed in 3 seconds send is typing false
93-
Future.delayed(const Duration(seconds: 3), (){
94-
if(DateTime.now().difference(lastTypingSentTime!).inSeconds > 2){
99+
Future.delayed(const Duration(seconds: 3), () {
100+
if (DateTime.now().difference(lastTypingSentTime!).inSeconds > 2) {
95101
ChatApp.instance()!.eventsSender.sendIsTyping(false, widget.room.id);
96102
}
97103
});

0 commit comments

Comments
 (0)