zoukankan      html  css  js  c++  java
  • InkWell容器 和 GestureDetector 手势 和 官方自带日期组件 和第三方 日期格式转换组件

    GestureDetector手势

    手势
    在flutter中,手势表示可以从多个单独的指针事件(甚至可能是多个单独的指针)识别的语义动作(例如点击,拖拽和缩放)。 完整的一个手势可以分发多个事件,对应于手势的生命周期(例如,拖拽开始,拖拽更新和拖拽结束):

    单击

    onTapDown 指针已经在特定位置与屏幕接触
    onTapUp 指针停止在特定位置与屏幕接触
    onTap 单击事件触发
    onTapCancel 先前指针触发的onTapDown不会在触发单击事件
    双击

    onDoubleTap 用户快速连续两次在同一位置轻敲屏幕.
    长按

    onLongPress 指针在相同位置长时间保持与屏幕接触
    垂直拖拽

    onVerticalDragStart 指针已经与屏幕接触并可能开始垂直移动
    onVerticalDragUpdate 指针与屏幕接触并已沿垂直方向移动.
    onVerticalDragEnd 先前与屏幕接触并垂直移动的指针不再与屏幕接触,并且在停止接触屏幕时以特定速度移动
    水平拖拽

    onHorizontalDragStart 指针已经接触到屏幕并可能开始水平移动
    onHorizontalDragUpdate 指针与屏幕接触并已沿水平方向移动
    onHorizontalDragEnd 先前与屏幕接触并水平移动的指针不再与屏幕接触,并在停止接触屏幕时以特定速度移动

    带点击事件的容器
    InkWell(
      child: Text('时间'),
    onTap: _showTimePicker,
    ),
     
    Flutter 日期和时间戳
     
    日期转化成时间戳:
    var now = new DateTime.now();
    print(now.millisecondsSinceEpoch);//单位毫秒,13 位时间戳
    时间戳转化成日期:
    var now = new DateTime.now();
    var a=now.millisecondsSinceEpoch; //时间戳
    print(DateTime.fromMillisecondsSinceEpoch(a));
     
    自带时间格式转换
    formatDate(DateTime ,[yyyy,'-',mm,'-',dd]);
     
    自定义时间
    var time = DateTime(DateTime.now().year, DateTime.now().month, 1, DateTime.now().hour, DateTime.now().minute, DateTime.now().second);
    获取一个月多少天
    var time = DateTime(DateTime.now().year, DateTime.now().month + 1 , 0).day;
    var time = DateTime(DateTime.now().year, DateTime.now().month + 1 , 0);
    
    

    1.日期转换成时间戳

    var now=new DateTime.now();

    print(now.millisecondsSinceEpoch); //单位毫秒,13位时间戳

    2.时间戳转换成日期

    var now=new DateTime.now();

    var a=now.millisecondsSinceEpoch; // 时间戳

    print(DateTime.fromMillisecondsSinceEpoch(a));

    3.创建指定时间 

    DateTime assignDay = new DateTime(2020,10,10);

    print(assignDay);   // 2020-10-10 00:00:00.000

    4.计算时间跨度

    // 例如计算1天14小时45分的跨度

    Duration timeRemaining = new Duration(days:1, hours:14, minutes:45);

    print(timeRemaining);  // 38:45:00.000000

    5.字符串转DateTime

    DateTime.parse('2019-11-08') 或者 DateTime.parse('2019-11-08 12:30:05')

    6.在之前——时间比较

    var today = DateTime.now();

    var date = DateTime.parse("2019-06-20 15:32:41");

    today.isBefore(date);

    7.在之后——时间比较

    var today = DateTime.now();

    var date = DateTime.parse("2019-06-20 15:32:41");

    today.isAfter(date);

    8.相等——时间比较

    var today = DateTime.now();

    var date = DateTime.parse("2019-06-20 15:32:41");

    today.isAtSameMomentAs(date);

    9.时间增加

    var today = DateTime.now();   // 2019-11-08 02:54:53.218443

    var fiftyDaysFromNow = today.add(new Duration(days: 5));

    print('today加5天:$fiftyDaysFromNow');  // today加5天:2019-11-13 02:54:53.218443

    10.时间减少

    var today = DateTime.now();   // 2019-11-08 02:54:53.218443

    var fiftyDaysAgo = today.add(new Duration(days: 5));

    print('today加5天:$fiftyDaysAgo ');  // today减5天:2019-11-03 02:54:53.218443

    11.时间差(小时数)

    var day1 = new DateTime(2019, 6, 20, 17, 30, 20);

    var day2 = new DateTime(2019, 7, 21, 0,  0, 0);

    print('比较两个时间 差 小时数:${day1.difference(day2)}');  //  比较两个时间 差 小时数:-726:29:40.000000

    12.获取年、月、日、星期、时、分、秒、毫秒、微妙

    year、month、day、weekday、hour、minute、second、millisecond、microsecond

    var today = DateTime.now();

    print(today.year);

    13.获取本地时区简码

    DateTime today = DateTime.now();

    print('本地时区简码:${today.timeZoneName}');  //  本地时区简码:GMT

    14.返回UTC与本地时差(小时数)

    DateTime today = DateTime.now();

    print('返回UTC与本地时差 小时数:${today.timeZoneOffset}');

     
    常用属性

    DateTime time = DateTime.now();

    • time.day,今天多少号
    • time.month 当前月份
    • time.year
    • time.hour
    • time.minute
    • time.second
    • time.millisecond
    • time.millisecondsSinceEpoch
    常用方法

    DateTime last = DateTime.now();

    • print(time.difference(last)>Duration(seconds: 1));// 比较二者差异
    • time.add(Duration(seconds: 1));
    • print(time.compareTo(last));//大于返回1
    • print(time.isAfter(last));//是否在之后
    • print(time.isBefore(last));//是否在之前
    • print(time.isAtSameMomentAs(last));//是否在同一时刻
    Flutter 第三方库 date_format 的使
    文档:https://pub.dev/packages/date_format
     
    在main.dart入口文件 dependencies 添加 date_format: ^1.0.8 然后再在要使用的地方引入 import 'package:date_format/date_format.dart';
     
    dependencies:
      flutter:
        sdk: flutter
     
      # The following adds the Cupertino Icons font to your application.
      # Use with the CupertinoIcons class for iOS style icons.
      cupertino_icons: ^0.1.2
      date_format: ^1.0.8
     
    //案例代码
    import 'package:flutter/material.dart';
    import 'package:date_format/date_format.dart';

    class DatePage extends StatefulWidget{
    DatePage({Key key});
    _DatePage createState() => _DatePage();
    }

    class _DatePage extends State {
    var date = new DateTime.now();
    @override
    Widget build(BuildContext context) {
    // 获取自带日期
    _showDatePicker () async {
    var _getTime = await showDatePicker(
    context: context,
    initialDate: DateTime.now(),// 现在时间
    firstDate: DateTime(1990), // 时间选项的最小时间
    lastDate: DateTime(2030) // 时间选项的最大时间
    );
    if(_getTime == null) return;
    setState(() {
    date = _getTime;
    });
    };
    // 获取自带时间
    var _time = TimeOfDay(hour: date.hour,minute: date.minute);
    _showTimePicker () async {
    var _getTime = await showTimePicker(
    context: context,
    initialTime: _time,// 现在时间
    // 时间选项的最大时间
    );
    if(_getTime == null) return;
    setState(() {
    _time = _getTime;
    });
    };
    // TODO: implement build
    return Scaffold(
    appBar: AppBar(
    title: Text('Date')
    ),
    body: ListView(
    children: <Widget>[
    Text('${date}'), // 日期
    Text('${date.millisecondsSinceEpoch}'), // 毫秒数
    Text('${DateTime.fromMillisecondsSinceEpoch(date.millisecondsSinceEpoch)}'), //毫秒转换成时间

    // 自带日期
    RaisedButton(
    child: Text('日期${date}'),
    onPressed: _showDatePicker
    ),
    // 自带时间
    RaisedButton(
    child: Text('时间${_time.format(context)}'),
    onPressed: _showTimePicker,
    ),
    // 带点击事件的容器
    InkWell(
    child: Text('日期${date}'),
    onTap: _showDatePicker,
    ),
    InkWell(
    child: Text('时间${_time.format(context)}'),
    onTap: _showTimePicker,
    ),
    Text('第三方时间${formatDate(date, [yyyy, '-', mm, '-', dd])}'),
    Text('第三方时间${formatDate(date, [yyyy, '年', mm, '月', dd, '日', hh, '时', mm, '分', ss, '秒'])}'),
    ],
    )
    );
    }
    }
  • 相关阅读:
    大话数据结构笔记——第二章 算法
    大话数据结构笔记——第一章 数据结构绪论
    Vue学习笔记【33】——nrm的安装使用
    Vue学习笔记【33】——相关文章
    flag-icon-css
    谷歌浏览页面常用快捷键
    PHPStorm IDE 快捷键(MAC版)
    npm install报错类似于npm WARN tar ENOENT: no such file or directory, open '*** ode_modules.staging***
    lodash
    Docker学不会?不妨看看这篇文章
  • 原文地址:https://www.cnblogs.com/zhaofeis/p/12356356.html
Copyright © 2011-2022 走看看