Initial design for profile
parent
142bd6e6a2
commit
018816c660
|
@ -0,0 +1,27 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:unit2/theme-data.dart/colors.dart';
|
||||||
|
|
||||||
|
class MainMenu extends StatelessWidget {
|
||||||
|
final IconData icon;
|
||||||
|
final String title;
|
||||||
|
const MainMenu({
|
||||||
|
required this.icon,
|
||||||
|
required this.title,
|
||||||
|
Key? key,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return ListTile(
|
||||||
|
leading: Icon(
|
||||||
|
icon,
|
||||||
|
color: primary,
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
title,
|
||||||
|
style: TextStyle(fontWeight: FontWeight.bold),
|
||||||
|
),
|
||||||
|
trailing: const Icon(Icons.keyboard_arrow_right),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,19 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:unit2/theme-data.dart/colors.dart';
|
||||||
|
|
||||||
|
ListTile subMenu(IconData icon, String title) {
|
||||||
|
return ListTile(
|
||||||
|
leading: Container(
|
||||||
|
margin: const EdgeInsets.only(left: 20),
|
||||||
|
child: Icon(
|
||||||
|
icon,
|
||||||
|
size: 20,
|
||||||
|
color: primary,
|
||||||
|
)),
|
||||||
|
title: Text(
|
||||||
|
title,
|
||||||
|
style: const TextStyle(),
|
||||||
|
),
|
||||||
|
trailing: const Icon(Icons.keyboard_arrow_right),
|
||||||
|
);
|
||||||
|
}
|
|
@ -0,0 +1,146 @@
|
||||||
|
import 'package:expandable_group/expandable_group_widget.dart';
|
||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/src/widgets/container.dart';
|
||||||
|
import 'package:flutter/src/widgets/framework.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:fluttericon/brandico_icons.dart';
|
||||||
|
import 'package:fluttericon/elusive_icons.dart';
|
||||||
|
import 'package:fluttericon/entypo_icons.dart';
|
||||||
|
import 'package:fluttericon/font_awesome5_icons.dart';
|
||||||
|
import 'package:fluttericon/font_awesome_icons.dart';
|
||||||
|
import 'package:fluttericon/modern_pictograms_icons.dart';
|
||||||
|
import 'package:fluttericon/typicons_icons.dart';
|
||||||
|
import 'package:unit2/bloc/bloc/user_bloc.dart';
|
||||||
|
import 'package:unit2/theme-data.dart/colors.dart';
|
||||||
|
|
||||||
|
import 'components/main_menu.dart';
|
||||||
|
import 'components/submenu.dart';
|
||||||
|
|
||||||
|
class ProfileInfo extends StatefulWidget {
|
||||||
|
const ProfileInfo({super.key});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<ProfileInfo> createState() => _ProfileInfoState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return SafeArea(
|
||||||
|
child: Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
backgroundColor: primary,
|
||||||
|
centerTitle: true,
|
||||||
|
title: const Text('Profile'),
|
||||||
|
),
|
||||||
|
body: BlocConsumer<UserBloc, UserState>(
|
||||||
|
listener: (context, state) {
|
||||||
|
// TODO: implement listener
|
||||||
|
},
|
||||||
|
builder: (context, state) {
|
||||||
|
if (state is UserLoggedIn) {
|
||||||
|
return Container(
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
vertical: 12, horizontal: 12),
|
||||||
|
child: ListView(
|
||||||
|
children: [
|
||||||
|
ExpandableGroup(
|
||||||
|
collapsedIcon:
|
||||||
|
const Icon(Icons.keyboard_arrow_down),
|
||||||
|
expandedIcon: const Icon(Icons.keyboard_arrow_up),
|
||||||
|
header: const ListTile(
|
||||||
|
leading: Icon(
|
||||||
|
Elusive.address_book,
|
||||||
|
color: primary,
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
"Basic Information",
|
||||||
|
style: TextStyle(fontWeight: FontWeight.bold),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
items: [
|
||||||
|
subMenu(Icons.person, "Primary"),
|
||||||
|
subMenu(Icons.home, "Home Addresses"),
|
||||||
|
subMenu(Icons.contact_mail, "Identifications"),
|
||||||
|
subMenu(Icons.contact_phone, "Contact Info"),
|
||||||
|
subMenu(Icons.flag, "Citizenships"),
|
||||||
|
]),
|
||||||
|
const MainMenu(
|
||||||
|
icon: Elusive.group,
|
||||||
|
title: "Family",
|
||||||
|
),
|
||||||
|
const MainMenu(
|
||||||
|
icon: FontAwesome5.graduation_cap,
|
||||||
|
title: "Education",
|
||||||
|
),
|
||||||
|
const MainMenu(
|
||||||
|
icon: Icons.stars,
|
||||||
|
title: "Eligibility",
|
||||||
|
),
|
||||||
|
const MainMenu(
|
||||||
|
icon: FontAwesome5.shopping_bag,
|
||||||
|
title: "Work History",
|
||||||
|
),
|
||||||
|
const MainMenu(
|
||||||
|
icon: FontAwesome5.walking,
|
||||||
|
title: "Voluntary Work & Civic Services",
|
||||||
|
),
|
||||||
|
const MainMenu(
|
||||||
|
icon: Elusive.lightbulb,
|
||||||
|
title: "Learning & Development",
|
||||||
|
),
|
||||||
|
const MainMenu(
|
||||||
|
icon: Brandico.codepen,
|
||||||
|
title: "Personal References",
|
||||||
|
),
|
||||||
|
ExpandableGroup(
|
||||||
|
collapsedIcon:
|
||||||
|
const Icon(Icons.keyboard_arrow_down),
|
||||||
|
expandedIcon: const Icon(Icons.keyboard_arrow_up),
|
||||||
|
header: const ListTile(
|
||||||
|
leading: Icon(
|
||||||
|
Icons.info,
|
||||||
|
color: primary,
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
"Other Information",
|
||||||
|
style: TextStyle(fontWeight: FontWeight.bold),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
items: [
|
||||||
|
subMenu(Icons.fitness_center, "Skills & Hobbies"),
|
||||||
|
subMenu(FontAwesome5.certificate,
|
||||||
|
"Organization Memberships"),
|
||||||
|
subMenu(
|
||||||
|
Entypo.doc_text, "Non-Academic Recognitions"),
|
||||||
|
]),
|
||||||
|
ExpandableGroup(
|
||||||
|
collapsedIcon:
|
||||||
|
const Icon(Icons.keyboard_arrow_down),
|
||||||
|
expandedIcon: const Icon(Icons.keyboard_arrow_up),
|
||||||
|
header: const ListTile(
|
||||||
|
leading: Icon(
|
||||||
|
FontAwesome5.laptop_house,
|
||||||
|
color: primary,
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
"Assets",
|
||||||
|
style: TextStyle(fontWeight: FontWeight.bold),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
items: [
|
||||||
|
subMenu(
|
||||||
|
ModernPictograms.home, "Real Property Tax"),
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return const Center(
|
||||||
|
child: Text("default"),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
}
|
|
@ -32,6 +32,7 @@ class _MainScreenState extends State<MainScreen> {
|
||||||
},
|
},
|
||||||
child: BlocBuilder<UserBloc, UserState>(builder: (context, state) {
|
child: BlocBuilder<UserBloc, UserState>(builder: (context, state) {
|
||||||
if (state is UserLoggedIn) {
|
if (state is UserLoggedIn) {
|
||||||
|
print(state.userData!.user!.login!.token);
|
||||||
state.userData!.user!.login!.user!.roles!.forEach((role) {
|
state.userData!.user!.login!.user!.roles!.forEach((role) {
|
||||||
Role? getRole = role;
|
Role? getRole = role;
|
||||||
role!.modules!.forEach((module) {
|
role!.modules!.forEach((module) {
|
||||||
|
|
|
@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
import 'package:unit2/bloc/bloc/user_bloc.dart';
|
import 'package:unit2/bloc/bloc/user_bloc.dart';
|
||||||
import 'package:unit2/screens/unit2/login/login.dart';
|
import 'package:unit2/screens/unit2/login/login.dart';
|
||||||
import 'package:unit2/utils/global_context.dart';
|
import 'package:unit2/utils/global_context.dart';
|
||||||
|
import '../screens/profile/profile.dart';
|
||||||
import '../screens/unit2/basic-info/basic-info.dart';
|
import '../screens/unit2/basic-info/basic-info.dart';
|
||||||
import '../screens/unit2/homepage.dart/components/drawer-screen.dart';
|
import '../screens/unit2/homepage.dart/components/drawer-screen.dart';
|
||||||
import '../screens/unit2/login/qr_login.dart';
|
import '../screens/unit2/login/qr_login.dart';
|
||||||
|
@ -23,13 +24,17 @@ class AppRouter {
|
||||||
return const DrawerScreen();
|
return const DrawerScreen();
|
||||||
});
|
});
|
||||||
case '/basic-info':
|
case '/basic-info':
|
||||||
return MaterialPageRoute(builder: (_){
|
return MaterialPageRoute(builder: (_) {
|
||||||
return const BasicInfo();
|
return const BasicInfo();
|
||||||
});
|
});
|
||||||
case '/qr-login':
|
case '/qr-login':
|
||||||
return MaterialPageRoute(builder: (_){
|
return MaterialPageRoute(builder: (_) {
|
||||||
return const QRLogin();
|
return const QRLogin();
|
||||||
});
|
});
|
||||||
|
case '/profile':
|
||||||
|
return MaterialPageRoute(builder: (_) {
|
||||||
|
return const ProfileInfo();
|
||||||
|
});
|
||||||
default:
|
default:
|
||||||
return MaterialPageRoute(builder: (context) {
|
return MaterialPageRoute(builder: (context) {
|
||||||
return Container();
|
return Container();
|
||||||
|
|
|
@ -176,6 +176,13 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.5"
|
version: "2.0.5"
|
||||||
|
expandable_group:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: expandable_group
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.0.8"
|
||||||
fake_async:
|
fake_async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -66,6 +66,7 @@ dependencies:
|
||||||
dio: ^4.0.6
|
dio: ^4.0.6
|
||||||
cool_alert: ^1.1.0
|
cool_alert: ^1.1.0
|
||||||
permission_handler: ^10.2.0
|
permission_handler: ^10.2.0
|
||||||
|
expandable_group: ^0.0.8
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
Loading…
Reference in New Issue