大家好,我正在嘗試使用存盤在選項卡內容中的串列中的專案數來更新選項卡名稱。該串列在選項卡內容組件中獲取。如何將串列長度變數傳遞給選項卡標題?
// PARENT WIDGET
class EventsScreen extends StatefulWidget {
const EventsScreen({Key? key}) : super(key: key);
@override
State<EventsScreen> createState() => _EventsScreenState();
}
class _EventsScreenState extends State<EventsScreen> {
@override
Widget build(BuildContext context) {
return Parent(
child: TabbedHeader(
tabTitles: [
'?iadosti (HERE I WANT TO ADD LENGTH OF REQUESTS LIST)'
],
title: 'Udalosti',
tabContents: [
EventRequestTab() // CHILD COMPONENT WITH LIST OF REQUESTS
],
),
);
}
}
// CHILD WIDGET WITH REQUESTS LIST
class EventRequestTab extends StatefulWidget {
const EventRequestTab({Key? key, this.requests}) : super(key: key);
@override
State<EventRequestTab> createState() => _EventRequestState();
}
class _EventRequestState extends State<EventRequestTab> {
late EventService _eventService;
late List<EventRequest>? requests;
@override
void initState() {
super.initState();
_eventService = EventService();
requests = // FETCHING LIST OF REQUESTS
}
} ... build method etc ....
在 initState 的子小部件中,我正在獲取稍后顯示在 ListView 中的請求串列。但我不知道如何將獲取串列的長度傳遞給 TabbedHeader 的 tabTitles 屬性。TabbedHeader 是我對 TabBar 小部件的自定義包裝器。
uj5u.com熱心網友回復:
您可以通過將回呼傳遞給小部件來傳遞在initState您的狀態類中獲取的串列。此回呼將回傳作為其引數獲取的串列,并且在 中,選項卡名稱將使用串列的長度進行更新EventRequestTabEventRequestTabEventsScreen
這是您的代碼的更新:
// PARENT WIDGET
class EventsScreen extends StatefulWidget {
const EventsScreen({Key? key}) : super(key: key);
@override
State<EventsScreen> createState() => _EventsScreenState();
}
class _EventsScreenState extends State<EventsScreen> {
int? lengthOfRequestList;
void updateTabName(List<EventRequest> listOfRequests) {
setState(() {
lengthOfRequestList = listOfRequests.length;
});
}
@override
Widget build(BuildContext context) {
return Parent(
child: TabbedHeader(
tabTitles: ['?iadosti (${int == null ? '...' : int})'],
title: 'Udalosti',
tabContents: [
EventRequestTab(
onListFetched: updateTabName,
) // CHILD COMPONENT WITH LIST OF REQUESTS
],
),
);
}
}
// CHILD WIDGET WITH REQUESTS LIST
class EventRequestTab extends StatefulWidget {
final Function(List<EventRequest> fetchedList) onListFetched;
const EventRequestTab({Key? key, required this.onListFetched}) : super(key: key);
@override
State<EventRequestTab> createState() => _EventRequestState();
}
class _EventRequestState extends State<EventRequestTab> {
late EventService _eventService;
late List<EventRequest>? requests;
@override
void initState() {
super.initState();
_eventService = EventService();
requests = // FETCHING LIST OF REQUESTS
widget.onListFetched(requests);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461123.html
標籤:扑 用户界面 uitabbar控制器 标签栏
