123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 |
- import 'package:fis_jsonrpc/rpc.dart';
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- import 'package:vitalapp/pages/controllers/crowd_labels.dart';
- class CrowdSelectLabelView extends StatefulWidget {
- final CrowdLabelsController controller;
- const CrowdSelectLabelView({super.key, required this.controller});
- @override
- State<StatefulWidget> createState() => _CrowdSelectLabelState();
- }
- class _CrowdSelectLabelState extends State<CrowdSelectLabelView> {
- late CrowdLabelsController controller;
- @override
- void initState() {
- super.initState();
- controller = widget.controller;
- }
- @override
- Widget build(BuildContext context) {
- final state = controller.state;
- return Obx(() => Wrap(
- spacing: 16,
- runSpacing: 12,
- children: [
- buildItem(LabelDTO(code: "0", labelName: "全选"), context),
- ...state.allLabels
- .map((LabelDTO e) => buildItem(e, context))
- .toList(),
- ],
- ));
- }
- Widget buildItem(LabelDTO dto, BuildContext context) {
- return InkWell(
- child: VCheckBoxButton(
- key: GlobalKey(),
- label: dto.labelName ?? '',
- isChecked: controller.state.isAllSelect
- ? controller.state.isAllSelect
- : controller.state.selectedFilterCodes.contains(dto.code),
- isAllChecked: controller.state.isAllSelect,
- onChanged: (value) {
- if (controller.state.isAllSelect && dto.code != "0") {
- return;
- }
- controller.onItemCheckFilterChanged(dto.code!);
- if (controller.state.selectedFilterCodes.length == 7) {
- controller.state.isAllSelect = true;
- }
- setState(() {});
- },
- ),
- );
- }
- }
- /// 按钮式多选框
- class VCheckBoxButton extends StatefulWidget {
- /// 文本
- final String label;
- /// 是否默认选中
- final bool? isChecked;
- /// 是否默认选中
- final bool? isAllChecked;
- /// 选中状态变更
- final ValueChanged<bool>? onChanged;
- const VCheckBoxButton({
- super.key,
- required this.label,
- this.isChecked,
- this.onChanged,
- this.isAllChecked,
- });
- @override
- State<StatefulWidget> createState() => _VCheckBoxState();
- }
- class _VCheckBoxState extends State<VCheckBoxButton> {
- bool _isChecked = false;
- bool _isAllChecked = false;
- @override
- void initState() {
- if (widget.isChecked != null) {
- _isChecked = widget.isChecked!;
- }
- if (widget.isAllChecked != null) {
- _isAllChecked = widget.isAllChecked!;
- }
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- const height = 40.0;
- const borderRadius = height / 3;
- final primaryColor = Theme.of(context).primaryColor;
- return Material(
- child: Ink(
- child: InkWell(
- borderRadius: BorderRadius.circular(borderRadius),
- onTap: () {
- setState(() {
- _isChecked = !_isChecked;
- widget.onChanged?.call(_isChecked);
- });
- },
- child: IntrinsicWidth(
- child: Container(
- padding: const EdgeInsets.only(left: 10, right: 10),
- constraints: const BoxConstraints(minWidth: 150),
- alignment: Alignment.center,
- height: height,
- decoration: BoxDecoration(
- color: (_isAllChecked && widget.label != "全选")
- ? Colors.grey.shade400
- : _isChecked
- ? primaryColor
- : Colors.white,
- borderRadius: BorderRadius.circular(borderRadius),
- border: ((_isAllChecked && widget.label != "全选") || _isChecked)
- ? null
- : Border.all(color: primaryColor),
- ),
- child: Row(
- mainAxisSize: MainAxisSize.min,
- crossAxisAlignment: CrossAxisAlignment.center,
- children: [
- Text(
- widget.label,
- style: TextStyle(
- color: (_isAllChecked && widget.label != "全选")
- ? Colors.white
- : _isChecked
- ? Colors.white
- : primaryColor,
- fontSize: 16,
- ),
- ),
- ],
- ),
- ),
- ),
- ),
- ),
- );
- }
- }
- class ContractStateSelectLabelView extends StatefulWidget {
- final List<ContractStateEnum> ContractStateEnums;
- final Function selectRaidoChange;
- final ContractStateEnum? selectContractState;
- const ContractStateSelectLabelView(
- {super.key,
- required this.ContractStateEnums,
- required this.selectRaidoChange,
- this.selectContractState});
- @override
- State<StatefulWidget> createState() => _ContractStateSelectLabelState();
- }
- class _ContractStateSelectLabelState
- extends State<ContractStateSelectLabelView> {
- late List<ContractStateEnum> ContractStateEnums;
- String selectContractState = "0";
- final Map<String, String> ContractStateMap = {
- "Unsigned": "未签约",
- "Cancelled": "已解约",
- "Expired": "已过期",
- "Signed": "已签约",
- "Voided": "已作废",
- "Refused": "已拒签",
- };
- @override
- void initState() {
- super.initState();
- ContractStateEnums = widget.ContractStateEnums;
- if (widget.selectContractState != null) {
- selectContractState = widget.selectContractState!.name;
- } else {
- selectContractState = "0";
- }
- }
- @override
- Widget build(BuildContext context) {
- return Wrap(
- spacing: 16,
- runSpacing: 12,
- children: [
- buildItem(LabelDTO(code: "0", labelName: "全选"), context),
- ...ContractStateEnums.map((ContractStateEnum e) => buildItem(
- LabelDTO(code: e.name, labelName: ContractStateMap[e.name]),
- context)).toList(),
- ],
- );
- }
- Widget buildItem(LabelDTO dto, BuildContext context) {
- return InkWell(
- child: VCheckBoxButton(
- key: GlobalKey(),
- label: dto.labelName ?? '',
- isChecked: selectContractState == dto.code,
- // isAllChecked: selectContractState == "0",
- onChanged: (value) {
- // if (selectContractState == "0" && dto.code != "0") {
- // return;
- // }
- selectContractState = dto.code ?? '0';
- widget.selectRaidoChange(dto.code);
- setState(() {});
- },
- ),
- );
- }
- }
- class ScopeEnquiryResidents extends StatefulWidget {
- final Function selectRaidoChange;
- final int? selectIndex;
- const ScopeEnquiryResidents({
- super.key,
- required this.selectRaidoChange,
- this.selectIndex,
- });
- @override
- State<StatefulWidget> createState() => _ScopeEnquiryResidentsState();
- }
- class _ScopeEnquiryResidentsState extends State<ScopeEnquiryResidents> {
- int selectIndex = 0;
- @override
- void initState() {
- super.initState();
- if (widget.selectIndex != null) {
- selectIndex = widget.selectIndex!;
- } else {
- selectIndex = 0;
- }
- }
- @override
- Widget build(BuildContext context) {
- return Wrap(
- spacing: 16,
- runSpacing: 12,
- children: [
- buildItem(LabelDTO(code: "0", labelName: "仅当前医生建档"), context),
- buildItem(LabelDTO(code: "1", labelName: "当前团队所有居民"), context),
- ],
- );
- }
- Widget buildItem(LabelDTO dto, BuildContext context) {
- return InkWell(
- child: VCheckBoxButton(
- key: GlobalKey(),
- label: dto.labelName ?? '',
- isChecked: selectIndex.toString() == dto.code,
- // isAllChecked: selectContractState == "0",
- onChanged: (value) {
- // if (selectContractState == "0" && dto.code != "0") {
- // return;
- // }
- selectIndex = int.parse(dto.code!);
- widget.selectRaidoChange(selectIndex);
- setState(() {});
- },
- ),
- );
- }
- }
|