load eligibilities with profile bloc
parent
0fb2ca49fa
commit
b9615e3666
|
@ -2,6 +2,7 @@ import 'package:bloc/bloc.dart';
|
||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
import 'package:unit2/model/profile/basic_info.dart';
|
import 'package:unit2/model/profile/basic_info.dart';
|
||||||
import 'package:unit2/model/profile/basic_information/primary-information.dart';
|
import 'package:unit2/model/profile/basic_information/primary-information.dart';
|
||||||
|
import 'package:unit2/model/profile/eligibility.dart';
|
||||||
import 'package:unit2/model/profile/profileInfomation.dart';
|
import 'package:unit2/model/profile/profileInfomation.dart';
|
||||||
import 'package:unit2/sevices/profile/profile_service.dart';
|
import 'package:unit2/sevices/profile/profile_service.dart';
|
||||||
|
|
||||||
|
@ -23,5 +24,10 @@ class ProfileBloc extends Bloc<ProfileEvent, ProfileState> {
|
||||||
// emit(ProfileErrorState(mesage: e.toString()));
|
// emit(ProfileErrorState(mesage: e.toString()));
|
||||||
// }
|
// }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
on<LoadEligibility>((event,emit){
|
||||||
|
emit(ProfileLoading());
|
||||||
|
emit(EligibilityLoaded(eligibilities: event.eligibilities));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,3 +21,10 @@ class LoadProfileInformation extends ProfileEvent{
|
||||||
List<Object> get props => [];
|
List<Object> get props => [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class LoadEligibility extends ProfileEvent{
|
||||||
|
final List<EligibityCert> eligibilities;
|
||||||
|
const LoadEligibility({required this.eligibilities});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,3 +27,10 @@ class ProfileLoading extends ProfileState{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class EligibilityLoaded extends ProfileState{
|
||||||
|
final List<EligibityCert> eligibilities;
|
||||||
|
const EligibilityLoaded({required this.eligibilities});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [eligibilities];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,122 @@
|
||||||
|
// To parse this JSON data, do
|
||||||
|
//
|
||||||
|
// final barangay = barangayFromJson(jsonString);
|
||||||
|
|
||||||
|
import 'package:meta/meta.dart';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
Barangay barangayFromJson(String str) => Barangay.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String barangayToJson(Barangay data) => json.encode(data.toJson());
|
||||||
|
|
||||||
|
class Barangay {
|
||||||
|
Barangay({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.cityMunicipality,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String code;
|
||||||
|
final String description;
|
||||||
|
final CityMunicipality cityMunicipality;
|
||||||
|
|
||||||
|
factory Barangay.fromJson(Map<String, dynamic> json) => Barangay(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
cityMunicipality: CityMunicipality.fromJson(json["city_municipality"]),
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"city_municipality": cityMunicipality.toJson(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class CityMunicipality {
|
||||||
|
CityMunicipality({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.province,
|
||||||
|
required this.psgcCode,
|
||||||
|
required this.zipcode,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String code;
|
||||||
|
final String description;
|
||||||
|
final Province province;
|
||||||
|
final String psgcCode;
|
||||||
|
final String zipcode;
|
||||||
|
|
||||||
|
factory CityMunicipality.fromJson(Map<String, dynamic> json) => CityMunicipality(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
province: Province.fromJson(json["province"]),
|
||||||
|
psgcCode: json["psgc_code"],
|
||||||
|
zipcode: json["zipcode"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"province": province.toJson(),
|
||||||
|
"psgc_code": psgcCode,
|
||||||
|
"zipcode": zipcode,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Province {
|
||||||
|
Province({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.region,
|
||||||
|
required this.psgcCode,
|
||||||
|
required this.shortname,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String code;
|
||||||
|
final String description;
|
||||||
|
final Region region;
|
||||||
|
final String psgcCode;
|
||||||
|
final String shortname;
|
||||||
|
|
||||||
|
factory Province.fromJson(Map<String, dynamic> json) => Province(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
region: Region.fromJson(json["region"]),
|
||||||
|
psgcCode: json["psgc_code"],
|
||||||
|
shortname: json["shortname"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"region": region.toJson(),
|
||||||
|
"psgc_code": psgcCode,
|
||||||
|
"shortname": shortname,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Region {
|
||||||
|
Region({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.psgcCode,
|
||||||
|
});
|
||||||
|
|
||||||
|
final int code;
|
||||||
|
final String description;
|
||||||
|
final String psgcCode;
|
||||||
|
|
||||||
|
factory Region.fromJson(Map<String, dynamic> json) => Region(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
psgcCode: json["psgc_code"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"psgc_code": psgcCode,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
// To parse this JSON data, do
|
||||||
|
//
|
||||||
|
// final city = cityFromJson(jsonString);
|
||||||
|
|
||||||
|
import 'package:meta/meta.dart';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
City cityFromJson(String str) => City.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String cityToJson(City data) => json.encode(data.toJson());
|
||||||
|
|
||||||
|
class City {
|
||||||
|
City({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.province,
|
||||||
|
required this.psgcCode,
|
||||||
|
required this.zipcode,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String code;
|
||||||
|
final String description;
|
||||||
|
final Province province;
|
||||||
|
final String psgcCode;
|
||||||
|
final String zipcode;
|
||||||
|
|
||||||
|
factory City.fromJson(Map<String, dynamic> json) => City(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
province: Province.fromJson(json["province"]),
|
||||||
|
psgcCode: json["psgc_code"],
|
||||||
|
zipcode: json["zipcode"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"province": province.toJson(),
|
||||||
|
"psgc_code": psgcCode,
|
||||||
|
"zipcode": zipcode,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Province {
|
||||||
|
Province({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.region,
|
||||||
|
required this.psgcCode,
|
||||||
|
required this.shortname,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String code;
|
||||||
|
final String description;
|
||||||
|
final Region region;
|
||||||
|
final String psgcCode;
|
||||||
|
final String shortname;
|
||||||
|
|
||||||
|
factory Province.fromJson(Map<String, dynamic> json) => Province(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
region: Region.fromJson(json["region"]),
|
||||||
|
psgcCode: json["psgc_code"],
|
||||||
|
shortname: json["shortname"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"region": region.toJson(),
|
||||||
|
"psgc_code": psgcCode,
|
||||||
|
"shortname": shortname,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Region {
|
||||||
|
Region({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.psgcCode,
|
||||||
|
});
|
||||||
|
|
||||||
|
final int code;
|
||||||
|
final String description;
|
||||||
|
final String psgcCode;
|
||||||
|
|
||||||
|
factory Region.fromJson(Map<String, dynamic> json) => Region(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
psgcCode: json["psgc_code"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"psgc_code": psgcCode,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
// To parse this JSON data, do
|
||||||
|
//
|
||||||
|
// final country = countryFromJson(jsonString);
|
||||||
|
|
||||||
|
import 'package:meta/meta.dart';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
Country countryFromJson(String str) => Country.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String countryToJson(Country data) => json.encode(data.toJson());
|
||||||
|
|
||||||
|
class Country {
|
||||||
|
Country({
|
||||||
|
required this.id,
|
||||||
|
required this.name,
|
||||||
|
required this.code,
|
||||||
|
});
|
||||||
|
|
||||||
|
final int id;
|
||||||
|
final String name;
|
||||||
|
final String code;
|
||||||
|
|
||||||
|
factory Country.fromJson(Map<String, dynamic> json) => Country(
|
||||||
|
id: json["id"],
|
||||||
|
name: json["name"],
|
||||||
|
code: json["code"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"name": name,
|
||||||
|
"code": code,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
// To parse this JSON data, do
|
||||||
|
//
|
||||||
|
// final province = provinceFromJson(jsonString);
|
||||||
|
|
||||||
|
import 'package:meta/meta.dart';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
Province provinceFromJson(String str) => Province.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String provinceToJson(Province data) => json.encode(data.toJson());
|
||||||
|
|
||||||
|
class Province {
|
||||||
|
Province({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.region,
|
||||||
|
required this.psgcCode,
|
||||||
|
required this.shortname,
|
||||||
|
});
|
||||||
|
|
||||||
|
final String code;
|
||||||
|
final String description;
|
||||||
|
final Region region;
|
||||||
|
final String psgcCode;
|
||||||
|
final String shortname;
|
||||||
|
|
||||||
|
factory Province.fromJson(Map<String, dynamic> json) => Province(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
region: Region.fromJson(json["region"]),
|
||||||
|
psgcCode: json["psgc_code"],
|
||||||
|
shortname: json["shortname"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"region": region.toJson(),
|
||||||
|
"psgc_code": psgcCode,
|
||||||
|
"shortname": shortname,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
class Region {
|
||||||
|
Region({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.psgcCode,
|
||||||
|
});
|
||||||
|
|
||||||
|
final int code;
|
||||||
|
final String description;
|
||||||
|
final String psgcCode;
|
||||||
|
|
||||||
|
factory Region.fromJson(Map<String, dynamic> json) => Region(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
psgcCode: json["psgc_code"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"psgc_code": psgcCode,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
// To parse this JSON data, do
|
||||||
|
//
|
||||||
|
// final region = regionFromJson(jsonString);
|
||||||
|
|
||||||
|
import 'package:meta/meta.dart';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
Region regionFromJson(String str) => Region.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String regionToJson(Region data) => json.encode(data.toJson());
|
||||||
|
|
||||||
|
class Region {
|
||||||
|
Region({
|
||||||
|
required this.code,
|
||||||
|
required this.description,
|
||||||
|
required this.psgcCode,
|
||||||
|
});
|
||||||
|
|
||||||
|
final int code;
|
||||||
|
final String description;
|
||||||
|
final String psgcCode;
|
||||||
|
|
||||||
|
factory Region.fromJson(Map<String, dynamic> json) => Region(
|
||||||
|
code: json["code"],
|
||||||
|
description: json["description"],
|
||||||
|
psgcCode: json["psgc_code"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"code": code,
|
||||||
|
"description": description,
|
||||||
|
"psgc_code": psgcCode,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
// To parse this JSON data, do
|
||||||
|
//
|
||||||
|
// final eligibilities = eligibilitiesFromJson(jsonString);
|
||||||
|
|
||||||
|
import 'package:meta/meta.dart';
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
Eligibilities eligibilitiesFromJson(String str) => Eligibilities.fromJson(json.decode(str));
|
||||||
|
|
||||||
|
String eligibilitiesToJson(Eligibilities data) => json.encode(data.toJson());
|
||||||
|
|
||||||
|
class Eligibilities {
|
||||||
|
Eligibilities({
|
||||||
|
required this.id,
|
||||||
|
required this.title,
|
||||||
|
required this.type,
|
||||||
|
});
|
||||||
|
|
||||||
|
final int id;
|
||||||
|
final String title;
|
||||||
|
final String type;
|
||||||
|
|
||||||
|
factory Eligibilities.fromJson(Map<String, dynamic> json) => Eligibilities(
|
||||||
|
id: json["id"],
|
||||||
|
title: json["title"],
|
||||||
|
type: json["type"],
|
||||||
|
);
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() => {
|
||||||
|
"id": id,
|
||||||
|
"title": title,
|
||||||
|
"type": type,
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,225 @@
|
||||||
|
import 'package:date_time_picker/date_time_picker.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/src/widgets/framework.dart';
|
||||||
|
import 'package:flutter/src/widgets/placeholder.dart';
|
||||||
|
import 'package:flutter_form_builder/flutter_form_builder.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:unit2/model/profile/eligibility.dart';
|
||||||
|
|
||||||
|
import '../../../../theme-data.dart/btn-style.dart';
|
||||||
|
import '../../../../theme-data.dart/colors.dart';
|
||||||
|
import '../../../../theme-data.dart/form-style.dart';
|
||||||
|
import '../../../../utils/global.dart';
|
||||||
|
import '../../../../utils/text_container.dart';
|
||||||
|
|
||||||
|
class EditEligibilityScreen extends StatefulWidget {
|
||||||
|
final EligibityCert eligibityCert;
|
||||||
|
const EditEligibilityScreen({super.key,required this.eligibityCert});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<EditEligibilityScreen> createState() => _EditEligibilityScreenState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _EditEligibilityScreenState extends State<EditEligibilityScreen> {
|
||||||
|
final formKey = GlobalKey<FormBuilderState>();
|
||||||
|
bool overseas =false;
|
||||||
|
DateFormat dteFormat2 = DateFormat.yMMMMd('en_US');
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Center(
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 25, horizontal: 18),
|
||||||
|
child: FormBuilder(
|
||||||
|
key: formKey,
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
FormBuilderTextField(
|
||||||
|
name: "eligibility",
|
||||||
|
initialValue: widget.eligibityCert.eligibility!.title!,
|
||||||
|
decoration:
|
||||||
|
normalTextFieldStyle("Eligibility", "Eligibility"),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: screenWidth,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
|
child: FormBuilderTextField(
|
||||||
|
name: 'license number',
|
||||||
|
initialValue:
|
||||||
|
widget.eligibityCert.licenseNumber,
|
||||||
|
decoration: normalTextFieldStyle(
|
||||||
|
"license number", "license number"),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
width: 12,
|
||||||
|
),
|
||||||
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
|
child: FormBuilderTextField(
|
||||||
|
name: 'rating',
|
||||||
|
initialValue:
|
||||||
|
widget.eligibityCert.rating.toString(),
|
||||||
|
decoration:
|
||||||
|
normalTextFieldStyle('rating', 'rating'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: screenWidth,
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
|
child: DateTimePicker(
|
||||||
|
firstDate: DateTime(2000),
|
||||||
|
lastDate: DateTime(2100),
|
||||||
|
decoration: normalTextFieldStyle(
|
||||||
|
"Exam date", "Exam date"),
|
||||||
|
initialValue:
|
||||||
|
widget.eligibityCert.examDate == null
|
||||||
|
? ''
|
||||||
|
: dteFormat2.format(
|
||||||
|
widget.eligibityCert.examDate!),
|
||||||
|
)),
|
||||||
|
const SizedBox(
|
||||||
|
width: 12,
|
||||||
|
),
|
||||||
|
Flexible(
|
||||||
|
flex: 1,
|
||||||
|
child: DateTimePicker(
|
||||||
|
firstDate: DateTime(2000),
|
||||||
|
lastDate: DateTime(2100),
|
||||||
|
decoration: normalTextFieldStyle(
|
||||||
|
"Validity date", "Validity date"),
|
||||||
|
initialValue:
|
||||||
|
widget.eligibityCert.validityDate == null
|
||||||
|
? ''
|
||||||
|
: dteFormat2.format(
|
||||||
|
widget.eligibityCert.validityDate!),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
"Placement of Examination/Confinement",
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.displaySmall!
|
||||||
|
.copyWith(fontSize: blockSizeVertical * 2),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 12,
|
||||||
|
),
|
||||||
|
FormBuilderSwitch(
|
||||||
|
initialValue: overseas,
|
||||||
|
activeColor: second,
|
||||||
|
onChanged: (value) {
|
||||||
|
setState(() {
|
||||||
|
overseas = value!;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
decoration: normalTextFieldStyle("", ''),
|
||||||
|
name: 'overseas',
|
||||||
|
title: const Text("Overseas Address?"),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
child: overseas == true
|
||||||
|
? FormBuilderTextField(
|
||||||
|
name: 'country',
|
||||||
|
decoration: normalTextFieldStyle(
|
||||||
|
"Country", "Country"),
|
||||||
|
)
|
||||||
|
: Column(
|
||||||
|
children: [
|
||||||
|
FormBuilderDropdown(
|
||||||
|
decoration: normalTextFieldStyle(
|
||||||
|
"Region", "Region"),
|
||||||
|
name: 'region',
|
||||||
|
items: [],
|
||||||
|
initialValue: widget
|
||||||
|
.eligibityCert
|
||||||
|
.examAddress
|
||||||
|
?.cityMunicipality
|
||||||
|
?.province
|
||||||
|
?.region
|
||||||
|
?.description ==
|
||||||
|
null
|
||||||
|
? 'region'
|
||||||
|
: 'region',
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
FormBuilderDropdown(
|
||||||
|
decoration: normalTextFieldStyle(
|
||||||
|
'Province', "Province"),
|
||||||
|
name: 'province',
|
||||||
|
items: [],
|
||||||
|
initialValue: widget
|
||||||
|
.eligibityCert
|
||||||
|
.examAddress
|
||||||
|
?.cityMunicipality
|
||||||
|
?.province
|
||||||
|
?.description ==
|
||||||
|
null
|
||||||
|
? 'region'
|
||||||
|
: 'pprovince'),
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
FormBuilderDropdown(
|
||||||
|
decoration: normalTextFieldStyle(
|
||||||
|
"Municipality", "Municipality"),
|
||||||
|
name: 'municipality',
|
||||||
|
items: [],
|
||||||
|
initialValue: widget
|
||||||
|
.eligibityCert
|
||||||
|
.examAddress
|
||||||
|
?.cityMunicipality
|
||||||
|
?.description ==
|
||||||
|
null
|
||||||
|
? 'region'
|
||||||
|
: 'municipality',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)),
|
||||||
|
const SizedBox(
|
||||||
|
height: 20,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: screenWidth,
|
||||||
|
height: 60,
|
||||||
|
child: ElevatedButton(
|
||||||
|
style: mainBtnStyle(
|
||||||
|
primary, Colors.transparent, second),
|
||||||
|
onPressed: () {},
|
||||||
|
child: const Text(submit)),
|
||||||
|
),
|
||||||
|
const SizedBox(height: 20,),
|
||||||
|
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,182 @@
|
||||||
|
import 'package:app_popup_menu/app_popup_menu.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter/src/widgets/framework.dart';
|
||||||
|
import 'package:flutter/src/widgets/placeholder.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:fluttericon/font_awesome_icons.dart';
|
||||||
|
import 'package:unit2/bloc/profile/profile_bloc.dart';
|
||||||
|
import 'package:unit2/bloc/user/user_bloc.dart';
|
||||||
|
import 'package:unit2/model/profile/eligibility.dart';
|
||||||
|
import 'package:unit2/screens/profile/components/eligibility/edit_modal.dart';
|
||||||
|
import 'package:unit2/theme-data.dart/box_shadow.dart';
|
||||||
|
import 'package:unit2/theme-data.dart/colors.dart';
|
||||||
|
import 'package:unit2/utils/alerts.dart';
|
||||||
|
import 'package:unit2/utils/global.dart';
|
||||||
|
import 'package:unit2/utils/text_container.dart';
|
||||||
|
import 'package:unit2/widgets/add_leading.dart';
|
||||||
|
import 'package:unit2/widgets/empty_data.dart';
|
||||||
|
|
||||||
|
class EligibiltyScreen extends StatefulWidget {
|
||||||
|
const EligibiltyScreen({super.key,});
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<EligibiltyScreen> createState() => _EligibiltyScreenState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _EligibiltyScreenState extends State<EligibiltyScreen> {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Scaffold(
|
||||||
|
appBar: AppBar(
|
||||||
|
title: const Text(elibilityScreenTitle),
|
||||||
|
centerTitle: true,
|
||||||
|
backgroundColor: primary,
|
||||||
|
actions: context.read()[AddLeading(
|
||||||
|
onPressed: () => () {},
|
||||||
|
)],
|
||||||
|
),
|
||||||
|
body: BlocBuilder<UserBloc, UserState>(
|
||||||
|
builder: (context, state) {
|
||||||
|
return BlocBuilder<ProfileBloc, ProfileState>(
|
||||||
|
builder: (context, state) {
|
||||||
|
if(state is EligibilityLoaded){
|
||||||
|
return ListView.builder(
|
||||||
|
padding:
|
||||||
|
const EdgeInsets.symmetric(vertical: 8, horizontal: 10),
|
||||||
|
itemCount: state.eligibilities.length,
|
||||||
|
itemBuilder: (BuildContext context, int index) {
|
||||||
|
String title =
|
||||||
|
state.eligibilities[index].eligibility!.title!;
|
||||||
|
return Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: screenWidth,
|
||||||
|
padding: const EdgeInsets.symmetric(
|
||||||
|
horizontal: 12, vertical: 8),
|
||||||
|
decoration: box1(),
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.start,
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
|
title,
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.titleMedium!
|
||||||
|
.copyWith(
|
||||||
|
fontWeight: FontWeight.w500),
|
||||||
|
),
|
||||||
|
const Divider(),
|
||||||
|
const SizedBox(
|
||||||
|
height: 5,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
"$licenseNumber: ${state.eligibilities[index].licenseNumber == null ? 'N/A' : state.eligibilities[index].licenseNumber.toString()}",
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.titleSmall),
|
||||||
|
const SizedBox(
|
||||||
|
height: 3,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
" : ${state.eligibilities[index].rating ?? 'N/A'}.",
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.titleSmall)
|
||||||
|
]),
|
||||||
|
),
|
||||||
|
AppPopupMenu<int>(
|
||||||
|
offset: const Offset(-10, -10),
|
||||||
|
elevation: 3,
|
||||||
|
onSelected: (value) {
|
||||||
|
// if (value == 1) {
|
||||||
|
// confirmAlert(context, () => null,
|
||||||
|
// "Delete?", "Confirm Delete?");
|
||||||
|
// }
|
||||||
|
// if (value == 2) {
|
||||||
|
// context.read<ProfileBloc>().add(
|
||||||
|
// EditEligibility(
|
||||||
|
// eligibityCert: widget
|
||||||
|
// .eligibilities[index]));
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
menuItems: [
|
||||||
|
PopupMenuItem(
|
||||||
|
value: 1,
|
||||||
|
child: Row(
|
||||||
|
children: const [
|
||||||
|
Icon(
|
||||||
|
Icons.delete,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 10,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Delete',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
PopupMenuItem(
|
||||||
|
value: 2,
|
||||||
|
child: Row(
|
||||||
|
children: const [
|
||||||
|
Icon(
|
||||||
|
Icons.edit,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 10,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Edit',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
PopupMenuItem(
|
||||||
|
value: 2,
|
||||||
|
child: Row(
|
||||||
|
children: const [
|
||||||
|
Icon(
|
||||||
|
FontAwesome.attach,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 10,
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'Attachment',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
icon: const Icon(
|
||||||
|
Icons.more_vert,
|
||||||
|
color: Colors.grey,
|
||||||
|
),
|
||||||
|
tooltip: "Options",
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 5,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return Container();
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ import 'package:fluttericon/entypo_icons.dart';
|
||||||
import 'package:fluttericon/font_awesome5_icons.dart';
|
import 'package:fluttericon/font_awesome5_icons.dart';
|
||||||
import 'package:fluttericon/modern_pictograms_icons.dart';
|
import 'package:fluttericon/modern_pictograms_icons.dart';
|
||||||
import 'package:unit2/bloc/profile/profile_bloc.dart';
|
import 'package:unit2/bloc/profile/profile_bloc.dart';
|
||||||
|
import 'package:unit2/model/login_data/employee_info/employee_info.dart';
|
||||||
import 'package:unit2/screens/profile/components/basic_information/address_screen.dart';
|
import 'package:unit2/screens/profile/components/basic_information/address_screen.dart';
|
||||||
import 'package:unit2/screens/profile/components/basic_information/citizenship_screen.dart';
|
import 'package:unit2/screens/profile/components/basic_information/citizenship_screen.dart';
|
||||||
import 'package:unit2/screens/profile/components/basic_information/contact_information_screen.dart';
|
import 'package:unit2/screens/profile/components/basic_information/contact_information_screen.dart';
|
||||||
|
@ -46,8 +47,7 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
title: const Text('Profile'),
|
title: const Text('Profile'),
|
||||||
),
|
),
|
||||||
body: ProgressHUD(
|
body: ProgressHUD(
|
||||||
child:
|
child: BlocBuilder<UserBloc, UserState>(builder: (context, state) {
|
||||||
BlocBuilder<UserBloc, UserState>(builder: (context, state) {
|
|
||||||
if (state is UserLoggedIn) {
|
if (state is UserLoggedIn) {
|
||||||
return BlocConsumer<ProfileBloc, ProfileState>(
|
return BlocConsumer<ProfileBloc, ProfileState>(
|
||||||
listener: (context, state) {
|
listener: (context, state) {
|
||||||
|
@ -64,20 +64,20 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
},
|
},
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
if (state is ProfileLoaded) {
|
if (state is ProfileLoaded) {
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
vertical: 12, horizontal: 12),
|
vertical: 12, horizontal: 12),
|
||||||
child: ListView(
|
child: ListView(
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
"View and Update your Profile Information",textAlign: TextAlign.center
|
"View and Update your Profile Information",
|
||||||
,style: Theme.of(context).textTheme.bodyLarge,),
|
textAlign: TextAlign.center,
|
||||||
|
style: Theme.of(context).textTheme.bodyLarge,
|
||||||
|
),
|
||||||
ExpandableGroup(
|
ExpandableGroup(
|
||||||
collapsedIcon:
|
collapsedIcon:
|
||||||
const Icon(Icons.keyboard_arrow_down),
|
const Icon(Icons.keyboard_arrow_down),
|
||||||
expandedIcon:
|
expandedIcon: const Icon(Icons.keyboard_arrow_up),
|
||||||
const Icon(Icons.keyboard_arrow_up),
|
|
||||||
header: const ListTile(
|
header: const ListTile(
|
||||||
leading: Icon(
|
leading: Icon(
|
||||||
Elusive.address_book,
|
Elusive.address_book,
|
||||||
|
@ -85,37 +85,54 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
"Basic Information",
|
"Basic Information",
|
||||||
style: TextStyle(
|
style: TextStyle(fontWeight: FontWeight.bold),
|
||||||
fontWeight: FontWeight.bold),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
items: [
|
items: [
|
||||||
subMenu(Icons.person, "Primary", () {
|
subMenu(Icons.person, "Primary", () {
|
||||||
Navigator.push(context,MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return PrimaryInfo(primaryInformation: state.profileInformation.basicInfo.primaryInformation!);
|
builder: (BuildContext context) {
|
||||||
|
return PrimaryInfo(
|
||||||
|
primaryInformation: state
|
||||||
|
.profileInformation
|
||||||
|
.basicInfo
|
||||||
|
.primaryInformation!);
|
||||||
}));
|
}));
|
||||||
}),
|
}),
|
||||||
subMenu(Icons.home, "Home Addresses", () {
|
subMenu(Icons.home, "Home Addresses", () {
|
||||||
Navigator.push(context,MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return AddressScreen(addresses: state.profileInformation.basicInfo.addresses);
|
builder: (BuildContext context) {
|
||||||
}) );
|
return AddressScreen(
|
||||||
|
addresses: state.profileInformation
|
||||||
}),
|
.basicInfo.addresses);
|
||||||
subMenu(
|
|
||||||
Icons.contact_mail, "Identifications",(){
|
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
|
||||||
return IdentificationsScreen(identities: state.profileInformation.basicInfo.identifications);
|
|
||||||
}));
|
}));
|
||||||
}),
|
}),
|
||||||
subMenu(
|
subMenu(Icons.contact_mail, "Identifications",
|
||||||
Icons.contact_phone, "Contact Info",(){
|
() {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return ContactInformationScreen(contacts: state.profileInformation.basicInfo.contactInformation,);
|
builder: (BuildContext context) {
|
||||||
|
return IdentificationsScreen(
|
||||||
|
identities: state.profileInformation
|
||||||
|
.basicInfo.identifications);
|
||||||
|
}));
|
||||||
|
}),
|
||||||
|
subMenu(Icons.contact_phone, "Contact Info",
|
||||||
|
() {
|
||||||
|
Navigator.push(context, MaterialPageRoute(
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
return ContactInformationScreen(
|
||||||
|
contacts: state.profileInformation
|
||||||
|
.basicInfo.contactInformation,
|
||||||
|
);
|
||||||
}));
|
}));
|
||||||
}),
|
}),
|
||||||
subMenu(Icons.flag, "Citizenships", () {
|
subMenu(Icons.flag, "Citizenships", () {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return CitizenShipScreen(citizenships: state.profileInformation.basicInfo.citizenships,);
|
builder: (BuildContext context) {
|
||||||
|
return CitizenShipScreen(
|
||||||
|
citizenships: state.profileInformation
|
||||||
|
.basicInfo.citizenships,
|
||||||
|
);
|
||||||
}));
|
}));
|
||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
|
@ -124,8 +141,11 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
icon: Elusive.group,
|
icon: Elusive.group,
|
||||||
title: "Family",
|
title: "Family",
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return FamilyBackgroundScreen(familyBackground: state.profileInformation.families);
|
builder: (BuildContext context) {
|
||||||
|
return FamilyBackgroundScreen(
|
||||||
|
familyBackground:
|
||||||
|
state.profileInformation.families);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -134,8 +154,12 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
icon: FontAwesome5.graduation_cap,
|
icon: FontAwesome5.graduation_cap,
|
||||||
title: "Education",
|
title: "Education",
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return EducationScreen(educationBackgrounds: state.profileInformation.educationalBackgrounds);
|
builder: (BuildContext context) {
|
||||||
|
return EducationScreen(
|
||||||
|
educationBackgrounds: state
|
||||||
|
.profileInformation
|
||||||
|
.educationalBackgrounds);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -144,8 +168,14 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
icon: Icons.stars,
|
icon: Icons.stars,
|
||||||
title: "Eligibility",
|
title: "Eligibility",
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return EligibiltyScreen(eligibilities: state.profileInformation.eligibilities);
|
builder: (BuildContext context) {
|
||||||
|
return BlocProvider<ProfileBloc>.value(value: ProfileBloc()..add(LoadEligibility(eligibilities: state.profileInformation.eligibilities)),
|
||||||
|
|
||||||
|
child: EligibiltyScreen(
|
||||||
|
eligibilities: state
|
||||||
|
.profileInformation.eligibilities),
|
||||||
|
);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -154,8 +184,11 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
icon: FontAwesome5.shopping_bag,
|
icon: FontAwesome5.shopping_bag,
|
||||||
title: "Work History",
|
title: "Work History",
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return WorkHistoryScreen(workExperiences: state.profileInformation.workExperiences);
|
builder: (BuildContext context) {
|
||||||
|
return WorkHistoryScreen(
|
||||||
|
workExperiences: state
|
||||||
|
.profileInformation.workExperiences);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -164,8 +197,11 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
icon: FontAwesome5.walking,
|
icon: FontAwesome5.walking,
|
||||||
title: "Voluntary Work & Civic Services",
|
title: "Voluntary Work & Civic Services",
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return VolunataryWorkScreen(voluntaryWorks: state.profileInformation.voluntaryWorks);
|
builder: (BuildContext context) {
|
||||||
|
return VolunataryWorkScreen(
|
||||||
|
voluntaryWorks: state
|
||||||
|
.profileInformation.voluntaryWorks);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -174,8 +210,12 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
icon: Elusive.lightbulb,
|
icon: Elusive.lightbulb,
|
||||||
title: "Learning & Development",
|
title: "Learning & Development",
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return LearningAndDevelopmentScreen(learningDevelopments: state.profileInformation.learningsAndDevelopment);
|
builder: (BuildContext context) {
|
||||||
|
return LearningAndDevelopmentScreen(
|
||||||
|
learningDevelopments: state
|
||||||
|
.profileInformation
|
||||||
|
.learningsAndDevelopment);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -184,16 +224,18 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
icon: Brandico.codepen,
|
icon: Brandico.codepen,
|
||||||
title: "Personal References",
|
title: "Personal References",
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return ReferencesScreen(references: state.profileInformation.references);
|
builder: (BuildContext context) {
|
||||||
|
return ReferencesScreen(
|
||||||
|
references:
|
||||||
|
state.profileInformation.references);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
ExpandableGroup(
|
ExpandableGroup(
|
||||||
collapsedIcon:
|
collapsedIcon:
|
||||||
const Icon(Icons.keyboard_arrow_down),
|
const Icon(Icons.keyboard_arrow_down),
|
||||||
expandedIcon:
|
expandedIcon: const Icon(Icons.keyboard_arrow_up),
|
||||||
const Icon(Icons.keyboard_arrow_up),
|
|
||||||
header: const ListTile(
|
header: const ListTile(
|
||||||
leading: Icon(
|
leading: Icon(
|
||||||
Icons.info,
|
Icons.info,
|
||||||
|
@ -201,36 +243,45 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
"Other Information",
|
"Other Information",
|
||||||
style: TextStyle(
|
style: TextStyle(fontWeight: FontWeight.bold),
|
||||||
fontWeight: FontWeight.bold),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
items: [
|
items: [
|
||||||
subMenu(Icons.fitness_center,
|
subMenu(
|
||||||
"Skills & Hobbies",(){
|
Icons.fitness_center, "Skills & Hobbies",
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
() {
|
||||||
return SkillHobbiesScreen(skillsHobbies: state.profileInformation.otherInformation.skillsAndHobbies);
|
Navigator.push(context, MaterialPageRoute(
|
||||||
|
builder: (BuildContext context) {
|
||||||
|
return SkillHobbiesScreen(
|
||||||
|
skillsHobbies: state.profileInformation
|
||||||
|
.otherInformation.skillsAndHobbies);
|
||||||
}));
|
}));
|
||||||
}),
|
}),
|
||||||
subMenu(FontAwesome5.certificate,
|
subMenu(FontAwesome5.certificate,
|
||||||
"Organization Memberships", () {
|
"Organization Memberships", () {
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
Navigator.push(context, MaterialPageRoute(
|
||||||
return OrgMembershipsScreen(orgMemberships: state.profileInformation.otherInformation.orgMemberships);
|
builder: (BuildContext context) {
|
||||||
|
return OrgMembershipsScreen(
|
||||||
|
orgMemberships: state.profileInformation
|
||||||
|
.otherInformation.orgMemberships);
|
||||||
}));
|
}));
|
||||||
}),
|
}),
|
||||||
subMenu(Entypo.doc_text,
|
subMenu(Entypo.doc_text,
|
||||||
"Non-Academic Recognitions", () {
|
"Non-Academic Recognitions", () {
|
||||||
|
Navigator.push(context, MaterialPageRoute(
|
||||||
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context){
|
builder: (BuildContext context) {
|
||||||
return NonAcademicRecognitionScreen(nonAcademicRecognitions: state.profileInformation.otherInformation.nonAcademicRecognition);
|
return NonAcademicRecognitionScreen(
|
||||||
|
nonAcademicRecognitions: state
|
||||||
|
.profileInformation
|
||||||
|
.otherInformation
|
||||||
|
.nonAcademicRecognition);
|
||||||
}));
|
}));
|
||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
ExpandableGroup(
|
ExpandableGroup(
|
||||||
collapsedIcon:
|
collapsedIcon:
|
||||||
const Icon(Icons.keyboard_arrow_down),
|
const Icon(Icons.keyboard_arrow_down),
|
||||||
expandedIcon:
|
expandedIcon: const Icon(Icons.keyboard_arrow_up),
|
||||||
const Icon(Icons.keyboard_arrow_up),
|
|
||||||
header: const ListTile(
|
header: const ListTile(
|
||||||
leading: Icon(
|
leading: Icon(
|
||||||
FontAwesome5.laptop_house,
|
FontAwesome5.laptop_house,
|
||||||
|
@ -238,8 +289,7 @@ class _ProfileInfoState extends State<ProfileInfo> {
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
"Assets",
|
"Assets",
|
||||||
style: TextStyle(
|
style: TextStyle(fontWeight: FontWeight.bold),
|
||||||
fontWeight: FontWeight.bold),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
items: [
|
items: [
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:toggle_switch/toggle_switch.dart';
|
||||||
|
|
||||||
|
class CostumToggleSwitch extends StatelessWidget {
|
||||||
|
final List<Color> activeBGColors;
|
||||||
|
final List<IconData> icons;
|
||||||
|
final int initialLabelIndex;
|
||||||
|
final void Function(int?)? onToggle;
|
||||||
|
final List<String> labels;
|
||||||
|
const CostumToggleSwitch(
|
||||||
|
{Key? key,
|
||||||
|
required this.activeBGColors,
|
||||||
|
required this.icons,
|
||||||
|
required this.onToggle,
|
||||||
|
required this.labels,
|
||||||
|
required this.initialLabelIndex
|
||||||
|
|
||||||
|
})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Container(
|
||||||
|
padding: const EdgeInsets.all(15),
|
||||||
|
height: 80,
|
||||||
|
child: ToggleSwitch(
|
||||||
|
minWidth: 150.0,
|
||||||
|
cornerRadius: 25.0,
|
||||||
|
activeBgColors: [
|
||||||
|
[Colors.green[800]!],
|
||||||
|
[Colors.red[800]!]
|
||||||
|
],
|
||||||
|
activeFgColor: Colors.white,
|
||||||
|
inactiveBgColor: Colors.grey,
|
||||||
|
inactiveFgColor: Colors.white,
|
||||||
|
initialLabelIndex: initialLabelIndex,
|
||||||
|
totalSwitches: 2,
|
||||||
|
labels: labels,
|
||||||
|
icons: icons,
|
||||||
|
radiusStyle: false,
|
||||||
|
onToggle: onToggle),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,14 @@ packages:
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.2"
|
version: "3.0.2"
|
||||||
|
app_popup_menu:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: app_popup_menu
|
||||||
|
sha256: e05b262b65289431603a84e04e53cb2f3aca6013d3ea61e3f24ddd48d49ef848
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "1.0.0"
|
||||||
archive:
|
archive:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -68,6 +68,7 @@ dependencies:
|
||||||
permission_handler: ^10.2.0
|
permission_handler: ^10.2.0
|
||||||
expandable_group: ^0.0.8
|
expandable_group: ^0.0.8
|
||||||
badges: ^3.0.2
|
badges: ^3.0.2
|
||||||
|
app_popup_menu: ^1.0.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|
Loading…
Reference in New Issue