5 способов выбрать дату без времени во Flutter

При работе с выбором даты во Flutter вы можете столкнуться со сценариями, когда вам нужно выбрать дату без какой-либо связанной информации о времени. В этом сообщении блога мы рассмотрим пять различных методов выполнения этой задачи, а также примеры кода. Давайте начнем!

Метод 1: использование функции showDatePicker

Future<void> _selectDate(BuildContext context) async {
  final DateTime? picked = await showDatePicker(
    context: context,
    initialDate: DateTime.now(),
    firstDate: DateTime(1900),
    lastDate: DateTime(2100),
    helpText: 'Select a date',
    builder: (BuildContext context, Widget? child) {
      return Theme(
        data: ThemeData.light().copyWith(
          primaryColor: Colors.blue, // set your desired color here
          accentColor: Colors.blue,
          colorScheme: ColorScheme.light(primary: Colors.blue),
          buttonTheme: ButtonThemeData(textTheme: ButtonTextTheme.primary),
        ),
        child: child!,
      );
    },
  );
  if (picked != null) {
    final dateWithoutTime = DateTime(picked.year, picked.month, picked.day);
    // Do something with the selected date without time
  }
}

Метод 2: использование пакета intl

import 'package:intl/intl.dart';
String formatDateWithoutTime(DateTime date) {
  final formatter = DateFormat('yyyy-MM-dd');
  return formatter.format(date);
}
void main() {
  final now = DateTime.now();
  final dateWithoutTime = formatDateWithoutTime(now);
  // Use `dateWithoutTime` as needed
}

Метод 3: использование пакета intl(с часовым поясом)

import 'package:intl/intl.dart';
String formatDateWithoutTime(DateTime date) {
  final formatter = DateFormat('yyyy-MM-dd');
  final formattedString = formatter.format(date.toLocal());
  return formattedString;
}
void main() {
  final now = DateTime.now().toUtc();
  final dateWithoutTime = formatDateWithoutTime(now);
  // Use `dateWithoutTime` as needed
}

Метод 4: извлечение компонентов даты вручную

void main() {
  final now = DateTime.now();
  final dateWithoutTime = DateTime(now.year, now.month, now.day);
  // Use `dateWithoutTime` as needed
}

Метод 5: использование пакета date_format

import 'package:date_format/date_format.dart';
void main() {
  final now = DateTime.now();
  final formattedString = formatDate(now, [yyyy, '-', mm, '-', dd]);
  // Use `formattedString` as needed
}

В этой статье мы рассмотрели пять различных способов выбора даты без времени во Flutter. Мы рассмотрели использование функции showDatePicker, пакета intl, ручного извлечения компонентов даты и пакета date_format. В зависимости от ваших конкретных требований вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Приятного кодирования!