Calendar 有人能帮我用一个框架或其他东西来实现这种类型的日历小部件吗
我希望将日历显示为非对话框。我希望使用它可以选择屏幕截图中的日期间隔。UI: 选择一个范围:Calendar 有人能帮我用一个框架或其他东西来实现这种类型的日历小部件吗,calendar,flutter,Calendar,Flutter,我希望将日历显示为非对话框。我希望使用它可以选择屏幕截图中的日期间隔。UI: 选择一个范围: 你会从中学到很多。祝你好运 我建议您不要重新发明轮子,选择一个社区日历小部件(如),但如果您需要定制解决方案,您可以从非常简单的东西开始。例如,如果您需要选择一个范围,您可以只选择一个网格和一些类似的按钮: import 'package:flutter/material.dart'; class CalendarPage extends StatefulWidget { final String
你会从中学到很多。祝你好运 我建议您不要重新发明轮子,选择一个社区日历小部件(如),但如果您需要定制解决方案,您可以从非常简单的东西开始。例如,如果您需要选择一个范围,您可以只选择一个网格和一些类似的按钮:
import 'package:flutter/material.dart';
class CalendarPage extends StatefulWidget {
final String title;
CalendarPage({Key key, this.title}) : super(key: key);
@override
State<StatefulWidget> createState() => _CalendarPageState();
}
class _CalendarPageState extends State<CalendarPage> {
int _left = -1;
int _right = -1;
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: GridView.count(
crossAxisCount: 7,
children: List.generate(31, (index) {
return Container(
decoration: BoxDecoration(
border: Border.all(width: 2.0, color: Colors.black38),
color: _isInBounds(index)
? Colors.yellow[100]
: Colors.transparent,
borderRadius: const BorderRadius.all(const Radius.circular(8.0)),
),
margin: const EdgeInsets.all(2.0),
child: FlatButton(
onPressed: () => _handleTap(index),
child: Text('${index + 1}',
style: Theme.of(context).textTheme.body2,
textAlign: TextAlign.center)));
}),
));
}
void _handleTap(index) {
setState(() {
if (_left == -1)
_left = index;
else if (_right == -1) _right = index;
});
}
bool _isInBounds(int index) => _left <= index && index <= _right;
}
导入“包装:颤振/材料.省道”;
类CalendarPage扩展StatefulWidget{
最后的字符串标题;
CalendarPage({Key,this.title}):超级(Key:Key);
@凌驾
State createState()=>\u CalendarPageState();
}
类_CalendarPageState扩展状态{
int _left=-1;
int _right=-1;
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(widget.title),
),
正文:GridView.count(
交叉轴计数:7,
子项:List.generate(31,(索引){
返回容器(
装饰:盒子装饰(
边框:边框。全部(宽度:2.0,颜色:Colors.black38),
颜色:_isInBounds(索引)
?颜色。黄色[100]
:颜色。透明,
边界半径:常数边界半径.all(常数半径.圆形(8.0)),
),
边距:所有常数边集(2.0),
孩子:扁平按钮(
按下时:()=>\u handleTap(索引),
子项:文本(${index+1}),
样式:Theme.of(context).textTheme.body2,
textAlign:textAlign.center));
}),
));
}
void_handleTap(索引){
设置状态(){
如果(_left==-1)
_左=索引;
如果(_right==-1)_right=index;
});
}
bool\u isInBounds(int index)=>\u左我使用了建议的库,并根据我的需要对其进行了扭曲,谢谢。@您能分享一下吗?您在这个库(flatter\u calendar\u carousel)中选择范围的更新代码。我需要相同的要求。