Calendar 有人能帮我用一个框架或其他东西来实现这种类型的日历小部件吗

Calendar 有人能帮我用一个框架或其他东西来实现这种类型的日历小部件吗,calendar,flutter,Calendar,Flutter,我希望将日历显示为非对话框。我希望使用它可以选择屏幕截图中的日期间隔。UI: 选择一个范围: 你会从中学到很多。祝你好运 我建议您不要重新发明轮子,选择一个社区日历小部件(如),但如果您需要定制解决方案,您可以从非常简单的东西开始。例如,如果您需要选择一个范围,您可以只选择一个网格和一些类似的按钮: import 'package:flutter/material.dart'; class CalendarPage extends StatefulWidget { final String

我希望将日历显示为非对话框。我希望使用它可以选择屏幕截图中的日期间隔。

UI:

选择一个范围:


你会从中学到很多。祝你好运

我建议您不要重新发明轮子,选择一个社区日历小部件(如),但如果您需要定制解决方案,您可以从非常简单的东西开始。例如,如果您需要选择一个范围,您可以只选择一个网格和一些类似的按钮:

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)中选择范围的更新代码。我需要相同的要求。