я создаю мобильное приложение, которое позволяет пользователю выбирать дату из средства выбора даты, при открытии экрана выбора он выходит за пределы кнопки Я искал проблему и нашел здесь ту же проблему https://github.com/flutter/flutter/issues/19744 в решении упоминается, что он изменил файл "date_picker.dart" как мне найти этот файл и как применить эти изменения код, который я использовал:
DateTime TodayDate = new DateTime.now();Future<Null> selectDate(BuildContext context) async{
final DateTime Picker = await showDatePicker(
context: context,
initialDate: TodayDate,
firstDate: TodayDate,
lastDate: new DateTime(2021),
);
if (Picker != null && Picker != TodayDate){
print('${TodayDate.toString()} تاريخ الرحلة : ');
setState(() {
TodayDate = Picker;
});
}}
внутри сборки виджета
new RaisedButton(onPressed:(){selectDate(context);},
color: Colors.lightGreen,
textColor: Colors.grey[200],
child: const Text('اختيا تاريخ الرحلة'),
shape: new RoundedRectangleBorder(borderRadius: new BorderRadius.circular(30.0)),
),





В Android Studio выберите showDatePicker, затем нажмите CTRL + F.
Файл date_picker.dart откроется в новой вкладке. Примерно в строке 960 в файле находится искомый ButtonBar. Теперь, когда вы попытаетесь его отредактировать, появится предупреждение:
Просто нажмите ОК и редактируйте как хотите. Помните, что изменения могут быть перезаписаны при запуске flutter upgrade. Возможно, лучше скопировать весь файл в свой проект, чтобы создать собственную версию средства выбора даты.
Я настоятельно не рекомендую этого делать. Есть бесчисленное множество ситуаций, когда это может действительно навредить вам (CI, обновление, работа в команде). Если вы ДЕЙСТВИТЕЛЬНО хотите изменить средство выбора даты, вам лучше скопировать и вставить код в my_date_picker.dart и изменить его в соответствии с вашими потребностями.
Не надо.
Изучите возможность переопределения метода build () showDatePicker. Копирование его содержимого и добавление ваших настроек было бы намного предпочтительнее, чем фактическое редактирование файла. Хотя - даже это все еще кажется очень отрывочным. Подумайте о том, что через год Flutter решит изменить реализацию showDatePicker.build (). Если вы не намерены поддерживать этот код при каждом обновлении Flutter, вам может не повезти.
Идеальное решение - запросить добавление функции или сделать это самостоятельно и попытаться интегрировать. Очевидно, что если вам нужна эта функция как можно скорее, это не сильно вам поможет.
Обновлено: похоже, есть обходной путь, который включает использование SingleChildScrollView, чтобы избежать переполнения - см. https://github.com/flutter/flutter/issues/19744#issuecomment-493873347
DateTime dateTime = await showDatePicker(
context: context,
initialDate: DateTime(2000),
firstDate: DateTime(1950),
lastDate: DateTime(DateTime.now().year + 1),
builder: (context, child) {
return SingleChildScrollView(
child: Theme(
child: child,
data: ThemeData.light(),
),
);
});
«Остерегайтесь того, что изменения могут быть перезаписаны при запуске обновления flutter» - это сильно недооценивает проблему, связанную с этим ... пожалуйста, не делайте этого.