initialized Splash UI

initialized Login UI
initialized Home(no Devices) UI
Added Colors (from syncrow website)
Added Logo
This commit is contained in:
Mohammad Salameh
2024-02-15 00:10:33 +03:00
parent 3385ed1297
commit 16f47f744c
24 changed files with 316 additions and 92 deletions
+16
View File
@@ -0,0 +1,16 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/auth/models/user_model.dart';
class AuthProvider extends ChangeNotifier {
// todo remove temp user
UserModel user = UserModel(
id: '1',
name: 'John Doe',
email: '',
photoUrl: '',
isAgreementAccepted: false,
isAnonymous: false,
isEmailVerified: false,
phoneNumber: '',
);
}
+58
View File
@@ -0,0 +1,58 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:provider/provider.dart';
import 'package:syncrow_app/features/home/widgets/syncrow_logo.dart';
import 'package:syncrow_app/features/shared_widgets/default_text_button.dart';
import 'package:syncrow_app/navigation/route_manager.dart';
import '../../navigation/routing_constants.dart';
import 'auth_provider.dart';
class AuthPage extends StatelessWidget {
const AuthPage({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (BuildContext context) => AuthProvider(),
builder: (context, child) => Scaffold(
body: Padding(
padding: const EdgeInsets.symmetric(horizontal: 40.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Expanded(child: SizedBox()),
const SyncrowLogo(),
const Expanded(flex: 2, child: SizedBox()),
DefaultTextButton(
text: 'Login',
onPressed: () {
RouteManager().routerManagerPopAndPushNamed(
routeName: Routes.homeRoute,
context: context,
);
},
isPrimary: true,
),
const Gap(15),
const DefaultTextButton(text: 'Sign Up'),
const Gap(20),
Center(
child: InkWell(
onTap: () {},
child: const Text(
'Try as a Guest',
style: TextStyle(
color: Colors.grey,
),
),
),
),
const Gap(30),
],
),
),
),
);
}
}
+51
View File
@@ -0,0 +1,51 @@
class UserModel {
final String? id;
final String? email;
final String? name;
final String? photoUrl;
final String? phoneNumber;
final bool? isAnonymous;
final bool? isEmailVerified;
final bool? isAgreementAccepted;
UserModel({
required this.id,
required this.email,
required this.name,
required this.photoUrl,
required this.phoneNumber,
required this.isAnonymous,
required this.isEmailVerified,
required this.isAgreementAccepted,
});
factory UserModel.fromJson(Map<String, dynamic> json) {
return UserModel(
id: json['id'],
email: json['email'],
name: json['name'],
photoUrl: json['photoUrl'],
phoneNumber: json['phoneNumber'],
isAnonymous: json['isAnonymous'],
isEmailVerified: json['isEmailVerified'],
isAgreementAccepted: json['isAgreementAccepted'],
);
}
Map<String, dynamic> toJson() {
return {
'id': id,
'email': email,
'name': name,
'photoUrl': photoUrl,
'phoneNumber': phoneNumber,
'isAnonymous': isAnonymous,
'isEmailVerified': isEmailVerified,
'isAgreementAccepted': isAgreementAccepted,
};
}
}
@@ -1,3 +0,0 @@
import 'package:flutter/material.dart';
class AuthProvider extends ChangeNotifier {}
-22
View File
@@ -1,22 +0,0 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../provider/auth_provider.dart';
class AuthView extends StatelessWidget {
const AuthView({super.key});
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (BuildContext context) => AuthProvider(),
builder: (context, child) => _buildPage(context),
);
}
Widget _buildPage(BuildContext context) {
final provider = context.read<AuthProvider>();
return Container();
}
}