import 'package:cssd/config/routes.dart'; import 'package:cssd/models/package_model.dart'; import 'package:cssd/providers/packages.dart'; import 'package:cssd/widgets/PackageScreens/Details/package_detail_box.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../providers/connectivity.dart'; import '../../widgets/Global/internet_error.dart'; class PackageDetailScreen extends StatefulWidget { @override _PackageDetailScreenState createState() => _PackageDetailScreenState(); } class _PackageDetailScreenState extends State { bool isInit = true; bool isEmpty = false; PackageDetailObject? datas; @override void didChangeDependencies() async { if (isInit) { var _id = ModalRoute.of(context)!.settings.arguments; await Provider.of(context, listen: false) .showPackageResult(_id.toString()) .then( (result) { setState( () { datas = result; isInit = false; if (result.id == 'null') isEmpty = true; else isEmpty = false; }, ); }, ); } super.didChangeDependencies(); } @override Widget build(BuildContext context) { final _media = MediaQuery.of(context); final double _devicewidth = _media.size.width; final double _deviceBlockSize = _devicewidth / 100; return SafeArea( child: Scaffold( appBar: AppBar( titleSpacing: -10, title: Text( 'Packages', style: TextStyle( color: Colors.white, ), ), backgroundColor: Colors.black, leading: IconButton( icon: Icon( Icons.keyboard_arrow_left, color: Colors.white, size: 35, ), onPressed: () => Navigator.of(context).pop(), ), ), body: Consumer( builder: (ct, connection, _) { return connection.conStatus != 'offline' ? isInit ? Center( child: CircularProgressIndicator( color: Colors.black, ), ) : isEmpty ? Center( child: Text('This Package does\'nt exists!'), ) : PackageDetailsDataBox( datas: datas!, deviceBlockSize: _deviceBlockSize, goToAddLabelPage: () { Navigator.pushNamed( context, Routes.labelAddScreen, arguments: { "id": datas!.id, "name": datas!.name }, ); }, ) : ConnectionErrorBox(); }, ), ), ); } }