contact ui, create ticket
This commit is contained in:
@@ -6,8 +6,7 @@ import 'package:flutter_svg/svg.dart';
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:traderscircuit/Utils/Common/MainController.dart';
|
||||
|
||||
GlassmorphicContainer bottomnavigationbar(
|
||||
MainController _mainController) {
|
||||
GlassmorphicContainer bottomnavigationbar(MainController _mainController) {
|
||||
return GlassmorphicContainer(
|
||||
width: double.infinity,
|
||||
height: 83.h,
|
||||
@@ -76,9 +75,9 @@ GlassmorphicContainer bottomnavigationbar(
|
||||
shape: BoxShape.circle,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.grey.withOpacity(0.4),
|
||||
color: Colors.grey.withOpacity(0.2),
|
||||
spreadRadius: 15,
|
||||
blurRadius: 10,
|
||||
blurRadius: 5,
|
||||
offset: Offset(0, 10),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -198,6 +198,160 @@ class _CustomTextFormField1State extends State<CustomTextFormField1> {
|
||||
obscureText = widget.isInputPassword;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GlassmorphicContainer(
|
||||
width: double.infinity,
|
||||
height: 50,
|
||||
borderRadius: 8,
|
||||
blur: 10,
|
||||
alignment: Alignment.bottomCenter,
|
||||
border: 0.8,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
const Color(0xFFffffff).withOpacity(0.1),
|
||||
const Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
],
|
||||
stops: [
|
||||
0.1,
|
||||
1,
|
||||
]),
|
||||
borderGradient: const LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Color(0xff3A3A3A),
|
||||
Color(0xFF3A3A3A),
|
||||
],
|
||||
),
|
||||
child: TextFormField(
|
||||
cursorColor: Colors.red,
|
||||
initialValue: widget.value,
|
||||
readOnly: widget.readonly,
|
||||
onTap: widget.onTap,
|
||||
enabled: widget.enabled,
|
||||
enableInteractiveSelection: false,
|
||||
maxLines: widget.maxlines,
|
||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||
obscureText: obscureText,
|
||||
controller: widget.textEditingController,
|
||||
|
||||
decoration: InputDecoration(
|
||||
hintText: widget.hintText,
|
||||
prefixIconColor: widget.prefixIconColor,
|
||||
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 16.sp,
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: 'manrope'),
|
||||
|
||||
// ignore: prefer_null_aware_operators
|
||||
prefixIcon: widget.leadingIcon == null ? null : widget.leadingIcon!,
|
||||
suffixIcon: widget.isInputPassword
|
||||
? GestureDetector(
|
||||
onTap: () => setState(() => obscureText = !obscureText),
|
||||
child: obscureText
|
||||
? const Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 20.0),
|
||||
child: Icon(Icons.remove_red_eye),
|
||||
),
|
||||
],
|
||||
)
|
||||
: const Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(right: 20.0),
|
||||
child: Icon(
|
||||
Icons.remove_red_eye_outlined,
|
||||
color: Color(0xFF959595),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
: widget.suffixIcon == null
|
||||
? null
|
||||
: widget.suffixIcon!,
|
||||
border: InputBorder.none,
|
||||
contentPadding:
|
||||
const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
|
||||
),
|
||||
style: const TextStyle(color: Colors.white),
|
||||
keyboardType: widget.texttype,
|
||||
// validator: widget.validator ??
|
||||
// (value) {
|
||||
// if (value == null || value.isEmpty) {
|
||||
// return "Empty value";
|
||||
// }
|
||||
// return null;
|
||||
// },
|
||||
inputFormatters: widget.inputFormatters,
|
||||
onChanged: (value) {
|
||||
widget.onInput?.call(value);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class CustomTextFormField3 extends StatefulWidget {
|
||||
const CustomTextFormField3({
|
||||
Key? key,
|
||||
this.validator,
|
||||
this.textEditingController,
|
||||
this.hintText,
|
||||
this.leadingIcon,
|
||||
this.prefixIconColor = const Color(0xFF737373),
|
||||
this.isInputPassword = false,
|
||||
this.validatorText,
|
||||
this.value,
|
||||
this.readonly = false,
|
||||
this.enabled = true,
|
||||
this.maxlines = 1,
|
||||
this.texttype,
|
||||
this.inputFormatters,
|
||||
this.onInput,
|
||||
this.onTap,
|
||||
this.suffixIcon,
|
||||
}) : super(key: key);
|
||||
|
||||
final dynamic validator;
|
||||
final TextEditingController? textEditingController;
|
||||
final String? hintText;
|
||||
final Widget? leadingIcon;
|
||||
final Color prefixIconColor;
|
||||
final bool isInputPassword;
|
||||
final String? validatorText;
|
||||
final String? value;
|
||||
final bool readonly;
|
||||
final bool enabled;
|
||||
final int maxlines;
|
||||
final TextInputType? texttype;
|
||||
final dynamic inputFormatters;
|
||||
final Function(String)? onInput;
|
||||
final VoidCallback? onTap;
|
||||
final Widget? suffixIcon;
|
||||
|
||||
@override
|
||||
State<CustomTextFormField3> createState() => _CustomTextFormField3State();
|
||||
}
|
||||
|
||||
class _CustomTextFormField3State extends State<CustomTextFormField3> {
|
||||
late bool obscureText;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
obscureText = widget.isInputPassword;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return TextFormField(
|
||||
@@ -211,23 +365,21 @@ class _CustomTextFormField1State extends State<CustomTextFormField1> {
|
||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||
obscureText: obscureText,
|
||||
controller: widget.textEditingController,
|
||||
|
||||
decoration: InputDecoration(
|
||||
contentPadding: const EdgeInsets.symmetric(
|
||||
vertical: 15,
|
||||
horizontal: 14,
|
||||
),
|
||||
hintText: widget.hintText,
|
||||
prefixIconColor: widget.prefixIconColor,
|
||||
border: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
borderSide: const BorderSide(color: Color(0XFF3A3A3A), width: 1),
|
||||
borderSide: BorderSide(color: const Color(0xFF3A3A3A), width: 1),
|
||||
),
|
||||
enabledBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
borderSide: const BorderSide(color: Color(0XFF3A3A3A), width: 1),
|
||||
borderSide: BorderSide(color: const Color(0xFF3A3A3A), width: 1),
|
||||
),
|
||||
focusedBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
borderSide: const BorderSide(color: Color(0XFF3A3A3A), width: 1),
|
||||
borderSide: BorderSide(color: const Color(0xFF3A3A3A), width: 1),
|
||||
),
|
||||
errorBorder: OutlineInputBorder(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
@@ -237,9 +389,13 @@ class _CustomTextFormField1State extends State<CustomTextFormField1> {
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
borderSide: const BorderSide(color: Colors.red, width: 1),
|
||||
),
|
||||
|
||||
hintStyle: TextStyle(
|
||||
fontSize: 16.sp, fontFamily: "manrope", color: Colors.white),
|
||||
prefixIconColor: widget.prefixIconColor,
|
||||
fontSize: 16.sp,
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: 'manrope'),
|
||||
|
||||
// ignore: prefer_null_aware_operators
|
||||
prefixIcon: widget.leadingIcon == null ? null : widget.leadingIcon!,
|
||||
suffixIcon: widget.isInputPassword
|
||||
@@ -271,16 +427,18 @@ class _CustomTextFormField1State extends State<CustomTextFormField1> {
|
||||
: widget.suffixIcon == null
|
||||
? null
|
||||
: widget.suffixIcon!,
|
||||
contentPadding:
|
||||
const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
|
||||
),
|
||||
style: const TextStyle(color: Colors.white),
|
||||
keyboardType: widget.texttype,
|
||||
validator: widget.validator ??
|
||||
(value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return "Empty value";
|
||||
}
|
||||
return null;
|
||||
},
|
||||
// validator: widget.validator ??
|
||||
// (value) {
|
||||
// if (value == null || value.isEmpty) {
|
||||
// return "Empty value";
|
||||
// }
|
||||
// return null;
|
||||
// },
|
||||
inputFormatters: widget.inputFormatters,
|
||||
onChanged: (value) {
|
||||
widget.onInput?.call(value);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:traderscircuit/view/MainScreen/HomeScreen.dart';
|
||||
import 'package:traderscircuit/view/MainScreen/Portfolio/Holdings.dart';
|
||||
import 'package:traderscircuit/view/MainScreen/Portfolio/PortfolioEmpty.dart';
|
||||
import 'package:traderscircuit/view/MainScreen/ShortTrade.dart';
|
||||
|
||||
class MainController extends GetxController {
|
||||
@@ -8,7 +10,7 @@ class MainController extends GetxController {
|
||||
var currentTab = [
|
||||
const HomeScreen(),
|
||||
const ShortTrade(),
|
||||
const HomeScreen(),
|
||||
const Holdings(),
|
||||
].obs;
|
||||
|
||||
void updateTab(int index) {
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:glassmorphism/glassmorphism.dart';
|
||||
import 'package:traderscircuit/Utils/Common/sized_box.dart';
|
||||
import 'package:traderscircuit/Utils/text.dart';
|
||||
|
||||
Widget CommonBtn({void Function()? onTap, required String text}) {
|
||||
return InkWell(
|
||||
@@ -24,6 +27,83 @@ Widget CommonBtn({void Function()? onTap, required String text}) {
|
||||
));
|
||||
}
|
||||
|
||||
Widget CommonYesNoBtn({
|
||||
void Function()? yesonTap,
|
||||
void Function()? noonTap,
|
||||
}) {
|
||||
return Row(
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: yesonTap,
|
||||
child: GlassmorphicContainer(
|
||||
width: 170.w,
|
||||
height: 50.h,
|
||||
borderRadius: 8,
|
||||
blur: 10,
|
||||
alignment: Alignment.center,
|
||||
border: 0.9,
|
||||
linearGradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Colors.white.withOpacity(0.1),
|
||||
Color(0xFFFFFFFF).withOpacity(0.05),
|
||||
],
|
||||
stops: [
|
||||
0.1,
|
||||
1,
|
||||
],
|
||||
),
|
||||
borderGradient: LinearGradient(
|
||||
begin: Alignment.topLeft,
|
||||
end: Alignment.bottomRight,
|
||||
colors: [
|
||||
Color.fromRGBO(70, 5, 1, 0.8),
|
||||
Color.fromRGBO(102, 102, 102, 0.8),
|
||||
],
|
||||
),
|
||||
child: Center(
|
||||
child: text18W500('Yes'),
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxWidth(10.w),
|
||||
GestureDetector(
|
||||
onTap: noonTap,
|
||||
child: Container(
|
||||
height: 50.h,
|
||||
width: 170.w,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(8.r),
|
||||
border: Border.all(color: Color(0xFF9A0000), width: 1.w),
|
||||
color: Color(0xFF6C0000)),
|
||||
child: Center(child: text18W500('No')),
|
||||
),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
// InkWell(
|
||||
// onTap: onTap,
|
||||
// child: Container(
|
||||
// width: double.infinity,
|
||||
// height: 50.h,
|
||||
// decoration: BoxDecoration(
|
||||
// color: Color(0xff9A0000), borderRadius: BorderRadius.circular(5)),
|
||||
// child: Center(
|
||||
// child: Text(
|
||||
// text,
|
||||
// textAlign: TextAlign.center,
|
||||
// style: TextStyle(
|
||||
// color: Colors.white,
|
||||
// fontSize: 20.sp,
|
||||
// fontFamily: 'Cambria',
|
||||
// fontWeight: FontWeight.w400,
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ));
|
||||
Widget kycBtn({
|
||||
void Function()? onTap,
|
||||
required String text,
|
||||
|
||||
@@ -12,6 +12,18 @@ Widget text20W400(String text) {
|
||||
);
|
||||
}
|
||||
|
||||
Widget text20W400_center(String text) {
|
||||
return Text(
|
||||
text,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 20.sp,
|
||||
color: Colors.white,
|
||||
fontWeight: FontWeight.w400,
|
||||
fontFamily: 'manrope'),
|
||||
);
|
||||
}
|
||||
|
||||
Widget text18W800(String text) {
|
||||
return Text(
|
||||
text,
|
||||
@@ -294,6 +306,8 @@ Widget text14W400_979797(String text) {
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Widget text12W400_979797(String text) {
|
||||
return Text(
|
||||
text,
|
||||
|
||||
Reference in New Issue
Block a user