fix: flutter remove setState in initState (#8807)

Signed-off-by: dignow <linlong1265@gmail.com>
This commit is contained in:
dignow
2024-07-24 14:00:49 +08:00
committed by GitHub
parent 57d1b1ecc4
commit 79a1f888d6
12 changed files with 69 additions and 31 deletions

View File

@@ -78,6 +78,13 @@ class _PeerTabPageState extends State<PeerTabPage>
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((_) {
_loadLocalOptions();
});
super.initState();
}
Future<void> _loadLocalOptions() async {
final uiType = bind.getLocalFlutterOption(k: kOptionPeerCardUiType);
if (uiType != '') {
peerCardUiType.value = int.parse(uiType) == 0
@@ -88,7 +95,6 @@ class _PeerTabPageState extends State<PeerTabPage>
}
hideAbTagsPanel.value =
bind.mainGetLocalOption(key: kOptionHideAbTagsPanel) == 'Y';
super.initState();
}
Future<void> handleTabSelection(int tabIndex) async {
@@ -875,18 +881,22 @@ class _PeerSortDropdownState extends State<PeerSortDropdown> {
@override
void initState() {
if (!PeerSortType.values.contains(peerSort.value)) {
Future.delayed(Duration.zero, () {
// do not change obx directly in initState, so do in future.
peerSort.value = PeerSortType.remoteId;
bind.setLocalFlutterOption(
k: kOptionPeerSorting,
v: peerSort.value,
);
// do not change obx directly in initState, so do in future.
WidgetsBinding.instance.addPostFrameCallback((_) {
_loadLocalOptions();
});
}
super.initState();
}
Future<void> _loadLocalOptions() async {
peerSort.value = PeerSortType.remoteId;
bind.setLocalFlutterOption(
k: kOptionPeerSorting,
v: peerSort.value,
);
}
@override
Widget build(BuildContext context) {
final style = TextStyle(