import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/procedure_View_model.dart'; import 'package:doctor_app_flutter/models/patient/patiant_info_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/screens/procedures/add-favourite-procedure.dart'; import 'package:doctor_app_flutter/screens/procedures/add-procedure-form.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/network_base_view.dart'; import 'package:doctor_app_flutter/widgets/shared/text_fields/text_fields_utils.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class AddProcedureHome extends StatefulWidget { final ProcedureViewModel model; final PatiantInformtion patient; const AddProcedureHome({Key key, this.model, this.patient}) : super(key: key); @override _AddProcedureHomeState createState() => _AddProcedureHomeState(patient: patient, model: model); } class _AddProcedureHomeState extends State with SingleTickerProviderStateMixin { _AddProcedureHomeState({this.patient, this.model}); ProcedureViewModel model; PatiantInformtion patient; TabController _tabController; int _activeTab = 0; @override void initState() { super.initState(); _tabController = TabController(length: 2, vsync: this); _tabController.addListener(_handleTabSelection); } @override void dispose() { super.dispose(); _tabController.dispose(); } _handleTabSelection() { setState(() { _activeTab = _tabController.index; }); } @override Widget build(BuildContext context) { //final routeArgs = ModalRoute.of(context).settings.arguments as Map; //PatiantInformtion patient = routeArgs['patient']; final screenSize = MediaQuery.of(context).size; return BaseView( //onModelReady: (model) => model.getCategory(), builder: (BuildContext context, ProcedureViewModel model, Widget child) => AppScaffold( isShowAppBar: false, body: NetworkBaseView( baseViewModel: model, child: DraggableScrollableSheet( minChildSize: 0.90, initialChildSize: 0.95, maxChildSize: 1.0, builder: (BuildContext context, ScrollController scrollController) { return Container( height: MediaQuery.of(context).size.height * 1.20, child: Padding( padding: EdgeInsets.all(12.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppText( 'Add Procedure', fontWeight: FontWeight.w700, fontSize: 20, ), InkWell( child: Icon( Icons.close, size: 24.0, ), onTap: () { Navigator.pop(context); }, ) ]), SizedBox( height: MediaQuery.of(context).size.height * 0.04, ), Expanded( child: Scaffold( extendBodyBehindAppBar: true, appBar: PreferredSize( preferredSize: Size.fromHeight( MediaQuery.of(context).size.height * 0.070), child: Container( height: MediaQuery.of(context).size.height * 0.070, decoration: BoxDecoration( border: Border( bottom: BorderSide( color: Theme.of(context).dividerColor, width: 0.5), //width: 0.7 ), color: Colors.white), child: Center( child: TabBar( isScrollable: false, controller: _tabController, indicatorColor: Colors.transparent, indicatorWeight: 1.0, indicatorSize: TabBarIndicatorSize.tab, labelColor: Theme.of(context).primaryColor, labelPadding: EdgeInsets.only( top: 0, left: 0, right: 0, bottom: 0), unselectedLabelColor: Colors.grey[800], tabs: [ tabWidget( screenSize, _activeTab == 0, "Favorite Templates", ), tabWidget( screenSize, _activeTab == 1, 'All Procedures', ), ], ), ), ), ), body: Column( children: [ Expanded( child: TabBarView( physics: BouncingScrollPhysics(), controller: _tabController, children: [ AddFavouriteProcedure( patient: patient, model: model, ), AddSelectedProcedure( model: model, patient: patient, ), ], ), ), ], ), ), ), ], ), ), ); }), ), ), ); } Widget tabWidget(Size screenSize, bool isActive, String title, {int counter = -1}) { return Center( child: Container( height: screenSize.height * 0.070, decoration: TextFieldsUtils.containerBorderDecoration( isActive ? Color(0xFFD02127 /*B8382B*/) : Color(0xFFEAEAEA), isActive ? Color(0xFFD02127) : Color(0xFFEAEAEA), borderRadius: 4, borderWidth: 0), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ AppText( title, fontSize: SizeConfig.textMultiplier * 1.5, color: isActive ? Colors.white : Color(0xFF2B353E), fontWeight: FontWeight.w700, ), if (counter != -1) Container( margin: EdgeInsets.all(4), width: 15, height: 15, decoration: BoxDecoration( color: isActive ? Colors.white : Color(0xFFD02127), shape: BoxShape.circle, ), child: Center( child: FittedBox( child: AppText( "$counter", fontSize: SizeConfig.textMultiplier * 1.5, color: !isActive ? Colors.white : Color(0xFFD02127), fontWeight: FontWeight.w700, ), ), ), ), ], ), ), ); } }