flutter封装日历选择器(单日选择)

在这里插入图片描述

简单封装:
引入库:table_calendar

import 'package:generated/l10n.dart';
import 'package:jade/utils/JadeColors.dart';
import 'package:jade/utils/Utils.dart';
import 'package:util/easy_loading_util.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:table_calendar/table_calendar.dart';class CustomCalendarSelector extends StatefulWidget{final DateTime dateTime;const CustomCalendarSelector({this.dateTime});State<StatefulWidget> createState() {// TODO: implement createStatereturn _CustomCalendarSelectorState();}
}
class _CustomCalendarSelectorState extends State<CustomCalendarSelector>{CalendarController _calendarController;DateTime _selectDateTime;void initState() {super.initState();_calendarController = CalendarController();_selectDateTime = widget.dateTime;}void dispose() {_calendarController.dispose();super.dispose();}Widget build(BuildContext context) {// TODO: implement build//return Container(height: Utils().screenWidth(context)*1.4,child: Column(children: [Expanded(child: TableCalendar(calendarController: _calendarController,startDay: DateTime.now(),endDay: DateTime(DateTime.now().year+ 1,12,31),calendarStyle: const CalendarStyle(weekendStyle: TextStyle(color: Color(0xffff415b)),todayColor: Colors.black12,selectedColor: Color(0xff44aab0),),headerStyle: HeaderStyle(centerHeaderTitle: true,leftChevronVisible: true,rightChevronVisible: true,formatButtonVisible: false,),initialSelectedDay:widget.dateTime??DateTime(DateTime.now().year,DateTime.now().month,DateTime.now().day+1),onUnavailableDaySelected: (){esLoadingToast('请选择可选日期之内的时间');},onDaySelected: (DateTime dateTime, List events, List holidays){if(dateTime.day == DateTime.now().day){esLoadingToast('请选择当期日期之后的时间');return;}_selectDateTime = dateTime;},onHeaderTapped:(DateTime dateTime){}),),Container(margin: EdgeInsets.only(top: 20.h, left: 80.w),child: Row(children: <Widget>[Image.asset('images/cinema/buy/cinema_buy_icon_q.png',width: 35.w,height: 35.h,),SizedBox(width: 10.w,),Text('从当日起的5个工作日内无法上刊',style: TextStyle(fontSize: 24.sp, color: JadeColors.green_3),)],),),Container(margin: EdgeInsets.only(top: 20.h, left: 80.w, right: 80.w,bottom: 40.w),width: double.infinity,height: 85.h,child: TextButton(style: ButtonStyle(minimumSize: MaterialStateProperty.all(Size(300, 38)),backgroundColor: MaterialStateProperty.all(JadeColors.green_3.withOpacity(1.0))),onPressed: () async {if (DateTime.now().isAfter(_selectDateTime)) {esLoadingToast('请选择当期日期之后的时间');return;}Navigator.pop(context, _selectDateTime);},child: Text(S.current.baocun,style: TextStyle(fontSize: 32.sp, color: Colors.white),)))],),);}
}

引用:

_showScheduledDateBottom() {showModalBottomSheet(context: context,isScrollControlled: true,shape: RoundedRectangleBorder(borderRadius: BorderRadius.only(topLeft: Radius.circular(25.w),topRight: Radius.circular(25.w))),builder: (BuildContext context) {return CustomCalendarSelector(dateTime: time);}).then((value) {if (value == null) return;print('${time.year}-${time.month}-${time.day}');});}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/342265.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低情商高情商的职场较量!有效职场沟通的技巧~

&#x1f538;你是否曾经在工作中遇到沟通障碍&#xff0c;导致项目进展缓慢&#xff0c;情绪受挫&#xff1f; &#x1f538;你是否渴望与同事建立更加紧密的关系&#xff0c;共同实现团队目标&#xff1f; &#x1f538;你是否想要在职场上展现更自信、高效的沟通能力&…

Python限制输入的数范围

在编程过程中&#xff0c;尤其是处理用户输入时&#xff0c;常常需要确保输入的数值在预期的范围内。这对于提高程序的鲁棒性和用户体验至关重要。本文将介绍如何使用Python限制用户输入的数值范围&#xff0c;并提供相应的代码示例和配图以帮助理解。 一、基础方法&#xff1…

5-Django项目--分页与搜索(资产页面)

目录 views/asset_data.py asset_data/asset_data.html 搜索与分页笔记: 搜索 整数搜索 字符串搜索 分页 views/asset_data.py # -*- coding:utf-8 -*- from django.shortcuts import render, redirect, HttpResponse from django.utils.safestring import mark_safe f…

从零开始:如何用Electron将chatgpt-plus.top 打包成EXE文件

文章目录 从零开始&#xff1a;如何用Electron将chatgpt-plus.top 打包成EXE文件准备工作&#xff1a;Node.js和npm国内镜像加速下载初始化你的Electron项目创建你的Electron应用运行你的Electron应用为你的应用设置图标打包成EXE文件结语 从零开始&#xff1a;如何用Electron将…

Linux系统安装APITable详细流程与远程访问本地平台数据分析

文章目录 前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 &#x1f4a1;推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击跳转到网站】 前言 v…

Java中连接Mongodb进行操作

文章目录 1.引入Java驱动依赖2.快速开始2.1 先在monsh连接建立collection2.2 java中快速开始2.3 Insert a Document2.4 Update a Document2.5 Find a Document2.6 Delete a Document 1.引入Java驱动依赖 注意&#xff1a;启动服务的时候需要加ip绑定 需要引入依赖 <dependen…

Echarts柱状图数据太多,自定义长度之后,自适应浏览器缩放

不知道是不是最优解&#xff0c;但是当前解决了我遇到的问题&#xff0c;如有更好的方法&#xff0c;希望看到这篇文章的同学可以不吝指导一番&#xff0c;非常感谢 1、问题描述&#xff1a; 因Ecahrts柱状图数据有时多有时少&#xff0c;所以在数据达到一定程度之后&#xff…

java版CRM客户关系管理系统源码:CRM客户关系管理系统的功能详解

CRM客户关系管理系统是一款功能全面的客户管理工具&#xff0c;旨在帮助企业和销售团队提高客户管理效率&#xff0c;优化销售流程。该系统包含多个模块&#xff0c;覆盖了从线索到回款的全流程管理&#xff0c;为用户提供了一个集成化的客户关系管理平台。 一、待办事项模块&a…

Go语言-切片底层探索 —— 补充篇:切片和底层数组到底是什么关系?

之前的切片探索中&#xff0c;上篇通过一道算法题目&#xff0c;了解到切片的两大特性&#xff1a;一是&#xff1a;切片是引用类型&#xff0c;指向底层数组&#xff0c;修改其底层数组的时候&#xff0c;会影响切片中的值。二是&#xff1a;向切片中添加元素的时候&#xff0…

面试(03)————多线程

目录 一、线程和进程的区别&#xff1f; 二、并行和并发的区别&#xff1f; 三、线程创建的方式有哪些&#xff1f; 3.1、继承Thread类 3.2、实现Runnable接口 3.3、实现Callable接口 3.4、线程池 四、Runnable和Callable的区别&#xff1f; 五、在启动线程的时候&am…

Rocky Linux安装与基础配置

目录 背景与起源 主要特点 目标用户 发展前景 下载 安装 常用配置命令&#xff1a; 更换镜像源 Rocky Linux 是一个开源的、由社区驱动的操作系统&#xff0c;旨在使用 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;源码构建的下游二进制兼容发行版。以下是关于…

Ubuntu22.04之解决:terminal使用alt+1/alt+2/alt+3失效问题(二百三十八)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

2024050401-重学 Java 设计模式《实战代理模式》

重学 Java 设计模式&#xff1a;实战代理模式「模拟mybatis-spring中定义DAO接口&#xff0c;使用代理类方式操作数据库原理实现场景」 一、前言 难以跨越的瓶颈期&#xff0c;把你拿捏滴死死的&#xff01; 编程开发学习过程中遇到的瓶颈期&#xff0c;往往是由于看不到前进…

趣测小程序开发搭建,趣测趣玩小程序是何物?

一、趣测小程序简介 趣测趣玩小程序是一款提供趣味测试和玩乐功能的应用程序。用户可以通过该小程序参与各种有趣的测试&#xff0c;这些测试可能涵盖性格、情感、智力等多个方面&#xff0c;旨在为用户提供轻松愉快的体验。同时&#xff0c;该小程序还可能包含一些游戏元素&a…

Spring boot 随笔 1 DatasourceInitializer

0. 为啥感觉升级了 win11 之后&#xff0c;电脑像是刚买回来的&#xff0c;很快 这篇加餐完全是一个意外&#xff1a;时隔两年半&#xff0c;再看 Springboot-quartz-starter 集成实现的时候&#xff0c;不知道为啥我的h2 在应用启动的时候&#xff0c;不能自动创建quartz相关…

Vue3项目炫酷实战,检测密码强度值

在前端项目开发中&#xff0c;确保用户密码的强度是保护账户安全的重要措施。本文将演示如何使用Vue 3实现一个简单的密码强度检测功能。通过实时反馈&#xff0c;帮助用户创建更安全的密码&#xff0c;从而提升整体系统的安全性。无论您是前端开发新手还是经验丰富的开发者&am…

Vue2指令

本节目标 掌握vue指令 定义常用指令案例-小黑记事本指令修饰符 介绍 指令就是带有v-前缀的标签属性, 不同的指令, 可以实现不同的功能 常用指令 渲染指令 语法: v-html 动态渲染标签作用: 动态设置元素的innerHTML场景: 用来动态解析标签 语法: v-text 动态渲染文本会…

气膜羽毛球馆如何提升运动体验—轻空间

随着人们对健康和运动的关注度日益增加&#xff0c;羽毛球作为一项受欢迎的运动&#xff0c;得到了越来越多人的喜爱。而气膜羽毛球馆&#xff0c;以其独特的优势&#xff0c;正在改变传统羽毛球馆的运动体验。那么&#xff0c;气膜羽毛球馆是如何提升运动体验的呢&#xff1f;…

神经网络 torch.nn---Non-Linear Activations (ReLU)

ReLU — PyTorch 2.3 documentation torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) 非线性变换的目的 非线性变换的目的是为神经网络引入一些非线性特征&#xff0c;使其训练出一些符合各种曲线或各种特征的模型。 换句话来说&#xff0c;如果模型都是直线特征的…

C#之EntityFramework的应用

目录 1&#xff0c;名词概述。 2&#xff0c;实体数据模型EDM介绍。 3&#xff0c;规范函数。 4&#xff0c;查看Linq转换成的SQL语句。 5&#xff0c;数据的增删改查。 5.1&#xff0c;数据查询 5.2&#xff0c;数据插入 5.3&#xff0c;数据更新 5.4&#xff0c;数据…