J'ai un listviewbuilder horizontal comme indiqué dans l'image du haut :
Existe-t-il un moyen de corriger automatiquement la position actuelle afin que le widget situé dans le coin droit s'adapte parfaitement à toute sa largeur (ici le numéro 27)Parce que si vous arrêtez le défilement, il n'est pas joli s'il est coupé comme le numéro 27 dans l'image. Est-il possible de s'arrêter uniquement sur le widget le plus large afin que la position actuelle ne soit pas comme dans l'image ?
Voici mon code pour le constructeur de listview :
import './date_widget.dart';
import 'package:date_picker_timeline/gestures/tap.dart';
import 'package:flutter/material.dart';
import 'package:intl/date_symbol_data_local.dart';
class MyDatePickerTimeline extends StatefulWidget {
DateTime currentDate;
DateChangeListener onDateChange;
String locale;
// Creates the DatePickerTimeline Widget
MyDatePickerTimeline(
this.currentDate, {
Key key,
this.onDateChange,
this.locale = "de",
}) : super(key: key);
@override
State<StatefulWidget> createState() => new _MyDatePickerTimelineState();
}
class _MyDatePickerTimelineState extends State<MyDatePickerTimeline> {
@override void initState() {
super.initState();
initializeDateFormatting(widget.locale, null);
}
@override
Widget build(BuildContext context) {
return Container(
// padding: EdgeInsets.only(bottom: 600),
width: MediaQuery.of(context).size.width ,
height: 200,
child: ListView.builder(
reverse: true,
itemCount: 5000,
scrollDirection: Axis.horizontal,
itemBuilder: (context, index) {
// Return the Date Widget
DateTime _date = DateTime.now().subtract(Duration(days: index));
DateTime date = new DateTime(_date.year, _date.month, _date.day);
bool isSelected = compareDate(date, widget.currentDate);
return MyDateWidget(
date: date,
locale: widget.locale,
selectionColor:
isSelected ? Colors.black12 : Colors.transparent,
onDateSelected: (selectedDate) {
// A date is selected
if (widget.onDateChange != null) {
widget.onDateChange(selectedDate);
}
setState(() {
widget.currentDate = selectedDate;
});
},
);
},
),
);
}
bool compareDate(DateTime date1, DateTime date2) {
return date1.day == date2.day &&
date1.month == date2.month &&
date1.year == date2.year;
}
}
Ou est-il possible de définir une largeur fixe que l'on peut faire défiler ?