第二百零七回

2023-12-16 01:44
文章标签 零七 第二百

本文主要是介绍第二百零七回,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 概念介绍
  • 2. 思路与方法
    • 2.1 整体思路
    • 2.2 实现方法
  • 3. 示例代码
  • 4. 内容总结

我们在上一章回中介绍了"如何自定义一个可选择的星期组件"相关的内容,本章回中将介绍"自定义TimpePicker".闲话休提,让我们一起Talk Flutter吧。

1. 概念介绍

我们在前面间章回中介绍过TimePicker,如果有看官忘记的话,可以点击这里查看。不过它的样式和内容都是固定的,无法修改,因此我们准备自定义一个TimePicker
组件,该组件只能选择小时和分钟,而且界面比较简洁,详细如下图所示。本章回中将介绍如何实现这种TimePicker组件。037

2. 思路与方法

2.1 整体思路

我们把效果图中的组件拆分成四个小组件:

  • 一个蓝色背景用来显示当前被选择的日期,这个可以通过Containe组件实现;
  • 两个滑轮分别用来选择小时和分钟,这个可以使用三方包组件实现;
  • 一个文本用来显示小时和分钟之间的冒号,这个可以使用Text组件实现;
    我们分别实现这四个组件后还需要把它们组合在一起,这样才是完整的TimePicker组件,因为它们之间有重叠部分,所以使用Stack布局组件把这四个组件组合在一起。

2.2 实现方法

  • 创建Container组件,并且把它修改成圆角和蓝色背景;
  • 创建两个滑轮,我们使用三方包WheelChooser来实现;
  • 在两个滑轮之间添加一个Text组件,用来显示小时与分钟之间的冒号;
  • 把显示小时和分别的滑轮与冒号通过Row组件组合成一行;
  • 使用Stack组件把上面创建的四个组件组合在一起,组合时使用Positioned组件控制它们的位置;

3. 示例代码

