import 'package:flutter/material.dart'; final Color darkBlue = Color.fromARGB(255, 18, 32, 47); void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue), debugShowCheckedModeBanner: false, home: Scaffold( body: Center( child: DatePickerButton(), ), ), ); } } final diasDaSemanaDisponiveis = [ DateTime.thursday, DateTime.wednesday, DateTime.tuesday, ]; class DatePickerButton extends StatelessWidget { @override Widget build(BuildContext context) { return ElevatedButton( onPressed: () => abrirDatePicker(diasDaSemanaDisponiveis, context), child: Text("Date Picker") ); } void abrirDatePicker(List diasDaSemanaDisponiveis, BuildContext context) { showDatePicker( context: context, initialDate: calcularDataInicial(diasDaSemanaDisponiveis), firstDate: DateTime.now(), lastDate: DateTime(2040), // Aqui deve ser escrita uma lógica para validar // quais as datas ficam disponíveis para o usuário no DatePicker // Dica: Comparar a data quem vem no callback com os dias da semana disponíveis. selectableDayPredicate: (date) { return true; } ); } // Essa função deve ser usada para calcular a data inicial corretamente. // Ela deve ser a data mais próxima disponível entre os dias da semana. // Por exemplo, se hoje é segunda, mas os dias da semana disponíveis são apenas quinta e sexta, // então a data inicial deve ser a próxima quinta-feira. DateTime calcularDataInicial(List availableWeekdays) { return DateTime.now(); } }