Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
vmeeting
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Inomjon
vmeeting
Commits
80134289
Commit
80134289
authored
Nov 01, 2023
by
Inomjon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Call cannection to app
parent
c02b32ca
Changes
20
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
635 additions
and
73 deletions
+635
-73
contact_avatar.png
assets/contact_avatar.png
+0
-0
app_users_model.dart
lib/app_models/app_users_model/app_users_model.dart
+106
-0
home_page_bloc.dart
lib/blocs/home_page_bloc/home_page_bloc.dart
+21
-0
home_page_event.dart
lib/blocs/home_page_bloc/home_page_event.dart
+9
-0
home_page_state.dart
lib/blocs/home_page_bloc/home_page_state.dart
+23
-0
user_log_in_bloc.dart
lib/blocs/user_login_bloc/user_log_in_bloc.dart
+33
-0
user_log_in_event.dart
lib/blocs/user_login_bloc/user_log_in_event.dart
+27
-0
user_log_in_state.dart
lib/blocs/user_login_bloc/user_log_in_state.dart
+26
-0
user_sign_up_bloc.dart
lib/blocs/user_sign_up_bloc/user_sign_up_bloc.dart
+10
-0
user_sign_up_event.dart
lib/blocs/user_sign_up_bloc/user_sign_up_event.dart
+8
-0
app_routes.dart
lib/service/routes/app_routes.dart
+11
-3
user_repo.dart
lib/service/user_repositores/user_repo.dart
+90
-0
app_utils.dart
lib/src/utils/app_utils.dart
+3
-0
pref_util.dart
lib/src/utils/pref_util.dart
+9
-10
image_avatar.dart
lib/src/widgets/image_avatar.dart
+33
-0
home_page.dart
lib/views/home_view/home_page.dart
+53
-7
main_page.dart
lib/views/main_view/main_page.dart
+11
-3
profile_page.dart
lib/views/profile_view/profile_page.dart
+97
-4
signin_page.dart
lib/views/signin_view/signin_page.dart
+50
-25
signup_page.dart
lib/views/signup_view/signup_page.dart
+15
-21
No files found.
assets/contact_avatar.png
0 → 100644
View file @
80134289
14.5 KB
lib/app_models/app_users_model/app_users_model.dart
0 → 100644
View file @
80134289
class
AppUsersModel
{
User
?
user
;
AppUsersModel
({
this
.
user
});
AppUsersModel
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
user
=
json
[
'user'
]
!=
null
?
User
.
fromJson
(
json
[
'user'
])
:
null
;
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
<
String
,
dynamic
>{};
if
(
user
!=
null
)
{
data
[
'user'
]
=
user
!.
toJson
();
}
return
data
;
}
}
class
User
{
String
?
sId
;
int
?
id
;
String
?
createdAt
;
String
?
updatedAt
;
String
?
lastRequestAt
;
String
?
timezone
;
String
?
login
;
String
?
email
;
String
?
fullName
;
String
?
phone
;
String
?
website
;
String
?
twitterId
;
String
?
externalUserId
;
String
?
facebookId
;
String
?
customData
;
String
?
userTags
;
String
?
avatar
;
String
?
externalId
;
String
?
isGuest
;
User
(
{
this
.
sId
,
this
.
id
,
this
.
createdAt
,
this
.
updatedAt
,
this
.
lastRequestAt
,
this
.
timezone
,
this
.
login
,
this
.
email
,
this
.
fullName
,
this
.
phone
,
this
.
website
,
this
.
twitterId
,
this
.
externalUserId
,
this
.
facebookId
,
this
.
customData
,
this
.
userTags
,
this
.
avatar
,
this
.
externalId
,
this
.
isGuest
});
User
.
fromJson
(
Map
<
String
,
dynamic
>
json
)
{
sId
=
json
[
'_id'
];
id
=
json
[
'id'
];
createdAt
=
json
[
'created_at'
];
updatedAt
=
json
[
'updated_at'
];
lastRequestAt
=
json
[
'last_request_at'
];
timezone
=
json
[
'timezone'
].
toString
();
login
=
json
[
'login'
];
email
=
json
[
'email'
];
fullName
=
json
[
'full_name'
];
phone
=
json
[
'phone'
];
website
=
json
[
'website'
];
twitterId
=
json
[
'twitter_id'
];
externalUserId
=
json
[
'external_user_id'
].
toString
();
facebookId
=
json
[
'facebook_id'
];
customData
=
json
[
'custom_data'
].
toString
();
userTags
=
json
[
'user_tags'
].
toString
();
avatar
=
json
[
'avatar'
];
externalId
=
json
[
'external_id'
];
isGuest
=
json
[
'is_guest'
].
toString
();
}
Map
<
String
,
dynamic
>
toJson
()
{
final
Map
<
String
,
dynamic
>
data
=
<
String
,
dynamic
>{};
data
[
'_id'
]
=
sId
;
data
[
'id'
]
=
id
;
data
[
'created_at'
]
=
createdAt
;
data
[
'updated_at'
]
=
updatedAt
;
data
[
'last_request_at'
]
=
lastRequestAt
;
data
[
'timezone'
]
=
timezone
;
data
[
'login'
]
=
login
;
data
[
'email'
]
=
email
;
data
[
'full_name'
]
=
fullName
;
data
[
'phone'
]
=
phone
;
data
[
'website'
]
=
website
;
data
[
'twitter_id'
]
=
twitterId
;
data
[
'external_user_id'
]
=
externalUserId
;
data
[
'facebook_id'
]
=
facebookId
;
data
[
'custom_data'
]
=
customData
;
data
[
'user_tags'
]
=
userTags
;
data
[
'avatar'
]
=
avatar
;
data
[
'external_id'
]
=
externalId
;
data
[
'is_guest'
]
=
isGuest
;
return
data
;
}
}
\ No newline at end of file
lib/blocs/home_page_bloc/home_page_bloc.dart
0 → 100644
View file @
80134289
import
'dart:async'
;
import
'package:bloc/bloc.dart'
;
import
'package:equatable/equatable.dart'
;
import
'package:meta/meta.dart'
;
import
'package:vmeeting/service/user_repositores/user_repo.dart'
;
import
'../../app_models/app_users_model/app_users_model.dart'
;
part
'home_page_event.dart'
;
part
'home_page_state.dart'
;
class
HomePageBloc
extends
Bloc
<
HomePageEvent
,
HomePageState
>
{
late
List
<
AppUsersModel
>
appUsersModelList
=
[];
HomePageBloc
()
:
super
(
HomePageInitialState
()){
on
<
HomePageFetchEvent
>((
event
,
emit
)
async
{
appUsersModelList
.
addAll
(
await
UserRepository
.
getInstance
().
getAppAllUsers
());
emit
(
HomePageLoadedState
(
appUsersModelList:
appUsersModelList
));
});
}
}
lib/blocs/home_page_bloc/home_page_event.dart
0 → 100644
View file @
80134289
part of
'home_page_bloc.dart'
;
@immutable
abstract
class
HomePageEvent
extends
Equatable
{}
class
HomePageFetchEvent
extends
HomePageEvent
{
@override
List
<
Object
?>
get
props
=>
[];
}
lib/blocs/home_page_bloc/home_page_state.dart
0 → 100644
View file @
80134289
part of
'home_page_bloc.dart'
;
@immutable
abstract
class
HomePageState
extends
Equatable
{}
class
HomePageInitialState
extends
HomePageState
{
@override
List
<
Object
?>
get
props
=>
[];
}
class
HomePageLoadedState
extends
HomePageState
{
final
List
<
AppUsersModel
>
appUsersModelList
;
HomePageLoadedState
({
required
this
.
appUsersModelList
});
@override
List
<
Object
?>
get
props
=>
[
appUsersModelList
];
}
class
HomePageExceptionState
extends
HomePageState
{
final
String
message
;
HomePageExceptionState
({
required
this
.
message
});
@override
List
<
Object
?>
get
props
=>
[
message
];
}
lib/blocs/user_login_bloc/user_log_in_bloc.dart
0 → 100644
View file @
80134289
import
'package:bloc/bloc.dart'
;
import
'package:connectycube_sdk/connectycube_calls.dart'
;
import
'package:equatable/equatable.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:meta/meta.dart'
;
import
'package:vmeeting/src/controllers/enter_number_cont.dart'
;
import
'../../service/user_repositores/user_repo.dart'
;
part
'user_log_in_event.dart'
;
part
'user_log_in_state.dart'
;
class
UserLogInBloc
extends
Bloc
<
UserLogInEvent
,
UserLogInState
>
{
UserLogInBloc
()
:
super
(
UserLogInInitialState
())
{
on
<
UserLogInFetchEvent
>((
event
,
emit
)
{
emit
(
UserLogInLoadedState
());
});
on
<
UserLogInChakingEvent
>((
event
,
emit
)
async
{
UserRepository
.
getInstance
().
userSigIn
(
context:
event
.
context
,
user:
event
.
user
,
controller:
event
.
controller
);
});
on
<
UserLogInChakedEvent
>((
event
,
emit
)
async
{
emit
(
UserLogInInitialState
());
bool
response
=
await
UserRepository
.
getInstance
().
userSigIn
(
context:
event
.
context
,
user:
event
.
user
,
controller:
event
.
controller
);
if
(
response
==
false
){
emit
(
UserLogInLoadedState
());
}
});
}
}
lib/blocs/user_login_bloc/user_log_in_event.dart
0 → 100644
View file @
80134289
part of
'user_log_in_bloc.dart'
;
@immutable
abstract
class
UserLogInEvent
extends
Equatable
{}
class
UserLogInFetchEvent
extends
UserLogInEvent
{
@override
List
<
Object
?>
get
props
=>
[];
}
class
UserLogInChakingEvent
extends
UserLogInEvent
{
final
BuildContext
context
;
final
CubeUser
user
;
final
NumberController
controller
;
UserLogInChakingEvent
({
required
this
.
controller
,
required
this
.
context
,
required
this
.
user
});
@override
List
<
Object
?>
get
props
=>
[
context
,
user
,
controller
];
}
class
UserLogInChakedEvent
extends
UserLogInEvent
{
final
BuildContext
context
;
final
CubeUser
user
;
final
NumberController
controller
;
UserLogInChakedEvent
({
required
this
.
controller
,
required
this
.
context
,
required
this
.
user
});
@override
List
<
Object
?>
get
props
=>
[
context
,
user
,
controller
];
}
\ No newline at end of file
lib/blocs/user_login_bloc/user_log_in_state.dart
0 → 100644
View file @
80134289
part of
'user_log_in_bloc.dart'
;
@immutable
abstract
class
UserLogInState
extends
Equatable
{}
class
UserLogInInitialState
extends
UserLogInState
{
@override
List
<
Object
?>
get
props
=>
[];
}
class
UserLogInLoadedState
extends
UserLogInState
{
@override
List
<
Object
?>
get
props
=>
[];
}
class
UserLogInInChackingState
extends
UserLogInState
{
@override
List
<
Object
?>
get
props
=>
[];
}
class
UserLogInExceptionState
extends
UserLogInState
{
final
String
?
message
;
UserLogInExceptionState
({
required
this
.
message
});
@override
List
<
Object
?>
get
props
=>
[
message
];
}
\ No newline at end of file
lib/blocs/user_sign_up_bloc/user_sign_up_bloc.dart
View file @
80134289
import
'package:bloc/bloc.dart'
;
import
'package:bloc/bloc.dart'
;
import
'package:connectycube_sdk/connectycube_calls.dart'
;
import
'package:equatable/equatable.dart'
;
import
'package:equatable/equatable.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:meta/meta.dart'
;
import
'package:meta/meta.dart'
;
import
'../../service/user_repositores/user_repo.dart'
;
import
'../../src/controllers/enter_number_cont.dart'
;
part
'user_sign_up_event.dart'
;
part
'user_sign_up_event.dart'
;
part
'user_sign_up_state.dart'
;
part
'user_sign_up_state.dart'
;
...
@@ -10,5 +15,10 @@ class UserSignUpBloc extends Bloc<UserSignUpEvent, UserSignUpState> {
...
@@ -10,5 +15,10 @@ class UserSignUpBloc extends Bloc<UserSignUpEvent, UserSignUpState> {
on
<
UserSignUpFetchEvent
>((
event
,
emit
)
{
on
<
UserSignUpFetchEvent
>((
event
,
emit
)
{
emit
(
UserSignUpLoadedState
());
emit
(
UserSignUpLoadedState
());
});
});
on
<
UserSignUpChakingEvent
>((
event
,
emit
)
{
UserRepository
.
getInstance
().
userSigUp
(
context:
event
.
context
,
user:
event
.
user
,
controller:
event
.
controller
);
emit
(
UserSignUpLoadedState
());
});
}
}
}
}
lib/blocs/user_sign_up_bloc/user_sign_up_event.dart
View file @
80134289
...
@@ -7,3 +7,11 @@ class UserSignUpFetchEvent extends UserSignUpEvent{
...
@@ -7,3 +7,11 @@ class UserSignUpFetchEvent extends UserSignUpEvent{
@override
@override
List
<
Object
?>
get
props
=>
[];
List
<
Object
?>
get
props
=>
[];
}
}
class
UserSignUpChakingEvent
extends
UserSignUpEvent
{
final
BuildContext
context
;
final
CubeUser
user
;
final
NumberController
controller
;
UserSignUpChakingEvent
({
required
this
.
controller
,
required
this
.
context
,
required
this
.
user
});
@override
List
<
Object
?>
get
props
=>
[
context
,
user
,
controller
];
}
lib/service/routes/app_routes.dart
View file @
80134289
...
@@ -5,6 +5,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
...
@@ -5,6 +5,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import
'package:vmeeting/blocs/user_sign_up_bloc/user_sign_up_bloc.dart'
;
import
'package:vmeeting/blocs/user_sign_up_bloc/user_sign_up_bloc.dart'
;
import
'package:vmeeting/service/routes/routes_name.dart'
;
import
'package:vmeeting/service/routes/routes_name.dart'
;
import
'package:vmeeting/views/main_view/main_page.dart'
;
import
'package:vmeeting/views/main_view/main_page.dart'
;
import
'../../blocs/user_login_bloc/user_log_in_bloc.dart'
;
import
'../../src/controllers/enter_number_cont.dart'
;
import
'../../src/controllers/enter_number_cont.dart'
;
import
'../../views/signin_view/signin_page.dart'
;
import
'../../views/signin_view/signin_page.dart'
;
import
'../../views/signup_view/signup_page.dart'
;
import
'../../views/signup_view/signup_page.dart'
;
...
@@ -39,9 +40,6 @@ class MainNavigator extends StatelessWidget {
...
@@ -39,9 +40,6 @@ class MainNavigator extends StatelessWidget {
case
MainRoutes
.
main_page
:
case
MainRoutes
.
main_page
:
builder
=
(
BuildContext
_
)
=>
MainPage
(
controller:
controller
);
builder
=
(
BuildContext
_
)
=>
MainPage
(
controller:
controller
);
break
;
break
;
case
MainRoutes
.
sign_in_page
:
builder
=
(
BuildContext
_
)
=>
UserSignInPage
(
controller:
controller
);
break
;
case
MainRoutes
.
user_signup_page
:
case
MainRoutes
.
user_signup_page
:
builder
=
(
BuildContext
_
)
=>
MultiBlocProvider
(
builder
=
(
BuildContext
_
)
=>
MultiBlocProvider
(
providers:
[
providers:
[
...
@@ -52,6 +50,16 @@ class MainNavigator extends StatelessWidget {
...
@@ -52,6 +50,16 @@ class MainNavigator extends StatelessWidget {
child:
UserSignUpPage
(
controller:
controller
),
child:
UserSignUpPage
(
controller:
controller
),
);
);
break
;
break
;
case
MainRoutes
.
sign_in_page
:
builder
=
(
BuildContext
_
)
=>
MultiBlocProvider
(
providers:
[
BlocProvider
<
UserLogInBloc
>(
create:
(
context
)
=>
UserLogInBloc
(),
),
],
child:
UserSignInPage
(
controller:
controller
),
);
break
;
}
}
if
(
builder
!=
null
)
{
if
(
builder
!=
null
)
{
return
MaterialPageRoute
(
builder:
builder
,
settings:
settings
);
return
MaterialPageRoute
(
builder:
builder
,
settings:
settings
);
...
...
lib/service/user_repositores/user_repo.dart
0 → 100644
View file @
80134289
import
'package:connectycube_sdk/connectycube_calls.dart'
;
import
'package:flutter/cupertino.dart'
;
import
'package:vmeeting/src/controllers/enter_number_cont.dart'
;
import
'../../app_models/app_users_model/app_users_model.dart'
;
import
'../../app_models/user_model/user_model.dart'
;
import
'../../src/utils/app_utils.dart'
;
import
'../../src/utils/pref_util.dart'
;
import
'../../src/utils/show_dialogs.dart'
;
import
'../routes/routes_name.dart'
;
class
UserRepository
{
static
final
UserRepository
_singleton
=
UserRepository
.
_internal
();
UserRepository
.
_internal
();
static
UserRepository
getInstance
()
{
return
_singleton
;
}
Future
<
bool
>
userSigIn
({
required
BuildContext
context
,
required
CubeUser
user
,
required
NumberController
controller
})
async
{
bool
isChaking
=
true
;
await
signIn
(
user
).
then
((
cubeUser
)
async
{
AppUtils
.
userModel
=
UserModel
(
id:
cubeUser
.
id
,
login:
cubeUser
.
login
,
email:
cubeUser
.
email
,
fullName:
cubeUser
.
fullName
);
controller
.
inputElevatedButton
.
add
(
false
);
SharedPrefs
.
saveNewUser
(
user
);
Navigator
.
pushReplacementNamed
(
context
,
MainRoutes
.
main_page
);
isChaking
=
true
;
})
.
catchError
((
error
){
controller
.
inputElevatedButton
.
add
(
false
);
errorMessage
(
context
);
print
(
error
);
isChaking
=
false
;
});
return
isChaking
;
}
Future
<
void
>
userSigUp
({
required
BuildContext
context
,
required
CubeUser
user
,
required
NumberController
controller
})
async
{
signUp
(
user
).
then
((
cubeUser
)
{
AppUtils
.
userModel
=
UserModel
(
id:
cubeUser
.
id
,
login:
cubeUser
.
login
,
email:
cubeUser
.
email
,
fullName:
cubeUser
.
fullName
);
SharedPrefs
.
saveNewUser
(
user
);
controller
.
inputElevatedButton
.
add
(
false
);
Navigator
.
pushReplacementNamed
(
context
,
MainRoutes
.
main_page
);
})
.
catchError
((
error
){
controller
.
inputElevatedButton
.
add
(
false
);
errorMessage
(
context
);
print
(
error
);
});
}
Future
<
List
<
AppUsersModel
>>
getAppAllUsers
()
async
{
List
<
AppUsersModel
>
appUsersModelList
=
[];
await
getAllUsers
().
then
((
response
)
{
print
(
"Shu yerda
$response
"
);
for
(
var
item
in
response
!.
items
){
appUsersModelList
.
add
(
AppUsersModel
(
user:
User
(
fullName:
item
.
fullName
,
email:
item
.
email
,
login:
item
.
login
,
id:
item
.
id
,
avatar:
item
.
avatar
,
createdAt:
item
.
createdAt
?.
timeZoneName
,
customData:
item
.
customData
,
externalId:
item
.
externalId
.
toString
(),
externalUserId:
item
.
externalUserId
.
toString
(),
facebookId:
item
.
facebookId
,
isGuest:
item
.
isGuest
.
toString
(),
lastRequestAt:
item
.
lastRequestAt
?.
toIso8601String
(),
phone:
item
.
phone
,
)
));
}
}).
catchError
((
onError
){
});
return
appUsersModelList
;
}
}
\ No newline at end of file
lib/src/utils/app_utils.dart
View file @
80134289
...
@@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
...
@@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
import
'package:google_fonts/google_fonts.dart'
;
import
'package:google_fonts/google_fonts.dart'
;
import
'package:vmeeting/src/constants/colors_const.dart'
;
import
'package:vmeeting/src/constants/colors_const.dart'
;
import
'../../app_models/user_model/user_model.dart'
;
class
AppUtils
{
class
AppUtils
{
static
Widget
buttonLoader
=
SizedBox
(
static
Widget
buttonLoader
=
SizedBox
(
width:
30
,
width:
30
,
...
@@ -32,5 +34,6 @@ class AppUtils {
...
@@ -32,5 +34,6 @@ class AppUtils {
);
);
ScaffoldMessenger
.
of
(
context
).
showSnackBar
(
snackdemo
);
ScaffoldMessenger
.
of
(
context
).
showSnackBar
(
snackdemo
);
}
}
static
UserModel
userModel
=
UserModel
();
}
}
lib/src/utils/pref_util.dart
View file @
80134289
...
@@ -28,13 +28,12 @@ class SharedPrefs {
...
@@ -28,13 +28,12 @@ class SharedPrefs {
static
Future
<
bool
>
saveNewUser
(
CubeUser
cubeUser
)
{
static
Future
<
bool
>
saveNewUser
(
CubeUser
cubeUser
)
{
return
getPrefs
().
then
((
prefs
)
{
return
getPrefs
().
then
((
prefs
)
{
prefs
.
clear
();
prefs
.
clear
();
prefs
.
setString
(
prefUserLogin
,
cubeUser
.
login
!
);
prefs
.
setString
(
prefUserLogin
,
cubeUser
.
login
??
""
);
prefs
.
setString
(
prefUserPsw
,
cubeUser
.
password
!
);
prefs
.
setString
(
prefUserPsw
,
cubeUser
.
password
??
""
);
prefs
.
setString
(
prefUserName
,
cubeUser
.
fullName
!
);
prefs
.
setString
(
prefUserName
,
cubeUser
.
fullName
??
""
);
prefs
.
setInt
(
prefUserId
,
cubeUser
.
id
!
);
prefs
.
setInt
(
prefUserId
,
cubeUser
.
id
??
0
);
if
(
cubeUser
.
avatar
!=
null
)
if
(
cubeUser
.
avatar
!=
null
)
prefs
.
setString
(
prefUserAvatar
,
cubeUser
.
avatar
!);
prefs
.
setString
(
prefUserAvatar
,
cubeUser
.
avatar
??
""
);
return
Future
.
value
(
true
);
return
Future
.
value
(
true
);
});
});
}
}
...
@@ -42,13 +41,13 @@ class SharedPrefs {
...
@@ -42,13 +41,13 @@ class SharedPrefs {
static
Future
<
bool
>
updateUser
(
CubeUser
cubeUser
)
{
static
Future
<
bool
>
updateUser
(
CubeUser
cubeUser
)
{
return
getPrefs
().
then
((
prefs
)
{
return
getPrefs
().
then
((
prefs
)
{
if
(
cubeUser
.
password
!=
null
)
if
(
cubeUser
.
password
!=
null
)
prefs
.
setString
(
prefUserPsw
,
cubeUser
.
password
!
);
prefs
.
setString
(
prefUserPsw
,
cubeUser
.
password
??
""
);
if
(
cubeUser
.
login
!=
null
)
if
(
cubeUser
.
login
!=
null
)
prefs
.
setString
(
prefUserLogin
,
cubeUser
.
login
!
);
prefs
.
setString
(
prefUserLogin
,
cubeUser
.
login
??
""
);
if
(
cubeUser
.
fullName
!=
null
)
if
(
cubeUser
.
fullName
!=
null
)
prefs
.
setString
(
prefUserName
,
cubeUser
.
fullName
!
);
prefs
.
setString
(
prefUserName
,
cubeUser
.
fullName
??
""
);
if
(
cubeUser
.
avatar
!=
null
)
if
(
cubeUser
.
avatar
!=
null
)
prefs
.
setString
(
prefUserAvatar
,
cubeUser
.
avatar
!
);
prefs
.
setString
(
prefUserAvatar
,
cubeUser
.
avatar
??
""
);
return
Future
.
value
(
true
);
return
Future
.
value
(
true
);
});
});
...
...
lib/src/widgets/image_avatar.dart
0 → 100644
View file @
80134289
import
'package:flutter/material.dart'
;
import
'../constants/colors_const.dart'
;
class
AvatarImage
extends
StatelessWidget
{
final
double
radius
;
final
String
imagePath
;
const
AvatarImage
({
Key
?
key
,
this
.
radius
=
60
,
required
this
.
imagePath
})
:
super
(
key:
key
);
@override
Widget
build
(
BuildContext
context
)
{
return
Container
(
width:
radius
*
1.8
,
height:
radius
*
1.8
,
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
60
),
color:
ColorConst
.
appWhiteColor
),
child:
Padding
(
padding:
const
EdgeInsets
.
all
(
8.0
),
child:
Center
(
child:
Image
.
asset
(
imagePath
,
width:
radius
*
1.8
,
height:
radius
*
1.8
,
fit:
BoxFit
.
fill
,
),
),
),
);
}
}
\ No newline at end of file
lib/views/home_view/home_page.dart
View file @
80134289
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:vmeeting/src/constants/colors_const.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
import
'package:vmeeting/src/widgets/big_text_widget.dart'
;
import
'package:vmeeting/app_models/app_users_model/app_users_model.dart'
;
import
'package:vmeeting/blocs/home_page_bloc/home_page_bloc.dart'
;
import
'package:vmeeting/src/controllers/enter_number_cont.dart'
;
import
'package:vmeeting/src/widgets/small_text.dart'
;
import
'../../service/routes/routes_name.dart'
;
import
'../../src/widgets/custom_loading/customloading.dart'
;
import
'../../src/widgets/exceptions/app_exeptions.dart'
;
import
'../../src/controllers/enter_number_cont.dart'
;
class
HomePage
extends
StatefulWidget
{
class
HomePage
extends
StatelessWidget
{
final
NumberController
controller
;
final
NumberController
controller
;
const
HomePage
({
super
.
key
,
required
this
.
controller
});
const
HomePage
({
super
.
key
,
required
this
.
controller
});
@override
State
<
HomePage
>
createState
()
=>
_HomePageState
();
}
class
_HomePageState
extends
State
<
HomePage
>
{
late
HomePageBloc
homePageBloc
;
@override
void
initState
()
{
super
.
initState
();
homePageBloc
=
BlocProvider
.
of
<
HomePageBloc
>(
context
);
homePageBloc
.
add
(
HomePageFetchEvent
());
}
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Center
(
return
Scaffold
(
child:
BigText
(
text:
"Salom"
,
color:
ColorConst
.
appMainBackgroundColor
,)
body:
BlocConsumer
<
HomePageBloc
,
HomePageState
>(
listener:
(
context
,
state
)
{},
builder:
(
context
,
state
)
{
if
(
state
is
HomePageInitialState
)
{
return
buildLoading
();
}
else
if
(
state
is
HomePageLoadedState
)
{
return
buildUI
(
state
.
appUsersModelList
);
}
if
(
state
is
HomePageExceptionState
)
{
return
const
Center
(
child:
AppExceptionsWidget
(
message:
"Exception"
,
authName:
MainRoutes
.
main_page
));
}
return
const
Center
(
child:
Text
(
"AloVoice"
));
},
),
);
);
}
}
Widget
buildUI
(
List
<
AppUsersModel
>
appUserModelList
)
{
return
ListView
.
builder
(
itemCount:
appUserModelList
.
length
,
itemBuilder:
(
BuildContext
context
,
int
index
){
return
SmallText
(
text:
appUserModelList
[
index
].
user
?.
fullName
??
""
);
});
}
Widget
buildLoading
()
{
return
Center
(
child:
CustomLoading
());
}
}
}
\ No newline at end of file
lib/views/main_view/main_page.dart
View file @
80134289
import
'package:curved_navigation_bar/curved_navigation_bar.dart'
;
import
'package:curved_navigation_bar/curved_navigation_bar.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
import
'package:vmeeting/blocs/home_page_bloc/home_page_bloc.dart'
;
import
'package:vmeeting/src/controllers/enter_number_cont.dart'
;
import
'package:vmeeting/src/controllers/enter_number_cont.dart'
;
import
'package:vmeeting/views/home_view/home_page.dart'
;
import
'package:vmeeting/views/home_view/home_page.dart'
;
import
'package:vmeeting/views/profile_view/profile_page.dart'
;
import
'package:vmeeting/views/profile_view/profile_page.dart'
;
import
'package:vmeeting/views/users_view/users_page.dart'
;
import
'package:vmeeting/views/users_view/users_page.dart'
;
import
'../../src/constants/colors_const.dart'
;
import
'../../src/constants/colors_const.dart'
;
class
MainPage
extends
StatefulWidget
{
class
MainPage
extends
StatefulWidget
{
...
@@ -18,7 +19,14 @@ class MainPage extends StatefulWidget {
...
@@ -18,7 +19,14 @@ class MainPage extends StatefulWidget {
class
_MainPageState
extends
State
<
MainPage
>
{
class
_MainPageState
extends
State
<
MainPage
>
{
int
current_index
=
0
;
int
current_index
=
0
;
late
List
<
Widget
>
pages
=
[
late
List
<
Widget
>
pages
=
[
HomePage
(
controller:
widget
.
controller
),
MultiBlocProvider
(
providers:
[
BlocProvider
<
HomePageBloc
>(
create:
(
context
)
=>
HomePageBloc
(),
),
],
child:
HomePage
(
controller:
widget
.
controller
),
),
AllUsersViewPage
(
controller:
widget
.
controller
),
AllUsersViewPage
(
controller:
widget
.
controller
),
ProfilePage
(
controller:
widget
.
controller
)
ProfilePage
(
controller:
widget
.
controller
)
];
];
...
@@ -39,7 +47,7 @@ class _MainPageState extends State<MainPage> {
...
@@ -39,7 +47,7 @@ class _MainPageState extends State<MainPage> {
borderRadius:
BorderRadius
.
circular
(
50
),
borderRadius:
BorderRadius
.
circular
(
50
),
child:
CurvedNavigationBar
(
child:
CurvedNavigationBar
(
height:
50
,
height:
50
,
backgroundColor:
ColorConst
.
app
Grean
Color
,
backgroundColor:
ColorConst
.
app
Background
Color
,
color:
ColorConst
.
appGreenColor
,
color:
ColorConst
.
appGreenColor
,
buttonBackgroundColor:
ColorConst
.
appGreenColor
,
buttonBackgroundColor:
ColorConst
.
appGreenColor
,
onTap:
OnTapped
,
onTap:
OnTapped
,
...
...
lib/views/profile_view/profile_page.dart
View file @
80134289
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:vmeeting/src/extension/context_extensions.dart'
;
import
'package:vmeeting/src/widgets/small_text.dart'
;
import
'../../src/constants/colors_const.dart'
;
import
'../../src/controllers/enter_number_cont.dart'
;
import
'../../src/controllers/enter_number_cont.dart'
;
import
'../../src/utils/app_utils.dart'
;
import
'../../src/widgets/big_text_widget.dart'
;
import
'../../src/widgets/image_avatar.dart'
;
class
ProfilePage
extends
StatelessWidget
{
class
ProfilePage
extends
StatelessWidget
{
final
NumberController
controller
;
final
NumberController
controller
;
...
@@ -9,9 +14,97 @@ class ProfilePage extends StatelessWidget {
...
@@ -9,9 +14,97 @@ class ProfilePage extends StatelessWidget {
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
return
Scaffold
(
body:
Center
(
body:
buildUI
(
context
),
child:
Text
(
"Profil Page"
),
);
}
Widget
buildUI
(
BuildContext
context
)
{
return
Container
(
margin:
EdgeInsets
.
symmetric
(
horizontal:
context
.
w
*
0.06
),
child:
SingleChildScrollView
(
child:
Column
(
children:
[
SizedBox
(
height:
context
.
h
*
0.1
),
buildImage
(
context
),
SizedBox
(
height:
context
.
h
*
0.1
),
buildDetails
(
context
),
],
),
)
);
}
Widget
buildDetails
(
BuildContext
context
)
{
return
Column
(
children:
[
Container
(
height:
context
.
h
*
0.06
,
decoration:
BoxDecoration
(
color:
ColorConst
.
appBackgroundColor
,
borderRadius:
BorderRadius
.
circular
(
12
)),
child:
Center
(
child:
SmallText
(
text:
AppUtils
.
userModel
.
id
.
toString
()
??
""
,
),
),
),
SizedBox
(
height:
context
.
h
*
0.03
),
Container
(
height:
context
.
h
*
0.06
,
decoration:
BoxDecoration
(
color:
ColorConst
.
appBackgroundColor
,
borderRadius:
BorderRadius
.
circular
(
12
)),
child:
Center
(
child:
SmallText
(
text:
AppUtils
.
userModel
.
fullName
??
""
,
),
),
),
),
SizedBox
(
height:
context
.
h
*
0.03
),
Container
(
height:
context
.
h
*
0.06
,
decoration:
BoxDecoration
(
color:
ColorConst
.
appBackgroundColor
,
borderRadius:
BorderRadius
.
circular
(
12
)),
child:
Center
(
child:
SmallText
(
text:
AppUtils
.
userModel
.
email
??
""
,
),
),
),
SizedBox
(
height:
context
.
h
*
0.12
),
buildButtons
(
context
),
],
);
}
Widget
buildButtons
(
BuildContext
context
)
{
return
ElevatedButton
(
style:
ElevatedButton
.
styleFrom
(
foregroundColor:
Colors
.
white
,
backgroundColor:
ColorConst
.
appGreenColor
,
disabledForegroundColor:
Colors
.
grey
.
withOpacity
(
0.38
),
disabledBackgroundColor:
Colors
.
grey
.
withOpacity
(
0.12
),
),
onPressed:
()
async
{},
child:
SizedBox
(
width:
context
.
w
*
0.8
,
height:
context
.
h
*
0.06
,
child:
Center
(
child:
BigText
(
text:
"Edit Profile"
.
toUpperCase
(),
fontWidget:
FontWeight
.
bold
,
size:
16
,
),
),
),
);
}
Widget
buildImage
(
BuildContext
context
)
{
return
Center
(
child:
AvatarImage
(
radius:
context
.
h
*
0.1
,
imagePath:
'assets/contact_avatar.png'
),
);
);
}
}
}
}
lib/views/signin_view/signin_page.dart
View file @
80134289
import
'package:connectycube_sdk/connectycube_calls.dart'
;
import
'package:connectycube_sdk/connectycube_calls.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_bloc/flutter_bloc.dart'
;
import
'package:vmeeting/blocs/user_login_bloc/user_log_in_bloc.dart'
;
import
'package:vmeeting/src/controllers/enter_number_cont.dart'
;
import
'package:vmeeting/src/controllers/enter_number_cont.dart'
;
import
'package:vmeeting/src/extension/context_extensions.dart'
;
import
'package:vmeeting/src/extension/context_extensions.dart'
;
import
'../../app_models/user_model/user_model.dart'
;
import
'../../service/routes/routes_name.dart'
;
import
'../../service/routes/routes_name.dart'
;
import
'../../src/constants/colors_const.dart'
;
import
'../../src/constants/colors_const.dart'
;
import
'../../src/utils/app_utils.dart'
;
import
'../../src/utils/app_utils.dart'
;
import
'../../src/utils/
show_dialogs
.dart'
;
import
'../../src/utils/
pref_util
.dart'
;
import
'../../src/widgets/big_text_widget.dart'
;
import
'../../src/widgets/big_text_widget.dart'
;
import
'../../src/widgets/custom_loading/customloading.dart'
;
import
'../../src/widgets/custom_loading/customloading.dart'
;
import
'../../src/widgets/exceptions/app_exeptions.dart'
;
import
'../../src/widgets/small_text.dart'
;
import
'../../src/widgets/textfiled_widgets/auth_text_fild.dart'
;
import
'../../src/widgets/textfiled_widgets/auth_text_fild.dart'
;
class
UserSignInPage
extends
StatefulWidget
{
class
UserSignInPage
extends
StatefulWidget
{
...
@@ -21,16 +23,46 @@ class UserSignInPage extends StatefulWidget {
...
@@ -21,16 +23,46 @@ class UserSignInPage extends StatefulWidget {
}
}
class
_UserSignInPageState
extends
State
<
UserSignInPage
>
{
class
_UserSignInPageState
extends
State
<
UserSignInPage
>
{
late
UserLogInBloc
userLogInBloc
;
late
bool
isDarkMode
=
false
;
late
bool
isDarkMode
=
false
;
final
_loginControlle
=
TextEditingController
(
text:
""
);
final
_loginControlle
=
TextEditingController
(
text:
"
Inomjon2000
"
);
final
_loginFocusNode
=
FocusNode
();
final
_loginFocusNode
=
FocusNode
();
final
_passwordControlle
=
TextEditingController
(
text:
""
);
final
_passwordControlle
=
TextEditingController
(
text:
"
Inomjon5408
"
);
final
_passwordFocusNode
=
FocusNode
();
final
_passwordFocusNode
=
FocusNode
();
@override
void
initState
()
{
userLogInBloc
=
BlocProvider
.
of
<
UserLogInBloc
>(
context
);
SharedPrefs
.
getUser
().
then
((
loggedUser
)
{
if
(
loggedUser
!=
null
)
{
userLogInBloc
.
add
(
UserLogInChakedEvent
(
controller:
widget
.
controller
,
context:
context
,
user:
loggedUser
));
}
else
{
userLogInBloc
.
add
(
UserLogInFetchEvent
());
}
});
super
.
initState
();
}
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
return
Scaffold
(
body:
buildUI
(),
body:
BlocConsumer
<
UserLogInBloc
,
UserLogInState
>(
listener:
(
context
,
state
)
{},
builder:
(
context
,
state
)
{
if
(
state
is
UserLogInInitialState
)
{
return
buildLoading
();
}
else
if
(
state
is
UserLogInLoadedState
)
{
return
buildUI
();
}
if
(
state
is
UserLogInExceptionState
)
{
return
const
Center
(
child:
AppExceptionsWidget
(
message:
"Exception"
,
authName:
MainRoutes
.
user_signup_page
));
}
return
const
Center
(
child:
Text
(
"AloVoice"
));
},
),
);
);
}
}
Widget
buildUI
(){
Widget
buildUI
(){
...
@@ -76,7 +108,15 @@ class _UserSignInPageState extends State<UserSignInPage> {
...
@@ -76,7 +108,15 @@ class _UserSignInPageState extends State<UserSignInPage> {
focusNode:
_passwordFocusNode
,
focusNode:
_passwordFocusNode
,
textEditingController:
_passwordControlle
,
textEditingController:
_passwordControlle
,
),
),
SizedBox
(
height:
context
.
h
*
0.16
),
SizedBox
(
height:
context
.
h
*
0.02
),
Row
(
mainAxisAlignment:
MainAxisAlignment
.
end
,
children:
[
TextButton
(
onPressed:
(){
Navigator
.
pushReplacementNamed
(
context
,
MainRoutes
.
user_signup_page
);
},
child:
SmallText
(
text:
"Sign Up"
,
color:
ColorConst
.
appMainColor
,))
],),
SizedBox
(
height:
context
.
h
*
0.13
),
buildButtons
(),
buildButtons
(),
],
],
),
),
...
@@ -111,8 +151,8 @@ class _UserSignInPageState extends State<UserSignInPage> {
...
@@ -111,8 +151,8 @@ class _UserSignInPageState extends State<UserSignInPage> {
child:
Center
(
child:
Center
(
child:
snapshot
.
data
??
false
child:
snapshot
.
data
??
false
?
AppUtils
.
buttonLoader
?
AppUtils
.
buttonLoader
:
const
BigText
(
:
BigText
(
text:
"Si
n Up"
,
text:
"Si
gn In"
.
toUpperCase
()
,
fontWidget:
FontWeight
.
bold
,
fontWidget:
FontWeight
.
bold
,
size:
16
,
size:
16
,
),
),
...
@@ -127,23 +167,8 @@ class _UserSignInPageState extends State<UserSignInPage> {
...
@@ -127,23 +167,8 @@ class _UserSignInPageState extends State<UserSignInPage> {
CubeUser
user
=
CubeUser
(
CubeUser
user
=
CubeUser
(
login:
_loginControlle
.
text
,
login:
_loginControlle
.
text
,
password:
_passwordControlle
.
text
,);
password:
_passwordControlle
.
text
,);
signIn
(
user
).
then
((
cubeUser
)
{
userLogInBloc
.
add
(
UserLogInChakingEvent
(
controller:
widget
.
controller
,
context:
context
,
user:
user
));
UserModel
(
id:
cubeUser
.
id
,
login:
cubeUser
.
login
,
email:
cubeUser
.
email
,
fullName:
cubeUser
.
fullName
);
print
(
"Shu yerda
$cubeUser
"
);
widget
.
controller
.
inputElevatedButton
.
add
(
false
);
Navigator
.
pushReplacementNamed
(
context
,
MainRoutes
.
main_page
);
})
.
catchError
((
error
){
widget
.
controller
.
inputElevatedButton
.
add
(
false
);
errorMessage
(
context
);
print
(
error
);
});
}
}
Widget
buildLoading
()
{
Widget
buildLoading
()
{
...
...
lib/views/signup_view/signup_page.dart
View file @
80134289
...
@@ -5,6 +5,7 @@ import 'package:vmeeting/blocs/user_sign_up_bloc/user_sign_up_bloc.dart';
...
@@ -5,6 +5,7 @@ import 'package:vmeeting/blocs/user_sign_up_bloc/user_sign_up_bloc.dart';
import
'package:vmeeting/src/controllers/enter_number_cont.dart'
;
import
'package:vmeeting/src/controllers/enter_number_cont.dart'
;
import
'package:vmeeting/src/extension/context_extensions.dart'
;
import
'package:vmeeting/src/extension/context_extensions.dart'
;
import
'package:vmeeting/src/utils/app_utils.dart'
;
import
'package:vmeeting/src/utils/app_utils.dart'
;
import
'package:vmeeting/src/widgets/small_text.dart'
;
import
'../../app_models/user_model/user_model.dart'
;
import
'../../app_models/user_model/user_model.dart'
;
import
'../../service/routes/routes_name.dart'
;
import
'../../service/routes/routes_name.dart'
;
...
@@ -136,8 +137,15 @@ class _UserSignUpPageState extends State<UserSignUpPage> {
...
@@ -136,8 +137,15 @@ class _UserSignUpPageState extends State<UserSignUpPage> {
focusNode:
_fullNameFocusNode
,
focusNode:
_fullNameFocusNode
,
textEditingController:
_fullNameControlle
,
textEditingController:
_fullNameControlle
,
),
),
SizedBox
(
height:
context
.
h
*
0.06
),
SizedBox
(
height:
context
.
h
*
0.01
),
SizedBox
(
height:
context
.
h
*
0.06
),
Row
(
mainAxisAlignment:
MainAxisAlignment
.
end
,
children:
[
TextButton
(
onPressed:
(){
Navigator
.
pushReplacementNamed
(
context
,
MainRoutes
.
sign_in_page
);
},
child:
SmallText
(
text:
"Sign In"
,
color:
ColorConst
.
appMainColor
,))
],),
SizedBox
(
height:
context
.
h
*
0.08
),
buildButtons
(),
buildButtons
(),
],
],
),
),
...
@@ -159,9 +167,7 @@ class _UserSignUpPageState extends State<UserSignUpPage> {
...
@@ -159,9 +167,7 @@ class _UserSignUpPageState extends State<UserSignUpPage> {
disabledBackgroundColor:
Colors
.
grey
.
withOpacity
(
0.12
),
disabledBackgroundColor:
Colors
.
grey
.
withOpacity
(
0.12
),
),
),
onPressed:
()
async
{
onPressed:
()
async
{
Navigator
.
pushReplacementNamed
(
context
,
MainRoutes
.
main_page
);
if
(
_fullNameControlle
.
text
.
isNotEmpty
&&
_emailControlle
.
text
.
isNotEmpty
&&
_loginControlle
.
text
.
isNotEmpty
&&
_passwordControlle
.
text
.
isNotEmpty
){
if
(
_fullNameControlle
.
text
.
isNotEmpty
&&
_emailControlle
.
text
.
isNotEmpty
&&
_loginControlle
.
text
.
isNotEmpty
&&
_passwordControlle
.
text
.
isNotEmpty
){
widget
.
controller
.
inputElevatedButton
.
add
(
true
);
userSigUp
();
userSigUp
();
}
else
{
}
else
{
AppUtils
.
showSnackBar
(
context
,
"PLEASE ENTER THE SAME VALUE AGAIN"
);
AppUtils
.
showSnackBar
(
context
,
"PLEASE ENTER THE SAME VALUE AGAIN"
);
...
@@ -174,8 +180,8 @@ class _UserSignUpPageState extends State<UserSignUpPage> {
...
@@ -174,8 +180,8 @@ class _UserSignUpPageState extends State<UserSignUpPage> {
child:
Center
(
child:
Center
(
child:
snapshot
.
data
??
false
child:
snapshot
.
data
??
false
?
AppUtils
.
buttonLoader
?
AppUtils
.
buttonLoader
:
const
BigText
(
:
BigText
(
text:
"Si
n Up"
,
text:
"Si
gn Up"
.
toUpperCase
()
,
fontWidget:
FontWeight
.
bold
,
fontWidget:
FontWeight
.
bold
,
size:
16
,
size:
16
,
),
),
...
@@ -188,26 +194,14 @@ class _UserSignUpPageState extends State<UserSignUpPage> {
...
@@ -188,26 +194,14 @@ class _UserSignUpPageState extends State<UserSignUpPage> {
}
}
Future
<
void
>
userSigUp
()
async
{
Future
<
void
>
userSigUp
()
async
{
widget
.
controller
.
inputElevatedButton
.
add
(
true
);
CubeUser
user
=
CubeUser
(
CubeUser
user
=
CubeUser
(
login:
_loginControlle
.
text
,
login:
_loginControlle
.
text
,
password:
_passwordControlle
.
text
,
password:
_passwordControlle
.
text
,
email:
_emailControlle
.
text
,
email:
_emailControlle
.
text
,
fullName:
_fullNameControlle
.
text
,);
fullName:
_fullNameControlle
.
text
,);
signUp
(
user
).
then
((
cubeUser
)
{
userSignUpBloc
.
add
(
UserSignUpChakingEvent
(
controller:
widget
.
controller
,
context:
context
,
user:
user
));
UserModel
(
id:
cubeUser
.
id
,
login:
cubeUser
.
login
,
email:
cubeUser
.
email
,
fullName:
cubeUser
.
fullName
);
print
(
"Shu yerda
$cubeUser
"
);
widget
.
controller
.
inputElevatedButton
.
add
(
false
);
})
.
catchError
((
error
){
widget
.
controller
.
inputElevatedButton
.
add
(
false
);
errorMessage
(
context
);
print
(
error
);
});
}
}
Widget
buildLoading
()
{
Widget
buildLoading
()
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment