如何在列表日历中显示前 30 天?
How can i show previous 30 days in my list calendar?
我有一个日历,可以正常工作,但只显示当前日期和未来日期。我怎样才能设置前几天?我想突出显示当前的一天,但也有机会向右和向左滚动它。也许您已经遇到过这个问题。请帮助我。
这是一个整体class,你可以试试看
class _MyHomePageState extends State<MyHomePage> {
int currentDateSelectedIndex = 0; //For Horizontal Date
DateTime selectedDate = DateTime.now(); // TO tracking date
late var selectedDateNew;
ScrollController scrollController = ScrollController(); //Scroll Controller for ListView
List<String> listOfMonths = [
"January","February","March","April","May","June","July","August","September","October","November","December"
];
@override
void initState() {
selectedDate = DateTime.now().subtract(Duration(days: 30));
selectedDateNew = formatDate(selectedDate, [yyyy, '-', mm, '-', dd]);
super.initState();
}
@override
Widget build(BuildContext context) {
final FixedExtentScrollController itemController = FixedExtentScrollController();
return Scaffold(
body: Center(
child: calendar_carousel(),
)
);
}
Widget calendar_carousel() {
return Container(
height: 100,
child: ScrollSnapList(
padding: EdgeInsets.zero,
itemBuilder: _buildDaysList,
allowAnotherDirection: true,
itemSize: 196,
initialIndex: 0, //i tryed to put here another number, i didn't work
dynamicItemSize: true,
selectedItemAnchor: SelectedItemAnchor.MIDDLE,
onReachEnd: (){
print('Done!');
},
itemCount: 365,
onItemFocus: (int) {
setState(() {
scrollController.animateTo(0, duration: Duration(days: int), curve: Curves.bounceIn);
currentDateSelectedIndex = int;
selectedDate = DateTime.now().add(Duration(days: int));
selectedDateNew = formatDate(selectedDate, [yyyy, '-', mm, '-', dd]);
//fetch(selectedDateNew);
});
},
)
);
}
Widget _buildDaysList(BuildContext context, int index){
return Container(
child: Container(
color: Colors.blue,
width: 196,
height: 80,
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(DateTime.now().add(Duration(days: index)).day.toString()),
SizedBox(
width: 10,
),
Text(listOfMonths[DateTime.now().add(Duration(days: index)).month - 1].toString(),
),
],
),
),
),
);
}
}
我使用了依赖项
- scroll_snap_list: ^0.8.6
- date_format: ^2.0.6
你用过吗
var lastMonth = new DateTime(date.year, date.month - 1, date.day);
我有一个日历,可以正常工作,但只显示当前日期和未来日期。我怎样才能设置前几天?我想突出显示当前的一天,但也有机会向右和向左滚动它。也许您已经遇到过这个问题。请帮助我。
这是一个整体class,你可以试试看
class _MyHomePageState extends State<MyHomePage> {
int currentDateSelectedIndex = 0; //For Horizontal Date
DateTime selectedDate = DateTime.now(); // TO tracking date
late var selectedDateNew;
ScrollController scrollController = ScrollController(); //Scroll Controller for ListView
List<String> listOfMonths = [
"January","February","March","April","May","June","July","August","September","October","November","December"
];
@override
void initState() {
selectedDate = DateTime.now().subtract(Duration(days: 30));
selectedDateNew = formatDate(selectedDate, [yyyy, '-', mm, '-', dd]);
super.initState();
}
@override
Widget build(BuildContext context) {
final FixedExtentScrollController itemController = FixedExtentScrollController();
return Scaffold(
body: Center(
child: calendar_carousel(),
)
);
}
Widget calendar_carousel() {
return Container(
height: 100,
child: ScrollSnapList(
padding: EdgeInsets.zero,
itemBuilder: _buildDaysList,
allowAnotherDirection: true,
itemSize: 196,
initialIndex: 0, //i tryed to put here another number, i didn't work
dynamicItemSize: true,
selectedItemAnchor: SelectedItemAnchor.MIDDLE,
onReachEnd: (){
print('Done!');
},
itemCount: 365,
onItemFocus: (int) {
setState(() {
scrollController.animateTo(0, duration: Duration(days: int), curve: Curves.bounceIn);
currentDateSelectedIndex = int;
selectedDate = DateTime.now().add(Duration(days: int));
selectedDateNew = formatDate(selectedDate, [yyyy, '-', mm, '-', dd]);
//fetch(selectedDateNew);
});
},
)
);
}
Widget _buildDaysList(BuildContext context, int index){
return Container(
child: Container(
color: Colors.blue,
width: 196,
height: 80,
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(DateTime.now().add(Duration(days: index)).day.toString()),
SizedBox(
width: 10,
),
Text(listOfMonths[DateTime.now().add(Duration(days: index)).month - 1].toString(),
),
],
),
),
),
);
}
}
我使用了依赖项
- scroll_snap_list: ^0.8.6
- date_format: ^2.0.6
你用过吗
var lastMonth = new DateTime(date.year, date.month - 1, date.day);