Commit dd2274ea authored by Inomjon's avatar Inomjon

Call cannection to app

parent 3ee829e6
This diff is collapsed.
class UserModel {
int? id;
String? fullName;
String? email;
String? login;
UserModel({this.id, this.fullName, this.email, this.login});
UserModel.fromJson(Map<dynamic, dynamic> json) {
id = json['id'];
fullName = json['full_name'];
email = json['email'];
login = json['login'];
}
}
\ No newline at end of file
import 'dart:async';
import 'package:bloc/bloc.dart'; import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:meta/meta.dart'; import 'package:meta/meta.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';
class UserSignUpBloc extends Bloc<UserSignUpEvent, UserSignUpState> { class UserSignUpBloc extends Bloc<UserSignUpEvent, UserSignUpState> {
UserSignUpBloc() : super(UserSignUpInitial()) { UserSignUpBloc() : super(UserSignUpInitialState()) {
on<UserSignUpEvent>((event, emit) { on<UserSignUpFetchEvent>((event, emit) {
// TODO: implement event handler emit(UserSignUpLoadedState());
}); });
} }
} }
part of 'user_sign_up_bloc.dart'; part of 'user_sign_up_bloc.dart';
@immutable @immutable
abstract class UserSignUpEvent {} abstract class UserSignUpEvent extends Equatable{}
class UserSignUpFetchEvent extends UserSignUpEvent{
@override
List<Object?> get props => [];
}
part of 'user_sign_up_bloc.dart'; part of 'user_sign_up_bloc.dart';
@immutable @immutable
abstract class UserSignUpState {} abstract class UserSignUpState extends Equatable{}
class UserSignUpInitial extends UserSignUpState {} class UserSignUpInitialState extends UserSignUpState {
@override
List<Object?> get props => [];
}
class UserSignUpFetchState extends UserSignUpState{
@override
List<Object?> get props => [];
}
class UserSignUpLoadedState extends UserSignUpState{
@override
List<Object?> get props => [];
}
class UserSignUpExceptionState extends UserSignUpState{
final String message;
UserSignUpExceptionState({required this.message});
@override
List<Object?> get props => [message];
}
\ No newline at end of file
...@@ -16,10 +16,6 @@ import 'src/utils/configs.dart' as config; ...@@ -16,10 +16,6 @@ import 'src/utils/configs.dart' as config;
void main() async { void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarIconBrightness: Brightness.light,
));
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
runApp(App()); runApp(App());
} }
......
// ignore_for_file: body_might_complete_normally_nullable // ignore_for_file: body_might_complete_normally_nullable
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_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/signin_view/signin_page.dart'; import 'package:vmeeting/views/main_view/main_page.dart';
import '../../src/controllers/enter_number_cont.dart'; import '../../src/controllers/enter_number_cont.dart';
import '../../views/signin_view/signin_page.dart';
import '../../views/signup_view/signup_page.dart';
import '../../views/splash_view/splash_screen.dart'; import '../../views/splash_view/splash_screen.dart';
GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>(); GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
...@@ -32,19 +36,22 @@ class MainNavigator extends StatelessWidget { ...@@ -32,19 +36,22 @@ class MainNavigator extends StatelessWidget {
case MainRoutes.splash_screen: case MainRoutes.splash_screen:
builder = (BuildContext _) => SplashScreen(controller: controller); builder = (BuildContext _) => SplashScreen(controller: controller);
break; break;
case MainRoutes.user_signin_page: case MainRoutes.main_page:
builder = (BuildContext _) => MainPage(controller: controller);
break;
case MainRoutes.sign_in_page:
builder = (BuildContext _) => UserSignInPage(controller: controller); builder = (BuildContext _) => UserSignInPage(controller: controller);
break; break;
// case MainRoutes.splash_screen: case MainRoutes.user_signup_page:
// builder = (BuildContext _) => MultiBlocProvider( builder = (BuildContext _) => MultiBlocProvider(
// providers: [ providers: [
// BlocProvider<CallPageBloc>( BlocProvider<UserSignUpBloc>(
// create: (context) => CallPageBloc(), create: (context) => UserSignUpBloc(),
// ), ),
// ], ],
// child: MyMainPage(controller: _controller,), child: UserSignUpPage(controller: controller),
// ); );
// break; break;
} }
if (builder != null) { if (builder != null) {
return MaterialPageRoute(builder: builder, settings: settings); return MaterialPageRoute(builder: builder, settings: settings);
......
...@@ -2,5 +2,7 @@ ...@@ -2,5 +2,7 @@
class MainRoutes { class MainRoutes {
static const String splash_screen = "splash_screen"; static const String splash_screen = "splash_screen";
static const String user_signin_page = "user_signin_page"; static const String user_signup_page = "user_signup_page";
static const String main_page = "main_page";
static const String sign_in_page = "sign_in_page";
} }
\ No newline at end of file
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import 'package:vmeeting/src/constants/colors_const.dart';
ThemeData getAppTheme(BuildContext context, bool idDark) { ThemeData getAppTheme(BuildContext context, bool idDark) {
SystemChrome.setSystemUIOverlayStyle( SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
statusBarIconBrightness: idDark ? Brightness.light : Brightness.dark,
));
return ThemeData( return ThemeData(
scaffoldBackgroundColor: idDark ? Colors.black : Colors.white, scaffoldBackgroundColor: idDark ? ColorConst.appMainBackgroundColor : ColorConst.appSecondWhiteColor,
textTheme: GoogleFonts.latoTextTheme(idDark ? ThemeData.dark().textTheme : ThemeData.light().textTheme), textTheme: GoogleFonts.latoTextTheme(idDark ? ThemeData.dark().textTheme : ThemeData.light().textTheme),
switchTheme: SwitchThemeData( switchTheme: SwitchThemeData(
thumbColor: MaterialStateProperty.all( thumbColor: MaterialStateProperty.all(
...@@ -12,7 +18,7 @@ import 'package:google_fonts/google_fonts.dart'; ...@@ -12,7 +18,7 @@ import 'package:google_fonts/google_fonts.dart';
listTileTheme: ListTileThemeData( listTileTheme: ListTileThemeData(
iconColor: idDark ? Colors.orange : Colors.purple), iconColor: idDark ? Colors.orange : Colors.purple),
appBarTheme: AppBarTheme( appBarTheme: AppBarTheme(
backgroundColor: idDark ? Colors.black : Colors.white, backgroundColor: idDark ? ColorConst.appMainBackgroundColor : ColorConst.appSecondWhiteColor,
iconTheme: IconThemeData(color: idDark ? Colors.white : Colors.black54)), iconTheme: IconThemeData(color: idDark ? ColorConst.appMainBackgroundColor : ColorConst.appSecondWhiteColor,)),
); );
} }
\ No newline at end of file
...@@ -6,6 +6,12 @@ class ColorConst { ...@@ -6,6 +6,12 @@ class ColorConst {
static Color appBackgroundColor = const Color(0xffbec6f4); static Color appBackgroundColor = const Color(0xffbec6f4);
static Color appSecondWhiteColor = const Color(0xfff1f3f4); static Color appSecondWhiteColor = const Color(0xfff1f3f4);
static Color appGreenColor = const Color(0xff7bcdd1); static Color appGreenColor = const Color(0xff7bcdd1);
static Color appBleckColor = const Color(0xff000000);
static Color appMainBackgroundColor = Color(0xFF25242a);
static Color appMainColorBak = Color(0xFF35353f);
static Color appGreanColor = Color(0xFFb2b7ce);
static Color appRedColor = Color(0xFFff0000);
......
...@@ -4,5 +4,8 @@ class NumberController { ...@@ -4,5 +4,8 @@ class NumberController {
final StreamController<bool> themeController = StreamController<bool>.broadcast(); final StreamController<bool> themeController = StreamController<bool>.broadcast();
Sink<bool> get inputTheme => themeController.sink; Sink<bool> get inputTheme => themeController.sink;
Stream<bool> get outputTheme => themeController.stream; Stream<bool> get outputTheme => themeController.stream;
final StreamController<bool> elevatedButtonController = StreamController<bool>.broadcast();
Sink<bool> get inputElevatedButton => elevatedButtonController.sink;
Stream<bool> get outputElevatedButton=> elevatedButtonController.stream;
} }
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:vmeeting/src/constants/colors_const.dart';
class AppUtils {
static Widget buttonLoader = SizedBox(
width: 30,
height: 30,
child: CircularProgressIndicator(
strokeWidth: 3,
color: ColorConst.appWhiteColor,
),
);
static void showSnackBar(BuildContext context, String message) {
final snackdemo = SnackBar(
content:
Center(child: Text(message,
style: GoogleFonts.lato(
textStyle: Theme.of(context).textTheme.bodyMedium,
color: ColorConst.appWhiteColor,
fontStyle: FontStyle.normal,),
textAlign: TextAlign.center,
),),
backgroundColor: ColorConst.appGreenColor,
elevation: 30,
behavior: SnackBarBehavior.floating,
margin: const EdgeInsets.all(50),
duration: const Duration(milliseconds: 600),
shape: const StadiumBorder(),
);
ScaffoldMessenger.of(context).showSnackBar(snackdemo);
}
}
import 'package:flutter/material.dart';
import 'package:vmeeting/src/extension/context_extensions.dart';
import '../constants/colors_const.dart';
import '../widgets/big_text_widget.dart';
import '../widgets/small_text.dart';
void errorMessage(BuildContext context) async {
showDialog(
context: context,
builder: (BuildContext context) {
return MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
child: Dialog(
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(16.0))),
insetPadding: const EdgeInsets.only(left: 20, right: 20),
backgroundColor: Colors.white,
child: StatefulBuilder(builder: (contex, dialogSetState) {
return SizedBox(
width: double.infinity,
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
const SizedBox(),
InkWell(
onTap: () async {
Navigator.of(context).pop(false);
},
child: Padding(
padding:
const EdgeInsets.only(right: 8.0, top: 8),
child: Icon(Icons.cancel,
color: ColorConst.appMainColorBak),
),
),
],
),
SmallText(text: "There is something wrong with you try again",
fontWidget: FontWeight.bold,
size: context.h*0.02,
textAlign: TextAlign.center,),
const SizedBox(height: 10),
const BigText(text: "❌",size: 60),
const SizedBox(height: 10),
Container(
margin: const EdgeInsets.symmetric(horizontal: 12),
child: Column(children: [
ElevatedButton(
style: ElevatedButton.styleFrom(
foregroundColor: Colors.white,
backgroundColor: ColorConst.appGreenColor,
disabledForegroundColor: Colors.grey.withOpacity(0.38),
disabledBackgroundColor: Colors.grey.withOpacity(0.12),
),
onPressed: () async {
Navigator.of(context).pop(false);
},
child: const BigText(
text: "Ok",
fontWidget: FontWeight.bold,
size: 16,
)
),
SizedBox(height: context.h*0.02),
],),
)
],
),
// child:
);
}),
),
);
});
}
\ No newline at end of file
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
// ignore: must_be_immutable
class CustomLoading extends StatelessWidget{
Color? color;
CustomLoading({Key? key, this.color}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
width: 200,
height: 200,
alignment: AlignmentDirectional.center,
child: Lottie.asset('assets/loading.json'),
);
}
}
\ No newline at end of file
import 'package:flutter/material.dart';
import 'package:lottie/lottie.dart';
import 'package:vmeeting/src/extension/context_extensions.dart';
import '../../constants/colors_const.dart';
import '../big_text_widget.dart';
import '../small_text.dart';
class AppExceptionsWidget extends StatelessWidget {
final String message;
final String authName;
const AppExceptionsWidget({
super.key,
required this.message,
required this.authName,
});
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
width: 200,
height: 200,
alignment: AlignmentDirectional.center,
child: Lottie.asset('assets/internet_error.json'),
),
const SizedBox(height: 50),
Padding(
padding: const EdgeInsets.only(left: 20.0, right: 8),
child: SmallText(
text: message,
size: 18,
fontWidget: FontWeight.w600,
textAlign: TextAlign.center),
),
const SizedBox(height: 50),
ElevatedButton(
style: ElevatedButton.styleFrom(
foregroundColor: Colors.white, backgroundColor: ColorConst.appBackgroundColor, disabledForegroundColor: Colors.grey.withOpacity(0.38), disabledBackgroundColor: Colors.grey.withOpacity(0.12),
),
onPressed: () {
Navigator.of(context).pushReplacementNamed(authName);
},
child: SizedBox(
width: context.w * 0.8,
height: context.h * 0.06,
child: Center(
child: BigText(
text: "Exception",
fontWidget: FontWeight.bold,
color: ColorConst.appWhiteColor,
size: 16,
),
),
),
),
],
);
}
}
import 'package:flutter/material.dart';
extension HeightWidthContext on BuildContext {
MediaQueryData get mq => MediaQuery.of(this);
double get h => mq.size.height;
double get w => mq.size.width;
}
\ No newline at end of file
import 'package:flutter/material.dart';
import 'package:vmeeting/src/constants/colors_const.dart';
import 'package:vmeeting/src/widgets/big_text_widget.dart';
import '../../src/controllers/enter_number_cont.dart';
class HomePage extends StatelessWidget {
final NumberController controller;
const HomePage({super.key, required this.controller});
@override
Widget build(BuildContext context) {
return Center(
child:BigText( text: "Salom",color: ColorConst.appMainBackgroundColor,)
);
}
}
\ No newline at end of file
import 'package:curved_navigation_bar/curved_navigation_bar.dart';
import 'package:flutter/material.dart';
import 'package:vmeeting/src/controllers/enter_number_cont.dart';
import 'package:vmeeting/views/home_view/home_page.dart';
import 'package:vmeeting/views/profile_view/profile_page.dart';
import 'package:vmeeting/views/users_view/users_page.dart';
import '../../src/constants/colors_const.dart';
class MainPage extends StatefulWidget {
final NumberController controller;
const MainPage({super.key, required this.controller});
@override
State<MainPage> createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
int current_index = 0;
late List<Widget> pages = [
HomePage(controller: widget.controller),
AllUsersViewPage(controller: widget.controller),
ProfilePage(controller: widget.controller)
];
void OnTapped(int index) {
setState(() {
current_index = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
bottomNavigationBar: Container(
height: 80,
padding: const EdgeInsets.all(8),
child: ClipRRect(
borderRadius: BorderRadius.circular(50),
child: CurvedNavigationBar(
height: 50,
backgroundColor: ColorConst.appGreanColor,
color: ColorConst.appGreenColor,
buttonBackgroundColor: ColorConst.appGreenColor,
onTap: OnTapped,
items: const <Widget>[
Icon(Icons.home),
Icon(Icons.search),
Icon(Icons.person)
],
),
),
),
body: pages[current_index],
);
}
}
import 'package:flutter/material.dart';
import '../../src/controllers/enter_number_cont.dart';
class ProfilePage extends StatelessWidget {
final NumberController controller;
const ProfilePage({super.key, required this.controller});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text("Profil Page"),
),
);
}
}
\ No newline at end of file
import 'package:connectycube_sdk/connectycube_calls.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.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 '../../app_models/user_model/user_model.dart';
import '../../service/routes/routes_name.dart';
import '../../src/constants/colors_const.dart';
import '../../src/utils/app_utils.dart';
import '../../src/utils/show_dialogs.dart';
import '../../src/widgets/big_text_widget.dart';
import '../../src/widgets/custom_loading/customloading.dart';
import '../../src/widgets/textfiled_widgets/auth_text_fild.dart';
class UserSignInPage extends StatefulWidget { class UserSignInPage extends StatefulWidget {
final NumberController controller; final NumberController controller;
...@@ -10,20 +21,132 @@ class UserSignInPage extends StatefulWidget { ...@@ -10,20 +21,132 @@ class UserSignInPage extends StatefulWidget {
} }
class _UserSignInPageState extends State<UserSignInPage> { class _UserSignInPageState extends State<UserSignInPage> {
late bool isDarkMode = false;
final _loginControlle = TextEditingController(text: "");
final _loginFocusNode = FocusNode();
final _passwordControlle = TextEditingController(text: "");
final _passwordFocusNode = FocusNode();
late bool theme = false;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
body: Center( body: buildUI(),
child: Switch( );
value: theme, }
onChanged: (val){ Widget buildUI(){
theme = val; return Container(
widget.controller.inputTheme.add(val); margin: EdgeInsets.symmetric(horizontal: context.w * 0.06),
child: SingleChildScrollView(
child: Column(
children: [
SizedBox(height: context.h * 0.06),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Switch.adaptive(
value: isDarkMode,
activeColor: ColorConst.appGreenColor,
onChanged: (value) {
isDarkMode = value;
widget.controller.inputTheme.add(value);
}, },
), ),
],),
SizedBox(height: context.h * 0.12),
BigText(
text: "Sign In",
size: context.h * 0.04,
fontWidget: FontWeight.bold,
),
SizedBox(height: context.h * 0.1),
AuthTextFild(
lableName: "Login",
borderRadius: 10,
elevation: 1,
color: Colors.grey.withOpacity(0.2),
focusNode: _loginFocusNode,
textEditingController: _loginControlle,
),
SizedBox(height: context.h * 0.03),
AuthTextFild(
lableName: "Password",
borderRadius: 10,
elevation: 1,
color: Colors.grey.withOpacity(0.2),
focusNode: _passwordFocusNode,
textEditingController: _passwordControlle,
),
SizedBox(height: context.h * 0.16),
buildButtons(),
],
), ),
)
); );
} }
Widget buildButtons() {
return StreamBuilder(stream: widget.controller.outputElevatedButton,
builder: (BuildContext context, snapshot){
return Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton(
style: ElevatedButton.styleFrom(
foregroundColor: Colors.white,
backgroundColor: ColorConst.appGreenColor,
disabledForegroundColor: Colors.grey.withOpacity(0.38),
disabledBackgroundColor: Colors.grey.withOpacity(0.12),
),
onPressed: () async {
if(_loginControlle.text.isNotEmpty && _passwordControlle.text.isNotEmpty){
widget.controller.inputElevatedButton.add(true);
userSigIn();
}else{
AppUtils.showSnackBar(context, "PLEASE ENTER THE SAME VALUE AGAIN");
}
},
child: SizedBox(
width: context.w * 0.8,
height: context.h * 0.06,
child: Center(
child: snapshot.data ?? false
? AppUtils.buttonLoader
: const BigText(
text: "Sin Up",
fontWidget: FontWeight.bold,
size: 16,
),
),
),
),
],
);
});
}
Future<void> userSigIn() async {
CubeUser user = CubeUser(
login: _loginControlle.text,
password: _passwordControlle.text,);
signIn(user).then((cubeUser) {
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() {
return Center(child: CustomLoading());
}
} }
import 'package:connectycube_sdk/connectycube_chat.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
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/extension/context_extensions.dart';
import 'package:vmeeting/src/utils/app_utils.dart';
import '../../app_models/user_model/user_model.dart';
import '../../service/routes/routes_name.dart';
import '../../src/constants/colors_const.dart';
import '../../src/utils/show_dialogs.dart';
import '../../src/widgets/big_text_widget.dart';
import '../../src/widgets/custom_loading/customloading.dart';
import '../../src/widgets/exceptions/app_exeptions.dart';
import '../../src/widgets/textfiled_widgets/auth_text_fild.dart';
class UserSignUpPage extends StatefulWidget {
final NumberController controller;
const UserSignUpPage({super.key, required this.controller});
@override
State<UserSignUpPage> createState() => _UserSignUpPageState();
}
class _UserSignUpPageState extends State<UserSignUpPage> {
late UserSignUpBloc userSignUpBloc;
late bool isDarkMode = false;
final _loginControlle = TextEditingController(text: "Flutter2000");
final _loginFocusNode = FocusNode();
final _passwordControlle = TextEditingController(text: "Flutter2000");
final _passwordFocusNode = FocusNode();
final _emailControlle = TextEditingController(text: "muxtorovinomjon0227@gmail.com");
final _emailFocusNode = FocusNode();
final _fullNameControlle = TextEditingController(text: "Muxtorov Inomjon");
final _fullNameFocusNode = FocusNode();
@override
void initState() {
userSignUpBloc = BlocProvider.of<UserSignUpBloc>(context);
userSignUpBloc.add(UserSignUpFetchEvent());
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: BlocConsumer<UserSignUpBloc, UserSignUpState>(
listener: (context, state) {},
builder: (context, state) {
if (state is UserSignUpInitialState) {
return buildLoading();
}
if (state is UserSignUpLoadedState) {
return buildUI();
}
if (state is UserSignUpFetchState) {
return const Center(
child: AppExceptionsWidget(
message: "Exception",
authName: MainRoutes.user_signup_page));
}
if (state is UserSignUpExceptionState) {
return const Center(
child: AppExceptionsWidget(
message: "Exception",
authName: MainRoutes.user_signup_page));
}
return const Center(child: Text("AloVoice"));
},
),
);
}
Widget buildUI(){
return Container(
margin: EdgeInsets.symmetric(horizontal: context.w * 0.06),
child: SingleChildScrollView(
child: Column(
children: [
SizedBox(height: context.h * 0.06),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
Switch.adaptive(
value: isDarkMode,
activeColor: ColorConst.appGreenColor,
onChanged: (value) {
isDarkMode = value;
widget.controller.inputTheme.add(value);
},
),
],),
SizedBox(height: context.h * 0.1),
BigText(
text: "Sign Up",
size: context.h * 0.04,
fontWidget: FontWeight.bold,
),
SizedBox(height: context.h * 0.1),
AuthTextFild(
lableName: "Email",
borderRadius: 10,
elevation: 1,
color: Colors.grey.withOpacity(0.2),
type: TextInputType.emailAddress,
focusNode: _emailFocusNode,
textEditingController: _emailControlle,
),
SizedBox(height: context.h * 0.03),
AuthTextFild(
lableName: "Login",
borderRadius: 10,
elevation: 1,
color: Colors.grey.withOpacity(0.2),
focusNode: _loginFocusNode,
textEditingController: _loginControlle,
),
SizedBox(height: context.h * 0.03),
AuthTextFild(
lableName: "Password",
borderRadius: 10,
elevation: 1,
color: Colors.grey.withOpacity(0.2),
focusNode: _passwordFocusNode,
textEditingController: _passwordControlle,
),
SizedBox(height: context.h * 0.03),
AuthTextFild(
lableName: "FullName",
borderRadius: 10,
elevation: 1,
color: Colors.grey.withOpacity(0.2),
focusNode: _fullNameFocusNode,
textEditingController: _fullNameControlle,
),
SizedBox(height: context.h * 0.06),
SizedBox(height: context.h * 0.06),
buildButtons(),
],
),
)
);
}
Widget buildButtons() {
return StreamBuilder(stream: widget.controller.outputElevatedButton,
builder: (BuildContext context, snapshot){
return Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton(
style: ElevatedButton.styleFrom(
foregroundColor: Colors.white,
backgroundColor: ColorConst.appGreenColor,
disabledForegroundColor: Colors.grey.withOpacity(0.38),
disabledBackgroundColor: Colors.grey.withOpacity(0.12),
),
onPressed: () async {
Navigator.pushReplacementNamed(context, MainRoutes.main_page);
if(_fullNameControlle.text.isNotEmpty && _emailControlle.text.isNotEmpty && _loginControlle.text.isNotEmpty && _passwordControlle.text.isNotEmpty){
widget.controller.inputElevatedButton.add(true);
userSigUp();
}else{
AppUtils.showSnackBar(context, "PLEASE ENTER THE SAME VALUE AGAIN");
}
},
child: SizedBox(
width: context.w * 0.8,
height: context.h * 0.06,
child: Center(
child: snapshot.data ?? false
? AppUtils.buttonLoader
: const BigText(
text: "Sin Up",
fontWidget: FontWeight.bold,
size: 16,
),
),
),
),
],
);
});
}
Future<void> userSigUp() async {
CubeUser user = CubeUser(
login: _loginControlle.text,
password: _passwordControlle.text,
email: _emailControlle.text,
fullName: _fullNameControlle.text,);
signUp(user).then((cubeUser) {
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() {
return Center(child: CustomLoading());
}
}
...@@ -30,7 +30,7 @@ class _SplashScreenState extends State<SplashScreen> ...@@ -30,7 +30,7 @@ class _SplashScreenState extends State<SplashScreen>
..forward() ..forward()
..addStatusListener((status) async { ..addStatusListener((status) async {
if (status == AnimationStatus.completed) { if (status == AnimationStatus.completed) {
Navigator.of(context).pushReplacementNamed(MainRoutes.user_signin_page); Navigator.of(context).pushReplacementNamed(MainRoutes.sign_in_page);
} }
}); });
_curvedAnimation = _curvedAnimation =
......
import 'package:flutter/material.dart';
import '../../src/controllers/enter_number_cont.dart';
class AllUsersViewPage extends StatelessWidget {
final NumberController controller;
const AllUsersViewPage({super.key, required this.controller});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text("Users Page"),
),
);
}
}
...@@ -129,6 +129,14 @@ packages: ...@@ -129,6 +129,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.6" version: "1.0.6"
curved_navigation_bar:
dependency: "direct main"
description:
name: curved_navigation_bar
sha256: ea6412d00c5d83501bbf1cf9d1ac2ff11a20fbaf910c103c95ace7de82910334
url: "https://pub.dev"
source: hosted
version: "1.0.3"
dart_webrtc: dart_webrtc:
dependency: transitive dependency: transitive
description: description:
...@@ -328,6 +336,14 @@ packages: ...@@ -328,6 +336,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.1" version: "2.1.1"
lottie:
dependency: "direct main"
description:
name: lottie
sha256: a93542cc2d60a7057255405f62252533f8e8956e7e06754955669fd32fb4b216
url: "https://pub.dev"
source: hosted
version: "2.7.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
......
...@@ -49,6 +49,8 @@ dependencies: ...@@ -49,6 +49,8 @@ dependencies:
upgrader: ^8.1.0 upgrader: ^8.1.0
flutter_bloc: ^8.1.3 flutter_bloc: ^8.1.3
equatable: ^2.0.5 equatable: ^2.0.5
lottie: ^2.4.0
curved_navigation_bar: ^1.0.3
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment