diff --git a/.run/ts-tat.run.xml b/.run/ts-tat.run.xml
new file mode 100644
index 0000000..f7210ca
--- /dev/null
+++ b/.run/ts-tat.run.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/Screens/policy/policy.dart b/lib/Screens/policy/policy.dart
index c2f8c40..8a7c873 100644
--- a/lib/Screens/policy/policy.dart
+++ b/lib/Screens/policy/policy.dart
@@ -1,4 +1,5 @@
import 'dart:convert';
+import 'dart:math';
import 'package:flutter/material.dart';
import 'package:frontend/Screens/policy/policyCriteria.dart';
import 'package:responsive_builder/responsive_builder.dart';
@@ -6,19 +7,20 @@ import 'package:responsive_builder/responsive_builder.dart';
import '../../routes/custom_appBar.dart';
import '../../routes/custom_drawer.dart';
-class Policy extends StatefulWidget{
-
- const Policy ({super.key});
+class Policy extends StatefulWidget {
+ const Policy({super.key});
@override
_PolicyState createState() => _PolicyState();
}
-class _PolicyState extends State{
-
- late String policyType = "domestic";
+class _PolicyState extends State {
+ late String policyType = "domestic";
int? selectedServiceIndex = 1;
- late String selectedService;
+ late String selectedService = "Train";
+
+ bool showClass = true;
+ bool showCost = true;
@override
Widget build(BuildContext context) {
@@ -39,9 +41,11 @@ class _PolicyState extends State{
});
}
- Widget buildPolicyLayout(bool isDesktop){
+ Widget buildPolicyLayout(bool isDesktop) {
return Container(
- margin: EdgeInsets.all(20.0),
+ margin: isDesktop
+ ? EdgeInsets.all(20.0)
+ : EdgeInsets.only(left: 20.0, bottom: 20.0, top: 10.0, right: 10.0),
height: MediaQuery.of(context).size.height,
// color: Colors.grey,
child: Column(
@@ -52,11 +56,9 @@ class _PolicyState extends State{
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
-
Row(
children: [
Expanded(
-
child: Container(
// color: Colors.amber,
// color: Color(0xFFF7F7FB),
@@ -64,130 +66,140 @@ class _PolicyState extends State{
alignment: Alignment.center,
child: Text(
"Choose Policy Type",
- style: TextStyle(fontSize: 20,),
- ),
- ),
-
- ),
- ],
- ),
-
- SizedBox(height: 10,),
-
- Row (
- children: [
- Expanded(
-
- child: GestureDetector(
- onTap: (){ setState(() {
- policyType = "domestic";
- });},
- child: Container(
- padding: EdgeInsets.all(10),
- color: policyType == "domestic" ? Colors.blueAccent.shade100 : Color(0xFFEBEBF7),
- // color: Colors.blue.shade300,
- child: Column(
- children: [
- Text(
- "Domestic",
- style: TextStyle(color: policyType == "domestic" ? Colors.white :Colors.black87, fontSize: 18,fontWeight: FontWeight.bold),
- ),
- ],
+ style: TextStyle(
+ fontSize: 18,
),
-
),
),
),
- Expanded(
-
+ ],
+ ),
+ SizedBox(
+ height: 10,
+ ),
+ Container(
+ child: Row(
+ children: [
+ Expanded(
child: GestureDetector(
- onTap: (){ setState(() {
- policyType = "international";
- });},
-
+ onTap: () {
+ setState(() {
+ policyType = "domestic";
+ });
+ },
child: Container(
padding: EdgeInsets.all(10),
- // color: Color(0xFFEBEBF7),
- color: policyType == "international" ? Colors.blueAccent.shade100 : Color(0xFFEBEBF7),
- // color: Color(0xFFE3F2FD),
-
+ color: policyType == "domestic"
+ ? Colors.blueAccent.shade100
+ : Color(0xFFEBEBF7),
+ // color: Colors.blue.shade300,
child: Column(
children: [
Text(
- "International",
- style: TextStyle(color: policyType == "international" ? Colors.white :Colors.black87, fontSize: 18, fontWeight: FontWeight.bold),
+ "Domestic",
+ style: TextStyle(
+ color: policyType == "domestic"
+ ? Colors.white
+ : Colors.black87,
+ fontSize: 15,
+ fontWeight: FontWeight.bold),
),
],
),
),
- )
+ ),
+ ),
+ Expanded(
+ child: GestureDetector(
+ onTap: () {
+ setState(() {
+ policyType = "international";
+ });
+ },
+ child: Container(
+ padding: EdgeInsets.all(10),
+ // color: Color(0xFFEBEBF7),
+ color: policyType == "international"
+ ? Colors.blueAccent.shade100
+ : Color(0xFFEBEBF7),
+ // color: Color(0xFFE3F2FD),
- ),
-
- ],
+ child: Column(
+ children: [
+ Text(
+ "International",
+ style: TextStyle(
+ color: policyType == "international"
+ ? Colors.white
+ : Colors.black87,
+ fontSize: 15,
+ fontWeight: FontWeight.bold),
+ ),
+ ],
+ ),
+ ),
+ )),
+ ],
+ ),
),
-
],
),
),
-
- isDesktop ?
- Expanded(
- child: Row(
- children: [
-
- _buildPolicyCategoryList(isDesktop),
- _buildPolicyCategory(isDesktop),
- ],
- ),
- )
-
- : Expanded(
- child: Column(
- children: [
- _buildPolicyCategoryList(isDesktop),
- _buildPolicyCategory(isDesktop),
- ],
- ),
- )
-
+ isDesktop
+ ? Expanded(
+ child: Row(
+ children: [
+ _buildPolicyCategoryList(isDesktop),
+ _buildPolicyCategory(isDesktop),
+ ],
+ ),
+ )
+ : Expanded(
+ child: Column(
+ children: [
+ _buildPolicyCategoryList(isDesktop),
+ _buildPolicyCategory(isDesktop),
+ ],
+ ),
+ )
],
),
);
}
-
- Widget _buildPolicyCategoryList(bool isDesktop){
- return Container(
+ Widget _buildPolicyCategoryList(bool isDesktop) {
+ return Container(
color: Colors.white,
// color: Colors.blueGrey.shade200,
width: isDesktop ? MediaQuery.of(context).size.width * 0.15 : null,
- child: isDesktop ? Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- _buildPolicySubCategoryList(isDesktop)
-
- ],
- )
+ child: isDesktop
+ ? Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [_buildPolicySubCategoryList(isDesktop)],
+ )
: Container(
- // color: Colors.amber,
- child: Expanded(
- child: Row(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- _buildPolicySubCategoryList(isDesktop)
- ],
- ),
- ),
- ),
-
+ // color: Colors.amber,
+ child: Expanded(
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [_buildPolicySubCategoryList(isDesktop)],
+ ),
+ ),
+ ),
);
}
Widget _buildPolicySubCategoryList(bool isDesktop) {
List services = [
- "Flight", "Train", "Bus", "Taxi", "Forex","Accommodation",
- "Insurance", "Visa", "Miscellaneous"
+ "Flight",
+ "Train",
+ "Bus",
+ "Taxi",
+ "Forex",
+ "Accommodation",
+ "Insurance",
+ "Visa",
+ "Miscellaneous"
];
return Expanded(
@@ -195,64 +207,76 @@ class _PolicyState extends State{
scrollDirection: isDesktop ? Axis.vertical : Axis.horizontal,
child: Flex(
direction: isDesktop ? Axis.vertical : Axis.horizontal,
-
children: services.asMap().entries.map((entry) {
-
- int index = entry.key;
- String service = entry.value;
+ int index = entry.key;
+ String service = entry.value;
bool isSelected = selectedServiceIndex == index;
return SizedBox(
- width: 180,
- height: isDesktop ? MediaQuery.of(context).size.height * 0.1 : 50,
+ width: isDesktop ? 180 : null,
+ height: isDesktop
+ ? max((MediaQuery.of(context).size.height * 0.085), 10)
+ : 45,
+ child: GestureDetector(
+ onTap: () {
+ print("Selected Services - $service - $index");
+ setState(() {
+ selectedServiceIndex = index;
+ selectedService = service;
- child:GestureDetector(
- onTap :(){
- print("Selected Services - $service - $index");
- setState(() {
- selectedServiceIndex = index;
- selectedService = service;
- });
- },
-
- child: Container(
- margin: EdgeInsets.all(8),
- padding: EdgeInsets.all(8),
- decoration: BoxDecoration(
- // color: Colors.blue,
- color: isSelected ? Colors.blueAccent.shade100 : Color(0xFFEBEBF7),
- borderRadius: BorderRadius.circular(8),
- ),
- alignment: Alignment.center,
- child: Text(
- service,
- style: TextStyle(color: isSelected ? Colors.white : Colors.black87,
- fontSize: 13,
- fontWeight: isSelected ? FontWeight.bold :FontWeight.w100),
- ),
- ),
- )
- );
+ if (selectedService == "Flight" ||
+ selectedService == "Train") {
+ showClass = true;
+ showCost = true;
+ } else if (selectedService == "Accommodation") {
+ showClass = true;
+ showCost = false;
+ } else {
+ showClass = false;
+ showCost = false;
+ }
+ });
+ },
+ child: Container(
+ margin: EdgeInsets.all(8),
+ padding: isDesktop
+ ? EdgeInsets.all(8)
+ : EdgeInsets.only(top: 3, bottom: 3, left: 8, right: 8),
+ decoration: BoxDecoration(
+ // color: Colors.blue,
+ color: isSelected
+ ? Colors.blueAccent.shade100
+ : Colors.grey.shade100,
+ // : Color(0xFFEBEBF7),
+ borderRadius: BorderRadius.circular(8),
+ ),
+ alignment: Alignment.center,
+ child: Text(
+ service,
+ style: TextStyle(
+ color: isSelected ? Colors.white : Colors.black87,
+ fontSize: 13,
+ fontWeight:
+ isSelected ? FontWeight.bold : FontWeight.w100),
+ ),
+ ),
+ ));
}).toList(),
-
),
),
);
}
-
- Widget _buildPolicyCategory(bool isDesktop){
- return Expanded(
+ Widget _buildPolicyCategory(bool isDesktop) {
+ return Expanded(
child: Container(
- // color: Colors.brown.shade100,
- color: Colors.white60,
-
- child: PolicyCriteria(isDesktop: isDesktop)
-
-
- ),
+ // color: Colors.brown.shade100,
+ color: Colors.white60,
+ child: PolicyCriteria(
+ isDesktop: isDesktop,
+ isClass: showClass,
+ isCost: showCost,
+ selectedTab: selectedService)),
);
}
-
-
-}
\ No newline at end of file
+}
diff --git a/lib/Screens/policy/policyCriteria.dart b/lib/Screens/policy/policyCriteria.dart
index dfa6ae8..74481a1 100644
--- a/lib/Screens/policy/policyCriteria.dart
+++ b/lib/Screens/policy/policyCriteria.dart
@@ -1,157 +1,499 @@
+import 'package:dropdown_search/dropdown_search.dart';
import 'package:flutter/material.dart';
import '../../widgets/custom_text_field.dart';
import '../../widgets/custom_user_form.dart';
-class PolicyCriteria extends StatefulWidget{
+class PolicyCriteria extends StatefulWidget {
+ bool isDesktop;
+ String selectedTab;
+ bool isClass = true;
+ bool isCost = true;
- bool isDesktop;
-
- PolicyCriteria({super.key, required this.isDesktop});
+ PolicyCriteria(
+ {super.key,
+ required this.isDesktop,
+ required this.selectedTab,
+ required this.isClass,
+ required this.isCost});
@override
- _PolicyCriteriaState createState() => _PolicyCriteriaState();
-
+ _PolicyCriteriaState createState() => _PolicyCriteriaState();
}
-class _PolicyCriteriaState extends State{
+class _PolicyCriteriaState extends State {
+ String? selectedFirstApprovarType;
+ String? selectedService;
- Widget build(BuildContext context){
+ // bool isClass = true;
+ // bool isCost = true;
+
+ @override
+ void initState() {
+ super.initState();
+ fieldForPolicy();
+ // selectedService = widget.selectedTab;
+ }
+
+ void fieldForPolicy() {
+ print("fieldForPolicy - ${widget.selectedTab}");
+ }
+
+ Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
-
SizedBox(height: 15),
- Row(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- Text("Selected Policy Criteria For Flight",
- style: TextStyle(
- fontSize: 16,
- color:Colors.grey,
- fontWeight: FontWeight.bold
+ Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Text(
+ "Selected Policy Criteria For ${widget.selectedTab} ",
+ style: TextStyle(
+ fontSize: 13,
+ color: Color(0xFF9E9DBD),
+ fontWeight: FontWeight.bold),
)
- ,)
- ],),
-
-
- SizedBox(height: 15),
+ ],
+ ),
+ if (widget.isClass!) SizedBox(height: 15),
Row(
children: [
Expanded(
child: Container(
// color:Colors.grey,
- padding: const EdgeInsets.only(top:5,bottom: 5,left:5, right: 5),
+ padding:
+ const EdgeInsets.only(top: 5, bottom: 5, left: 5, right: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
-
- Row(
- children: [
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text("Class", style: TextStyle(fontSize: 15, fontWeight: FontWeight.w200, color: Colors.black)),
- SizedBox(height: 5),
- CustomTextFieldUserWrapper(
- isFocused: false,
- isDesktop: widget.isDesktop,
- child: SizedBox(
- height: 40,
- child: TextField(
- style: TextStyle(fontSize: 12),
- // controller: controllers["Fname"],
- // enabled: !isViewMode,
- onChanged: (value) { },
- decoration: InputDecoration(
- labelText: "Class",
- labelStyle: TextStyle(fontSize: 12, color: Colors.grey),
- floatingLabelBehavior: FloatingLabelBehavior.never,
- border: InputBorder.none,
- contentPadding: EdgeInsets.symmetric(vertical: 16),
+ if (widget.isClass!)
+ Row(
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text("Class",
+ style: TextStyle(
+ fontSize: 12,
+ fontWeight: FontWeight.w200,
+ color: Colors.black)),
+ SizedBox(height: 5),
+ CustomTextFieldUserWrapper(
+ isFocused: false,
+ isDesktop: widget.isDesktop,
+ child: SizedBox(
+ height: 40,
+ child: TextField(
+ style: TextStyle(fontSize: 12),
+ // controller: controllers["Fname"],
+ // enabled: !isViewMode,
+ onChanged: (value) {},
+ decoration: InputDecoration(
+ labelText: "Class",
+ labelStyle: TextStyle(
+ fontSize: 12, color: Colors.grey),
+ floatingLabelBehavior:
+ FloatingLabelBehavior.never,
+ border: InputBorder.none,
+ contentPadding:
+ EdgeInsets.symmetric(vertical: 16),
+ ),
),
),
),
- ),
-
- ],
- ),
- ],
- ),
-
+ ],
+ ),
+ ],
+ ),
SizedBox(height: 10),
-
- Row(
- children: [
- Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text("Cost", style: TextStyle(fontSize: 15, fontWeight: FontWeight.w200, color: Colors.black)),
- SizedBox(height: 5),
- CustomTextFieldUserWrapper(
- isFocused: false,
- isDesktop: widget.isDesktop,
- child: SizedBox(
- height: 40,
- child: TextField(
- style: TextStyle(fontSize: 12),
- // controller: controllers["Fname"],
- // enabled: !isViewMode,
- onChanged: (value) { },
- decoration: InputDecoration(
- labelText: "Cost",
- labelStyle: TextStyle(fontSize: 12, color: Colors.grey),
- floatingLabelBehavior: FloatingLabelBehavior.never,
- border: InputBorder.none,
- contentPadding: EdgeInsets.symmetric(vertical: 16),
+ if (widget.isCost!)
+ Row(
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text("Cost",
+ style: TextStyle(
+ fontSize: 12,
+ fontWeight: FontWeight.w200,
+ color: Colors.black)),
+ SizedBox(height: 5),
+ CustomTextFieldUserWrapper(
+ isFocused: false,
+ isDesktop: widget.isDesktop,
+ child: SizedBox(
+ height: 40,
+ child: TextField(
+ style: TextStyle(fontSize: 12),
+ // controller: controllers["Fname"],
+ // enabled: !isViewMode,
+ onChanged: (value) {},
+ decoration: InputDecoration(
+ labelText: "Cost",
+ labelStyle: TextStyle(
+ fontSize: 12, color: Colors.grey),
+ floatingLabelBehavior:
+ FloatingLabelBehavior.never,
+ border: InputBorder.none,
+ contentPadding:
+ EdgeInsets.symmetric(vertical: 16),
+ ),
),
),
),
- ),
-
- ],
- ),
- ],
- ),
-
-
+ ],
+ ),
+ ],
+ ),
],
),
-
-
),
),
],
),
- SizedBox(height: 15),
-
+ if (widget.isCost!) SizedBox(height: 15),
Expanded(
child: Container(
-
decoration: BoxDecoration(
- border: Border.all(
- color: Color(0xFFEBEBF7),
-
- ),
+ border: null,
+ // border: Border.all(
+ // color: Color(0xFFEBEBF7),
+ // ),
borderRadius: BorderRadius.circular(8),
// color: Colors.brown.shade200,
),
+ child: SingleChildScrollView(
+ scrollDirection: Axis.horizontal,
+ child: Container(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+ children: [
+ Expanded(
+ child: Container(
+ width: widget.isDesktop
+ ? MediaQuery.of(context).size.width * 0.62
+ : 600,
+ child: Column(
+ children: [
+ Container(
+ decoration: BoxDecoration(
+ color: Colors.grey.shade50,
+ border: Border.all(
+ color: Colors.grey.shade50,
+ ),
+ borderRadius: BorderRadius.circular(8)),
+ padding: const EdgeInsets.all(10),
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.spaceAround,
+ children: [
+ Text(
+ "Approver Name",
+ style: TextStyle(
+ color: Color(0xFF9E9DBD),
+ fontWeight: FontWeight.bold,
+ fontSize: 12),
+ ),
+ Text(
+ "Notification",
+ style: TextStyle(
+ color: Color(0xFF9E9DBD),
+ fontWeight: FontWeight.bold,
+ fontSize: 12),
+ ),
+ Text(
+ "Select",
+ style: TextStyle(
+ color: Color(0xFF9E9DBD),
+ fontWeight: FontWeight.bold,
+ fontSize: 12),
+ )
+ ],
+ ),
+ ),
+ SizedBox(
+ height: 200,
+ child: SingleChildScrollView(
+ scrollDirection: Axis.vertical,
+ child: Container(
+ // color: Colors.grey,
+ color: Colors.grey.shade50,
+ child: Column(children: [
+ Container(
+ padding: const EdgeInsets.all(10),
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.spaceAround,
+ children: [
+ Text("Approver 1"),
+ CustomTextFieldUserWrapper(
+ isFocused: false,
+ isDesktop: widget.isDesktop,
+ child: SizedBox(
+ height: 40,
+ child: DropdownSearch(
+ selectedItem:
+ selectedFirstApprovarType,
+ // enabled: !isViewMode,
+ popupProps: PopupProps.menu(
+ // showSearchBox: true,
+ fit: FlexFit
+ .loose, // Allows flexible height
+ constraints: BoxConstraints(
+ maxHeight: 250),
+ ),
+ items: [
+ "Approve",
+ "Notification",
+ ],
+ dropdownDecoratorProps:
+ DropDownDecoratorProps(
+ dropdownSearchDecoration:
+ InputDecoration(
+ border: InputBorder.none,
+ contentPadding:
+ EdgeInsets.symmetric(
+ horizontal: 1,
+ ),
+ ),
+ ),
+ dropdownBuilder:
+ (context, selectedItem) =>
+ Align(
+ // Center-align selected item
+ alignment:
+ Alignment.centerLeft,
+ child: Text(
+ selectedItem ?? "Select",
+ style: TextStyle(
+ fontSize: 12,
+ color: Colors
+ .blueAccent),
+ ),
+ ),
+ onChanged:
+ (String? newValue) {
+ setState(() {
+ // Find the country_code based on selected country_name
+ selectedFirstApprovarType =
+ newValue;
- child: Row(
- children: [
- Expanded(
- child: Container(
- child: Text(
- "policy Data 2"
+ // print("selectedUserType - $selectedUserType");
+
+ // if (selectedCountry!.isNotEmpty) {
+ // errorMessages.remove("country_code");
+ // }
+ });
+ },
+ ),
+ ),
+ ),
+ Container(
+ height: 25,
+ width: 25,
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(
+ color: Colors.grey,
+ width: 2),
+ ),
+ child: Icon(
+ Icons.check_circle,
+ size: 20,
+ // color: Colors.green,
+ color: Colors.grey,
+ )),
+ ],
+ ),
+ ),
+ Container(
+ padding: const EdgeInsets.all(10),
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.spaceAround,
+ children: [
+ Text("Approver 2"),
+ CustomTextFieldUserWrapper(
+ isFocused: false,
+ isDesktop: widget.isDesktop,
+ child: SizedBox(
+ height: 40,
+ child: DropdownSearch(
+ selectedItem:
+ selectedFirstApprovarType,
+ // enabled: !isViewMode,
+ popupProps: PopupProps.menu(
+ // showSearchBox: true,
+ fit: FlexFit
+ .loose, // Allows flexible height
+ constraints: BoxConstraints(
+ maxHeight: 250),
+ ),
+ items: [
+ "Approve",
+ "Notification",
+ ],
+ dropdownDecoratorProps:
+ DropDownDecoratorProps(
+ dropdownSearchDecoration:
+ InputDecoration(
+ border: InputBorder.none,
+ contentPadding:
+ EdgeInsets.symmetric(
+ horizontal: 1,
+ ),
+ ),
+ ),
+ dropdownBuilder:
+ (context, selectedItem) =>
+ Align(
+ // Center-align selected item
+ alignment:
+ Alignment.centerLeft,
+ child: Text(
+ selectedItem ?? "Select",
+ style: TextStyle(
+ fontSize: 12,
+ color: Colors
+ .blueAccent),
+ ),
+ ),
+ onChanged:
+ (String? newValue) {
+ setState(() {
+ // Find the country_code based on selected country_name
+ selectedFirstApprovarType =
+ newValue;
+
+ // print("selectedUserType - $selectedUserType");
+
+ // if (selectedCountry!.isNotEmpty) {
+ // errorMessages.remove("country_code");
+ // }
+ });
+ },
+ ),
+ ),
+ ),
+ Container(
+ height: 25,
+ width: 25,
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(
+ color: Colors.green,
+ width: 2),
+ ),
+ child: Icon(
+ Icons.check_circle,
+ size: 20,
+ color: Colors.green,
+ // color: Colors.grey,
+ )),
+ ],
+ ),
+ ),
+ Container(
+ padding: const EdgeInsets.all(10),
+ child: Row(
+ mainAxisAlignment:
+ MainAxisAlignment.spaceAround,
+ children: [
+ Text("Approver 3"),
+ CustomTextFieldUserWrapper(
+ isFocused: false,
+ isDesktop: widget.isDesktop,
+ child: SizedBox(
+ height: 40,
+ child: DropdownSearch(
+ selectedItem:
+ selectedFirstApprovarType,
+ // enabled: !isViewMode,
+ popupProps: PopupProps.menu(
+ // showSearchBox: true,
+ fit: FlexFit
+ .loose, // Allows flexible height
+ constraints: BoxConstraints(
+ maxHeight: 250),
+ ),
+ items: [
+ "Approve",
+ "Notification",
+ ],
+ dropdownDecoratorProps:
+ DropDownDecoratorProps(
+ dropdownSearchDecoration:
+ InputDecoration(
+ border: InputBorder.none,
+ contentPadding:
+ EdgeInsets.symmetric(
+ horizontal: 1,
+ ),
+ ),
+ ),
+ dropdownBuilder:
+ (context, selectedItem) =>
+ Align(
+ // Center-align selected item
+ alignment:
+ Alignment.centerLeft,
+ child: Text(
+ selectedItem ?? "Select",
+ style: TextStyle(
+ fontSize: 12,
+ color: Colors
+ .blueAccent),
+ ),
+ ),
+ onChanged:
+ (String? newValue) {
+ setState(() {
+ // Find the country_code based on selected country_name
+ selectedFirstApprovarType =
+ newValue;
+
+ // print("selectedUserType - $selectedUserType");
+
+ // if (selectedCountry!.isNotEmpty) {
+ // errorMessages.remove("country_code");
+ // }
+ });
+ },
+ ),
+ ),
+ ),
+ Container(
+ height: 25,
+ width: 25,
+ decoration: BoxDecoration(
+ shape: BoxShape.circle,
+ border: Border.all(
+ color: Colors.green,
+ width: 2),
+ ),
+ child: Icon(
+ Icons.check_circle,
+ size: 20,
+ color: Colors.green,
+ // color: Colors.grey,
+ )),
+ ],
+ ),
+ ),
+ ]),
+ ),
+ ),
+ )
+ ],
+ )),
),
- ),
+ ],
),
- ],
+ ),
),
),
),
-
],
);
}
-
-}
\ No newline at end of file
+}
diff --git a/lib/widgets/custom_user_form.dart b/lib/widgets/custom_user_form.dart
index a1977af..ef5ce74 100644
--- a/lib/widgets/custom_user_form.dart
+++ b/lib/widgets/custom_user_form.dart
@@ -21,10 +21,12 @@ class CustomTextFieldUserWrapper extends StatefulWidget {
});
@override
- _CustomTextFieldUserWrapperState createState() => _CustomTextFieldUserWrapperState();
+ _CustomTextFieldUserWrapperState createState() =>
+ _CustomTextFieldUserWrapperState();
}
-class _CustomTextFieldUserWrapperState extends State {
+class _CustomTextFieldUserWrapperState
+ extends State {
@override
Widget build(BuildContext context) {
return Container(
@@ -35,7 +37,7 @@ class _CustomTextFieldUserWrapperState extends State
padding: widget.padding,
decoration: BoxDecoration(
// color: widget.color,
- color: Color(0xFFF7F7FB),
+ // color: Color(0xFFF7F7FB),
borderRadius: BorderRadius.circular(10),
border: Border.all(
color: widget.isFocused ? Color(0xFF78B4FC) : Color(0xFFD6D5E6),
@@ -43,14 +45,13 @@ class _CustomTextFieldUserWrapperState extends State
),
boxShadow: widget.isFocused
? [
- BoxShadow(
- color: Color.fromRGBO(120, 180, 252, 0.3),
- blurRadius: 10,
- spreadRadius: 2,
- offset: Offset(0, 4),
-
- ),
- ]
+ BoxShadow(
+ color: Color.fromRGBO(120, 180, 252, 0.3),
+ blurRadius: 10,
+ spreadRadius: 2,
+ offset: Offset(0, 4),
+ ),
+ ]
: [],
),
child: widget.child,
diff --git a/pubspec.lock b/pubspec.lock
index 669a5a1..530505a 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -13,10 +13,10 @@ packages:
dependency: transitive
description:
name: async
- sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
+ sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
url: "https://pub.dev"
source: hosted
- version: "2.11.0"
+ version: "2.12.0"
bcrypt:
dependency: "direct main"
description:
@@ -29,34 +29,34 @@ packages:
dependency: transitive
description:
name: boolean_selector
- sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
+ sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
characters:
dependency: transitive
description:
name: characters
- sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
+ sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.dev"
source: hosted
- version: "1.3.0"
+ version: "1.4.0"
clock:
dependency: transitive
description:
name: clock
- sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
+ sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.dev"
source: hosted
- version: "1.1.1"
+ version: "1.1.2"
collection:
dependency: transitive
description:
name: collection
- sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
+ sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.dev"
source: hosted
- version: "1.19.0"
+ version: "1.19.1"
cross_file:
dependency: transitive
description:
@@ -101,10 +101,10 @@ packages:
dependency: transitive
description:
name: fake_async
- sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
+ sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
url: "https://pub.dev"
source: hosted
- version: "1.3.1"
+ version: "1.3.2"
ffi:
dependency: transitive
description:
@@ -196,18 +196,18 @@ packages:
dependency: transitive
description:
name: leak_tracker
- sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06"
+ sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
url: "https://pub.dev"
source: hosted
- version: "10.0.7"
+ version: "10.0.8"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
- sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379"
+ sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
url: "https://pub.dev"
source: hosted
- version: "3.0.8"
+ version: "3.0.9"
leak_tracker_testing:
dependency: transitive
description:
@@ -244,10 +244,10 @@ packages:
dependency: transitive
description:
name: matcher
- sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
+ sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.dev"
source: hosted
- version: "0.12.16+1"
+ version: "0.12.17"
material_color_utilities:
dependency: transitive
description:
@@ -260,10 +260,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
+ sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.dev"
source: hosted
- version: "1.15.0"
+ version: "1.16.0"
nested:
dependency: transitive
description:
@@ -276,10 +276,10 @@ packages:
dependency: transitive
description:
name: path
- sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
+ sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.dev"
source: hosted
- version: "1.9.0"
+ version: "1.9.1"
path_provider_linux:
dependency: transitive
description:
@@ -409,50 +409,50 @@ packages:
dependency: transitive
description:
name: source_span
- sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
+ sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
url: "https://pub.dev"
source: hosted
- version: "1.10.0"
+ version: "1.10.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
- sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
+ sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.dev"
source: hosted
- version: "1.12.0"
+ version: "1.12.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
+ sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.dev"
source: hosted
- version: "2.1.2"
+ version: "2.1.4"
string_scanner:
dependency: transitive
description:
name: string_scanner
- sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3"
+ sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.dev"
source: hosted
- version: "1.3.0"
+ version: "1.4.1"
term_glyph:
dependency: transitive
description:
name: term_glyph
- sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
+ sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.dev"
source: hosted
- version: "1.2.1"
+ version: "1.2.2"
test_api:
dependency: transitive
description:
name: test_api
- sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
+ sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
url: "https://pub.dev"
source: hosted
- version: "0.7.3"
+ version: "0.7.4"
typed_data:
dependency: transitive
description:
@@ -473,10 +473,10 @@ packages:
dependency: transitive
description:
name: vm_service
- sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b
+ sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
url: "https://pub.dev"
source: hosted
- version: "14.3.0"
+ version: "14.3.1"
web:
dependency: transitive
description:
@@ -502,5 +502,5 @@ packages:
source: hosted
version: "1.1.0"
sdks:
- dart: ">=3.6.1 <4.0.0"
+ dart: ">=3.7.0-0 <4.0.0"
flutter: ">=3.27.0"