Skip to content

Instantly share code, notes, and snippets.

@manoellribeiro
Created March 11, 2021 20:37
Show Gist options
  • Save manoellribeiro/94c7568c7ba096f024a7a11737de6cac to your computer and use it in GitHub Desktop.
Save manoellribeiro/94c7568c7ba096f024a7a11737de6cac to your computer and use it in GitHub Desktop.
Código inicial para o exercício com date picker.
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<int> 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<int> availableWeekdays) {
return DateTime.now();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment