mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-21 11:22:16 +08:00
@@ -69,11 +69,14 @@ class _SelectTopicPanelState extends State<SelectTopicPanel> {
|
||||
_sub = _ctr.stream
|
||||
.debounce(const Duration(milliseconds: 300), trailing: true)
|
||||
.listen((value) {
|
||||
_controller
|
||||
..enableClear.value = value.isNotEmpty
|
||||
..onRefresh().whenComplete(() => WidgetsBinding.instance
|
||||
.addPostFrameCallback((_) => widget.scrollController?.jumpToTop()));
|
||||
});
|
||||
_controller
|
||||
..enableClear.value = value.isNotEmpty
|
||||
..onRefresh().whenComplete(
|
||||
() => WidgetsBinding.instance.addPostFrameCallback(
|
||||
(_) => widget.scrollController?.jumpToTop(),
|
||||
),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
@@ -122,10 +125,14 @@ class _SelectTopicPanelState extends State<SelectTopicPanel> {
|
||||
padding: EdgeInsets.only(left: 12, right: 4),
|
||||
child: Icon(Icons.search, size: 20),
|
||||
),
|
||||
prefixIconConstraints:
|
||||
const BoxConstraints(minHeight: 0, minWidth: 0),
|
||||
contentPadding:
|
||||
const EdgeInsets.symmetric(horizontal: 16, vertical: 6),
|
||||
prefixIconConstraints: const BoxConstraints(
|
||||
minHeight: 0,
|
||||
minWidth: 0,
|
||||
),
|
||||
contentPadding: const EdgeInsets.symmetric(
|
||||
horizontal: 16,
|
||||
vertical: 6,
|
||||
),
|
||||
suffixIcon: Obx(
|
||||
() => _controller.enableClear.value
|
||||
? Padding(
|
||||
@@ -146,16 +153,20 @@ class _SelectTopicPanelState extends State<SelectTopicPanel> {
|
||||
onTap: () => _controller
|
||||
..enableClear.value = false
|
||||
..controller.clear()
|
||||
..onRefresh().whenComplete(() => WidgetsBinding
|
||||
.instance
|
||||
.addPostFrameCallback((_) =>
|
||||
widget.scrollController?.jumpToTop())),
|
||||
..onRefresh().whenComplete(
|
||||
() =>
|
||||
WidgetsBinding.instance.addPostFrameCallback(
|
||||
(_) => widget.scrollController?.jumpToTop(),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
: const SizedBox.shrink(),
|
||||
),
|
||||
suffixIconConstraints:
|
||||
const BoxConstraints(minHeight: 0, minWidth: 0),
|
||||
suffixIconConstraints: const BoxConstraints(
|
||||
minHeight: 0,
|
||||
minWidth: 0,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -179,36 +190,40 @@ class _SelectTopicPanelState extends State<SelectTopicPanel> {
|
||||
}
|
||||
|
||||
Widget _buildBody(
|
||||
ThemeData theme, LoadingState<List<TopicItem>?> loadingState) {
|
||||
ThemeData theme,
|
||||
LoadingState<List<TopicItem>?> loadingState,
|
||||
) {
|
||||
return switch (loadingState) {
|
||||
Loading() => loadingWidget,
|
||||
Success<List<TopicItem>?>(:var response) => response?.isNotEmpty == true
|
||||
? ListView.builder(
|
||||
padding: EdgeInsets.only(
|
||||
bottom: MediaQuery.paddingOf(context).bottom +
|
||||
MediaQuery.viewInsetsOf(context).bottom +
|
||||
80,
|
||||
),
|
||||
controller: widget.scrollController,
|
||||
itemBuilder: (context, index) {
|
||||
if (index == response.length - 1) {
|
||||
_controller.onLoadMore();
|
||||
}
|
||||
return DynTopicItem(
|
||||
item: response[index],
|
||||
onTap: (item) => Get.back(result: item),
|
||||
);
|
||||
},
|
||||
itemCount: response!.length,
|
||||
)
|
||||
: _errWidget(),
|
||||
Success<List<TopicItem>?>(:var response) =>
|
||||
response?.isNotEmpty == true
|
||||
? ListView.builder(
|
||||
padding: EdgeInsets.only(
|
||||
bottom:
|
||||
MediaQuery.paddingOf(context).bottom +
|
||||
MediaQuery.viewInsetsOf(context).bottom +
|
||||
80,
|
||||
),
|
||||
controller: widget.scrollController,
|
||||
itemBuilder: (context, index) {
|
||||
if (index == response.length - 1) {
|
||||
_controller.onLoadMore();
|
||||
}
|
||||
return DynTopicItem(
|
||||
item: response[index],
|
||||
onTap: (item) => Get.back(result: item),
|
||||
);
|
||||
},
|
||||
itemCount: response!.length,
|
||||
)
|
||||
: _errWidget(),
|
||||
Error(:var errMsg) => _errWidget(errMsg),
|
||||
};
|
||||
}
|
||||
|
||||
Widget _errWidget([String? errMsg]) => scrollErrorWidget(
|
||||
errMsg: errMsg,
|
||||
controller: widget.scrollController,
|
||||
onReload: _controller.onReload,
|
||||
);
|
||||
errMsg: errMsg,
|
||||
controller: widget.scrollController,
|
||||
onReload: _controller.onReload,
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user