Stack(children: [///深色方框用来显示当前被选择的数字Positioned(///这个值是listHeight的值除2后再做一些偏移top: (screenHeight*2/3 - 128)/2 -26,// top: 300,///这个16是左右的边距left: 16,width: screenWidth-16*2,height: 56,child:Container(decoration: BoxDecoration(color: Colors.blue[500],borderRadius: BorderRadius.circular(24),),),),///数字选择:使用两个滑轮实现Positioned(top: 0,///这个值是屏幕宽度减去两个listWidth和sizeBox的宽度再除2left: (screenWidth-80*2-32)/2,child: Row(children: [Container(alignment: Alignment.center,child: WheelChooser(listWidth: 80,listHeight: screenHeight*2/3 - 128,itemSize: 56,startPosition: hour,selectTextStyle: const TextStyle(color: Colors.white),unSelectTextStyle: const TextStyle(color: Colors.black),onValueChanged: (value){hour = value;},datas: List<int>.generate(24, (index) => index),),),const SizedBox(width: 32,child: Text(" : ",style: TextStyle(fontSize: 24,color: Colors.white),),),WheelChooser(listWidth: 80,listHeight: screenHeight*2/3 - 128,itemSize: 56,startPosition: minute,selectTextStyle: const TextStyle(color: Colors.white),unSelectTextStyle: const TextStyle(color: Colors.black),onValueChanged: (value){minute = value;},datas: List<int>.generate(60, (index) => index),),],),),],
),

上面的示例代码完全按照实现方法中的内容来编写,并且在关键位置添加了注释。代码中需要注意的是深色背景的位置,它需要与滑动被选择的内容对齐,不然显示的效果
不太好。此外,时间中小时的选择范围是0-24,分钟的选择范围是0-60.大家可以依据项目的需求来调整。

4. 内容总结

最后,我们对本章回的做一个全面的总结:

  • 官方提供的TimePicker不够简洁,而且不能修改外观和内容,使用不方便;
  • 自定义的TimePicker只包含小时和分钟选择功能;
  • 自定义TimePicker时先把它折成小组件,然后再把小组件组合在一起使用;
    看官们,与"自定义TimePicker组件"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

这篇关于第二百零七回的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/498665

相关文章

第二百零九节 Java格式 - Java数字格式类

Java格式 - Java数字格式类 以下两个类可用于格式化和解析数字: java.text.NumberFormatjava.text.DecimalFormat NumberFormat 类可以格式化一个数字特定地区的预定义格式。 DecimalFormat 类可以格式化数字以特定区域设置的自定义格式。 NumberFormat类的 getXXXInstance()方法返回格式化

第二百零四节 Java正则表达式教程 - Java正则表达式量词

Java正则表达式教程 - Java正则表达式量词 我们可以指定正则表达式中的字符的次数可以匹配字符序列。 为了使用正则表达式表达一个数字或更多的模式,我们可以使用量词。 下表列出了量词及其含义。 量词含义*零次或更多次+一次或多次?一次或根本不{m}正好m次{m,}至少m次{m,n}至少m,但不超过n次 量词必须遵循字符或字符类。 例子 import java.util.reg

一个屌丝程序员的青春(三零七)

富二代对这种相亲过程中用到的费用可能无所谓。贾建这种没金钱、没背景的普通打工族就相亲花费要掂量掂量。 个别富二代演变为教科书式“败家”:1989年,张某含着金钥匙出生,是名副其实的富二代,两年败光8000万,诈骗1.7亿。他从小出手阔绰,花钱如流水。长大后,违背父亲意愿,盲目开公司。为了儿子创业,张父拿出了7000万元家底并把4处房产过户到张某的名下。2016年底开始,张某的生意财务状况恶化,越

一起Talk Android吧(第二百三十七回:Android中的Intent)

各位看官们大家好,上一回中咱们说的是Android中四大组件的例子,这一回咱们说的例子是Intent。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,我们在本章回中将介绍Intent,它也是常用的知识,四大组件中有三大组件都使用它,比如打开Activity,绑定服务,发送广播。我们在代码中都看到过Intent的身影。 Intent可以显式和隐式两种; 显式Intent中包含

一起Talk Android吧(第二百三十六回:Android中的四大组件概述)

各位看官们大家好,上一回中咱们说的是Android中数据存储大结局的例子,这一回咱们说的例子是四大组件。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,我们在这一回中介绍一下Android中的四大组件,它们是 ActivityServiceBroadcastContentProvider。 其实这些内容我们都介绍过,接下来我们一起回顾一下这些知识. Activity是程

一起Talk Android吧(第二百三十四回:Android中的数据存储之ContentProvider二)

各位看官们大家好,上一回中咱们说的是Android中数据存储之ContentProvider的例子,这一回咱们继续说该例子。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,我们在上一回中介绍了如何通过ContentProvider读取联系人模块中的数据,下面是完整的代码,请大家参考: package com.example.talk8.blogappall;import a

一起Talk Android吧(第二百三十二回:Android中的数据存储之ContentProvider概述)

各位看官们大家好,上一回中咱们说的是Android中数据存储之数据库的例子,这一回咱们说的例子是ContentProvider。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,contentProvider也叫内容提供器,它主要用来在应用程序之间共享数据,因此,我们把它当作一种数据存储方式。它通常有两种使用场景: 使用它访问其它应用中的数据;定义它并且提供接口让其它程序来访

一起Talk Android吧(第三百零七回:控件的风格)

各位看官们,大家好,上一回中咱们说的是Android中EditText常用事件的例子,这一回咱们说的例子是控件的风格。闲话休提,言归正转。让我们一起Talk Android吧! 看官们,本章回中我们介绍一下控件的风格,或者叫style,它用来把控件的各种控件属性集合在一起从而形成一定的风格,我们形象地叫其“属性抱团".可以被集合的属性包含:字体大小,颜色,背景等等,总之出现在UI控件中的各种属

第二百零五回

文章目录 1. 概念介绍2. 实现方法2.1 文字信息2.2 红色边框 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现密码输入框"相关的内容,本章回中将介绍如何在在输入框中提示错误.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回介绍的内容还与输入框有关,输入框仍然使用TextField组件实现。我们主要介绍如何在输入框中提示

第二百零四回

文章目录 1. 概念介绍2. 实现方法2.1 使用Steam实现2.2 使用Timer实现 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现每隔一段时间执行某项目任务"相关的内容,本章回中将介绍如何实现倒计时功能.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 倒计时功能估计大家都熟悉,经常用在一些节目开始或者开奖活动中。程序中也会用到倒计时