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) {
|
||||
if (state is UserLoggedIn) {
|
||||
print(state.userData!.user!.login!.token);
|
||||
state.userData!.user!.login!.user!.roles!.forEach((role) {
|
||||
Role? getRole = role;
|
||||
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/screens/unit2/login/login.dart';
|
||||
import 'package:unit2/utils/global_context.dart';
|
||||
import '../screens/profile/profile.dart';
|
||||
import '../screens/unit2/basic-info/basic-info.dart';
|
||||
import '../screens/unit2/homepage.dart/components/drawer-screen.dart';
|
||||
import '../screens/unit2/login/qr_login.dart';
|
||||
|
@ -30,6 +31,10 @@ class AppRouter {
|
|||
return MaterialPageRoute(builder: (_) {
|
||||
return const QRLogin();
|
||||
});
|
||||
case '/profile':
|
||||
return MaterialPageRoute(builder: (_) {
|
||||
return const ProfileInfo();
|
||||
});
|
||||
default:
|
||||
return MaterialPageRoute(builder: (context) {
|
||||
return Container();
|
||||
|
|
|
@ -176,6 +176,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
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:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -66,6 +66,7 @@ dependencies:
|
|||
dio: ^4.0.6
|
||||
cool_alert: ^1.1.0
|
||||
permission_handler: ^10.2.0
|
||||
expandable_group: ^0.0.8
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
|
Loading…
Reference in New Issue