You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			219 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			219 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Dart
		
	
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<AddProcedureHome>
 | 
						|
    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<ProcedureViewModel>(
 | 
						|
      //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,
 | 
						|
                                        addButtonTitle: TranslationBase.of(context).addSelectedProcedures,
 | 
						|
                                        toolbarTitle: 'Add Procedure',
 | 
						|
                                      ),
 | 
						|
                                      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,
 | 
						|
                    ),
 | 
						|
                  ),
 | 
						|
                ),
 | 
						|
              ),
 | 
						|
          ],
 | 
						|
        ),
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |