iq/lib/app/modules/selectISP/views/select_isp_view.dart

223 lines
8.9 KiB
Dart
Raw Permalink Normal View History

2023-09-11 12:11:35 +00:00
import 'package:double_back_to_close_app/double_back_to_close_app.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:IQ/app/global/global_snackbar.dart';
import 'package:IQ/app/global/static_informs.dart';
import 'package:IQ/app/global/text_widget.dart';
import 'package:IQ/app/modules/selectISP/models/isp_model.dart';
import 'package:IQ/main.dart';
import 'package:IQ/app/modules/selectISP/controllers/select_isp_controller.dart';
List<dynamic>? storedISPs = storage.read('listOfIsps');
int? initialItem;
List<ISPsData>? listOfIsps = [];
List<ISPsData>? serversList = [];
List<ISPsData>? saved = storedISPs != null
? storedISPs?.map((e) => ISPsData.fromJson(e)).toList()
: [];
bool? isCustomIsp = false;
bool? showNext = false;
String? url;
String? liveDataUrl;
ISPsData? selectedISP;
// ignore: must_be_immutable
class SelectISPView extends GetView<SelectISPController> {
const SelectISPView({Key? key}) : super(key: key);
// var selectedISPController = Get.find<SelectISPController>();
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: brandColor,
appBar: AppBar(
backgroundColor: brandColor,
elevation: 0,
leading: Container(),
),
body: DoubleBackToCloseApp(
snackBar: snackBar,
child: Stack(
alignment: Alignment.topCenter,
children: [
SvgPicture.asset(
'assets/2/icon.svg',
height: 80,
width: 80,
),
SizedBox(
width: widthSize(context),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 190),
TextWidget(
color: const Color(0xffC4C4C4),
fontSize: 22,
text: "select_isp_title".tr,
),
const SizedBox(height: 50),
GetBuilder(
init: SelectISPController(),
builder: (SelectISPController c) {
return c.futureBuilderWidget(
widget: Stack(
alignment: Alignment.center,
children: [
Container(
height: 200,
width: Get.width,
margin: const EdgeInsets.symmetric(
horizontal: 20,
),
child: ListWheelScrollView.useDelegate(
physics: const FixedExtentScrollPhysics(),
childDelegate: ListWheelChildBuilderDelegate(
builder: (context, index) {
return Center(
child: TextWidget(
text: c.serversList?[index].name ?? '',
color: Colors.white,
fontWeight: FontWeight.w400,
fontSize: 20,
),
);
},
childCount: c.serversList?.length ?? 0,
),
itemExtent: 45,
diameterRatio: 9,
controller: FixedExtentScrollController(
initialItem: initialItem ?? 0,
),
useMagnifier: true,
magnification: 1.7,
clipBehavior: Clip.antiAliasWithSaveLayer,
onSelectedItemChanged: c.onSelectedItemChanged,
overAndUnderCenterOpacity: 0.7,
),
),
Column(
children: [
Container(
margin: const EdgeInsets.symmetric(
horizontal: 120),
child: const Divider(
color: Colors.white,
thickness: 2,
),
),
const SizedBox(height: 30),
Container(
margin: const EdgeInsets.symmetric(
horizontal: 120),
child: const Divider(
color: Colors.white,
thickness: 2,
),
),
],
),
],
),
);
},
),
const Spacer(),
GetBuilder(
builder: (SelectISPController c) {
return !showNext!
? Container()
: Container(
margin: const EdgeInsets.only(bottom: 30),
child: Align(
alignment: Alignment.bottomCenter,
child: Container(
decoration: const BoxDecoration(
border: Border(
bottom: BorderSide(
color: Colors.white,
width: 1,
),
),
),
child: TextButton(
onPressed: () => c.onIspSelected(),
child: TextWidget(
color: Colors.white,
fontSize: 26,
text: 'next_button'.tr,
fontWeight: FontWeight.normal,
),
),
),
),
);
},
),
],
),
),
],
),
),
floatingActionButton: GetBuilder(
builder: (SelectISPController c) {
return !showNext!
? Container()
: Container(
margin: const EdgeInsets.only(
right: 18,
left: 18,
bottom: 8,
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GetBuilder(
builder: (SelectISPController c) {
return isCustomIsp!
? Container(
margin: const EdgeInsets.only(
left: 18,
),
child: FloatingActionButton(
heroTag: "btn1",
onPressed: c.removeISP,
backgroundColor: Colors.white,
child: SvgPicture.asset(
'assets/remove.svg',
height: 30,
width: 30,
color: brandColor,
),
),
)
: Container();
},
),
FloatingActionButton(
heroTag: "btn2",
onPressed: () {
// Get.offNamed(Routes.ADD_ADDRESS);
},
backgroundColor: Colors.white,
child: Icon(
Icons.add,
size: 50,
color: brandColor,
),
),
],
),
);
},
),
);
}
}