![](/img/trans.png)
[英]can I use flutter_bloc to manages state in flutter packages?
[英]Can I declare a function inside a flutter_bloc builder?
我正在使用table_calendar flutter package 添加帶有事件的日歷。 我需要聲明一個 function,它使用來自 bloc 的 state。 他的做法有什么問題嗎? 現在它正在工作,但我覺得有一個我想不到的更好的解決方案。
class TableView extends StatelessWidget {
const TableView({super.key});
@override
Widget build(BuildContext context) {
return BlocBuilder<CalendarBloc, CalendarState>(
builder: (context, state) {
List<Schedule> _getEventsForDay(DateTime day) {
final calendar = state.days.firstWhereOrNull(
(calendar) => day.isOnCalendar(calendar),
);
return calendar == null ? [] : calendar.schedules ?? [];
}
return TableCalendar<Schedule>(
focusedDay: state.focusedDay ?? DateTime.now(),
firstDay: kFirstDay,
lastDay: kLastDay,
selectedDayPredicate: (day) => isSameDay(state.selectedDay, day),
onDaySelected: (selectedDay, focusedDay) {
context.read<CalendarBloc>().add(
DaySelected(
selectedDay: selectedDay,
focusedDay: focusedDay,
),
);
},
eventLoader: _getEventsForDay,
// calendarFormat: CalendarFormat.month,
);
},
);
}
}
將_getEventsForDay
function 移動到CalendarBloc
是一個好主意,因為它會使代碼更易於測試和維護。 function可以是CalendarBloc
class內部的私有方法。這樣可以隔離測試業務邏輯,使測試更可靠,更容易編寫。
此外,這也使代碼更加模塊化,並將表示邏輯(UI)與業務邏輯(bloc)分開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.