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.
		
		
		
		
		
			
		
			
				
	
	
		
			220 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Dart
		
	
			
		
		
	
	
			220 lines
		
	
	
		
			9.4 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';
 | 
						|
 | 
						|
import 'add_lab_orders.dart';
 | 
						|
import 'add_radiology_order.dart';
 | 
						|
 | 
						|
class AddRadiologyScreen extends StatefulWidget {
 | 
						|
  final ProcedureViewModel model;
 | 
						|
  final PatiantInformtion patient;
 | 
						|
  const AddRadiologyScreen({Key key, this.model, this.patient}) : super(key: key);
 | 
						|
  @override
 | 
						|
  _AddRadiologyScreenState createState() =>
 | 
						|
      _AddRadiologyScreenState(patient: patient, model: model);
 | 
						|
}
 | 
						|
 | 
						|
class _AddRadiologyScreenState extends State<AddRadiologyScreen>
 | 
						|
    with SingleTickerProviderStateMixin {
 | 
						|
  _AddRadiologyScreenState({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 screenSize = MediaQuery.of(context).size;
 | 
						|
    return BaseView<ProcedureViewModel>(
 | 
						|
      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(
 | 
						|
                                    TranslationBase.of(context).addRadiologyOrder,
 | 
						|
                                    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 Radiology',
 | 
						|
                                          ),
 | 
						|
                                        ],
 | 
						|
                                      ),
 | 
						|
                                    ),
 | 
						|
                                  ),
 | 
						|
                                ),
 | 
						|
                                body: Column(
 | 
						|
                                  children: [
 | 
						|
                                    Expanded(
 | 
						|
                                      child: TabBarView(
 | 
						|
                                        physics: BouncingScrollPhysics(),
 | 
						|
                                        controller: _tabController,
 | 
						|
                                        children: [
 | 
						|
                                          AddFavouriteProcedure(
 | 
						|
                                            patient: patient,
 | 
						|
                                            model: model,
 | 
						|
                                            addButtonTitle: TranslationBase.of(context).addRadiologyOrder,
 | 
						|
                                            toolbarTitle: TranslationBase.of(context).addRadiologyOrder,
 | 
						|
                                            categoryID: "03",
 | 
						|
                                          ),
 | 
						|
                                          AddSelectedRadiologyOrder(
 | 
						|
                                            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,
 | 
						|
                    ),
 | 
						|
                  ),
 | 
						|
                ),
 | 
						|
              ),
 | 
						|
          ],
 | 
						|
        ),
 | 
						|
      ),
 | 
						|
    );
 | 
						|
  }
 | 
						|
}
 |