美文网首页
Flutter-showDatePicker(日期)和引入第三方

Flutter-showDatePicker(日期)和引入第三方

作者: 梦幽辰 | 来源:发表于2020-01-02 14:56 被阅读0次

引入第三方包(以intl为例)

首先,我们可以在这个Dart Package上搜索我们想要的包,然后找到intl包。

image.png
复制0.16.0这个版本号,找到项目文件pubspec.yaml,找到以下位置
image.png
sdk:flutter的后面加上包名称和对应的版本号,如下所示:
image.png
再按下ctrl+s保存,会自动在输出(指vscode的一个界面)上运行flutter packages get命令,vscode会自动更新包,至此,引入第三方库就成功了

showDatePicker(日期)

import 'package:flutter/material.dart';
import 'package:intl/intl.dart'; // 日期第三方包
import 'dart:async';
class DateTimeDemo extends StatefulWidget {
  @override
  _DateTimeDemoState createState() => _DateTimeDemoState();
}

class _DateTimeDemoState extends State<DateTimeDemo> {
  DateTime selectedDate = DateTime.now();
  TimeOfDay selectedTime = TimeOfDay(hour: 9, minute: 30);

  void _selectDate() async {
    final DateTime date = await showDatePicker(
      context: context,
      initialDate: selectedDate, // 初始日期
      firstDate: DateTime(1900), // 
      lastDate: DateTime(2100),
    );

    if (date == null) {
      return;
    }

    setState(() {
      selectedDate = date;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('DateTimeDemo'),
        elevation: 0,
      ),
      body: Container(
        padding: EdgeInsets.all(16),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                InkWell(
                  onTap: _selectDate,
                  child: Row(
                    children: <Widget>[
                      Text(DateFormat.yMd().format(selectedDate)),
                      Icon(Icons.arrow_drop_down),
                    ],
                  ),
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}
image.png
image.png
class DateTimeDemo extends StatefulWidget {
  @override
  _DateTimeDemoState createState() => _DateTimeDemoState();
}

class _DateTimeDemoState extends State<DateTimeDemo> {
  DateTime selectedDate = DateTime.now();
  TimeOfDay selectedTime = TimeOfDay(hour: 9, minute: 30);

  void _selectDate() async {
    final DateTime date = await showDatePicker(
      context: context,
      initialDate: selectedDate, // 初始日期
      firstDate: DateTime(1900),
      lastDate: DateTime(2100),
    );

    if (date == null) {
      return;
    }

    setState(() {
      selectedDate = date;
    });
  }

  _selectTime() async {
    final TimeOfDay time = await showTimePicker(
      context: context,
      initialTime: selectedTime,
    );

    if (time == null) {
      return;
    }

    setState(() {
      selectedTime = time;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('DateTimeDemo'),
        elevation: 0,
      ),
      body: Container(
        padding: EdgeInsets.all(16),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                InkWell(
                  onTap: _selectDate,
                  child: Row(
                    children: <Widget>[
                      Text(DateFormat.yMd().format(selectedDate)),
                      Icon(Icons.arrow_drop_down),
                    ],
                  ),
                ),
                InkWell(
                  onTap: _selectTime,
                  child: Row(
                    children: <Widget>[
                      Text(selectedTime.format(context)),
                      Icon(Icons.arrow_drop_down),
                    ],
                  ),
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}
image.png

相关文章

网友评论

      本文标题:Flutter-showDatePicker(日期)和引入第三方

      本文链接:https://www.haomeiwen.com/subject/hvhooctx.html