前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flutter中使用第三方时间选择器插件

Flutter中使用第三方时间选择器插件

作者头像
越陌度阡
发布2021-01-05 14:19:45
1.8K0
发布2021-01-05 14:19:45
举报

1. 安装插件

配置flutter_cupertino_date_picker。

代码语言:javascript
复制
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  date_format: ^1.0.6
  flutter_cupertino_date_picker: ^1.0.26+2

在pubspec.yaml中配置保存后,在VS Code环境中会自动下载依赖包。

如果无法正常下载,执行 flutter pub get 。

2. 引入插件

在需要用到的该插件文件中引入插件包。

代码语言:javascript
复制
import 'package:flutter_cupertino_date_picker/flutter_cupertino_date_picker.dart';

3. 使用插件

代码语言:javascript
复制
DateTime _dateTime=DateTime.now();

// 显示时间的方法
void _showDatePicker(){

    DatePicker.showDatePicker(
        context,
        onMonthChangeStartWithFirstDate: true,

        // 如果报错提到 DateTimePickerTheme 有问题,点开这个类的原文件作如下修改。
        // 移除'with DiagnosticableMixin'或者将'DiagnosticableMixin'改成'Diagnosticable'.
        pickerTheme: DateTimePickerTheme(
            showTitle: true,
            confirm: Text('确认', style: TextStyle(color: Colors.red)),
            cancel: Text('取消',style:TextStyle(color:Colors.cyan))
        ),

        minDateTime: DateTime.parse("1970-01-01"),
        maxDateTime: DateTime.parse("2050-01-01"),

        initialDateTime: _dateTime,

        // 显示日期
        // dateFormat: "yyyy-MMMM-dd",
        
        // 显示日期与时间
        dateFormat:'yyyy年M月d日    EEE,H时:m分',  // show TimePicker
        pickerMode: DateTimePickerMode.datetime,  // show TimePicker


        locale: DateTimePickerLocale.zh_cn,

        onChange: (dateTime, List<int> index) {
            setState(() {
                // 初始及修改保存后的时间
                _dateTime = dateTime;
            });
        },
        onConfirm: (dateTime, List<int> index) {
            setState(() {
                // 初始及修改保存后的时间
                _dateTime = dateTime;
            });
        },
    );
    
}

4. 代码完整示例

代码语言:javascript
复制
import 'package:flutter/material.dart';

// 引入第三方插件
import 'package:date_format/date_format.dart';
import 'package:flutter_cupertino_date_picker/flutter_cupertino_date_picker.dart';

class DatePickerPage extends StatefulWidget {
    DatePickerPage({Key key}) : super(key: key);
    @override
    _DatePickerPageState createState() => _DatePickerPageState();
}

class _DatePickerPageState extends State<DatePickerPage> {

    DateTime _dateTime=DateTime.now();

    // 显示时间的方法
    void _showDatePicker(){

        DatePicker.showDatePicker(
            context,
            onMonthChangeStartWithFirstDate: true,

            // 如果报错提到 DateTimePickerTheme 有问题,点开这个类的原文件作如下修改。
            // 移除'with DiagnosticableMixin'或者将'DiagnosticableMixin'改成'Diagnosticable'.
            pickerTheme: DateTimePickerTheme(
                showTitle: true,
                confirm: Text('确认', style: TextStyle(color: Colors.red)),
                cancel: Text('取消',style:TextStyle(color:Colors.cyan))
            ),

            minDateTime: DateTime.parse("1970-01-01"),
            maxDateTime: DateTime.parse("2050-01-01"),

            initialDateTime: _dateTime,

            // 显示日期
            // dateFormat: "yyyy-MMMM-dd",
            
            // 显示日期与时间
            dateFormat:'yyyy年M月d日    EEE,H时:m分',  // show TimePicker
            pickerMode: DateTimePickerMode.datetime,  // show TimePicker


            locale: DateTimePickerLocale.zh_cn,

            onChange: (dateTime, List<int> index) {
                setState(() {
                    // 初始及修改保存后的时间
                    _dateTime = dateTime;
                });
            },
            onConfirm: (dateTime, List<int> index) {
                setState(() {
                    // 初始及修改保存后的时间
                    _dateTime = dateTime;
                });
            },
        );
        
    }

    @override
    Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(title: Text("DatePicker")),
            body:Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                    Row(
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: <Widget>[
                            // 添加点击水波纹效果
                            InkWell(
                                child:Row(
                                    children: <Widget>[
                                        Text("${formatDate(_dateTime,[yyyy,'年',mm,'月',dd,' ',HH,':',nn])}"),
                                        Icon(Icons.arrow_drop_down)
                                    ],
                                ),
                                onTap:_showDatePicker
                            )
                        ],
                    )
                ],
            ) 
        );
    }
}

效果图如下:

参考:https://github.com/dylanwuzh/flutter-cupertino-date-picker

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-01-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装插件
  • 2. 引入插件
  • 3. 使用插件
  • 4. 代码完整示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档