Flutter-showDatePicker(日期)和引入第三方
2020-01-02 本文已影响0人
梦幽辰
引入第三方包(以intl为例)
首先,我们可以在这个Dart Package上搜索我们想要的包,然后找到intl包。

复制
0.16.0
这个版本号,找到项目文件pubspec.yaml
,找到以下位置
在
sdk:flutter
的后面加上包名称和对应的版本号,如下所示:
再按下
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),
],
),
),
],
)
],
),
),
);
}
}


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),
],
),
),
],
)
],
),
),
);
}
}
