Flutter CupertinoDatePicker底部无限像素溢出的RenderFlex
我试图在容器内的CupertinodePicker上方添加一行cancel and done按钮,但无论点击错误,有什么可能出错 ════════ 呈现库捕获到异常═════════════════════════════════ 底部无限像素溢出的RenderFlex。 导致错误的相关小部件已被删除 纵队Flutter CupertinoDatePicker底部无限像素溢出的RenderFlex,flutter,dart,Flutter,Dart,我试图在容器内的CupertinodePicker上方添加一行cancel and done按钮,但无论点击错误,有什么可能出错 ════════ 呈现库捕获到异常═════════════════════════════════ 底部无限像素溢出的RenderFlex。 导致错误的相关小部件已被删除 纵队 String\u selectedDueDate; var formatter=new DateFormat('dd-MM-yyyy'); 列表砖( 领先:const图标(今天的图标), 标
String\u selectedDueDate;
var formatter=new DateFormat('dd-MM-yyyy');
列表砖(
领先:const图标(今天的图标),
标题:常量文本(“到期日*”),
字幕:_selectedDueDate
onTap:(){
showcupbertinomodalpopup(
上下文:上下文,
生成器:(上下文){
返回容器(
颜色:颜色,白色,
高度:300.0,
子:列(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
扁平按钮(
形状:圆形矩形边框(
边界半径:边界半径。零),
子:文本(
“取消”,
),
按下:()=>{},
),
扁平按钮(
形状:圆形矩形边框(
边界半径:边界半径。零),
子:文本(
“完成”,
),
按下:()=>{},
),
],
),
Cupertinodepicker(
初始日期时间:
DateTime.now().add(新的持续时间(天:7)),
minimumDate:DateTime.now(),
模式:CupertinodeTatePickerMode.date,
onDateTimeChanged:(日期){
设置状态(){
打印(日期);
_selectedDueDate=formatter.format(日期);
});
},
),
],
),
);
});
},
),
将CupertinodePicker
包装在容器中
并设置所需的高度
您可以在下面复制粘贴运行完整代码您可以使用
Flexible
代码片段
Flexible(
child: CupertinoDatePicker(
工作演示
完整代码
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _selectedDueDate;
var formatter = new DateFormat('dd-MM-yyyy');
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: ListTile(
leading: const Icon(Icons.today),
title: const Text('Due Date*'),
subtitle: Text("$_selectedDueDate"),
onTap: () {
showCupertinoModalPopup(
context: context,
builder: (context) {
return Container(
color: Colors.white,
height: 300.0,
child: Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
FlatButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.zero),
child: Text(
"Cancel",
),
onPressed: () => {},
),
FlatButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.zero),
child: Text(
"Done",
),
onPressed: () => {},
),
],
),
Flexible(
child: CupertinoDatePicker(
initialDateTime:
DateTime.now().add(new Duration(days: 7)),
minimumDate: DateTime.now(),
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (date) {
setState(() {
print(date);
_selectedDueDate = formatter.format(date);
});
},
),
),
],
),
);
});
},
),
);
}
}
import'包装:flift/cupertino.dart';
进口“包装:颤振/材料.省道”;
导入“包:intl/intl.dart”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
字符串_selectedDueDate;
var formatter=new DateFormat('dd-MM-yyyy');
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:ListTile(
领先:const图标(今天的图标),
标题:常量文本(“到期日*”),
副标题:文本(“$\u selectedDueDate”),
onTap:(){
showcupbertinomodalpopup(
上下文:上下文,
生成器:(上下文){
返回容器(
颜色:颜色,白色,
高度:300.0,
子:列(
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
扁平按钮(
形状:圆形矩形边框(
边界半径:边界半径。零),
子:文本(
“取消”,
),
按下:()=>{},
),
扁平按钮(
形状:圆形矩形边框(
边界半径:边界半径。零),
子:文本(
“完成”,
),
按下:()=>{},
),
],
),
灵活的(
孩子:Cupertinodepicker(
初始日期时间:
DateTime.now().add(新的持续时间(天:7)),
minimumDate:DateTime.now(),
模式:CupertinodeTatePickerMode.date,
onDateTimeChanged:(日期){
设置状态(){
打印(日期);
_selectedDueDate=formatter.format(日期);
})
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String _selectedDueDate;
var formatter = new DateFormat('dd-MM-yyyy');
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: ListTile(
leading: const Icon(Icons.today),
title: const Text('Due Date*'),
subtitle: Text("$_selectedDueDate"),
onTap: () {
showCupertinoModalPopup(
context: context,
builder: (context) {
return Container(
color: Colors.white,
height: 300.0,
child: Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
FlatButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.zero),
child: Text(
"Cancel",
),
onPressed: () => {},
),
FlatButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.zero),
child: Text(
"Done",
),
onPressed: () => {},
),
],
),
Flexible(
child: CupertinoDatePicker(
initialDateTime:
DateTime.now().add(new Duration(days: 7)),
minimumDate: DateTime.now(),
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (date) {
setState(() {
print(date);
_selectedDueDate = formatter.format(date);
});
},
),
),
],
),
);
});
},
),
);
}
}