mirror of
https://ghfast.top/https://github.com/StarCitizenToolBox/app.git
synced 2025-06-29 22:41:10 +08:00
feat: 42kit Nav
feat: Animation Optimization
This commit is contained in:
41
lib/ui/nav/nav_state.dart
Normal file
41
lib/ui/nav/nav_state.dart
Normal file
@ -0,0 +1,41 @@
|
||||
import 'package:freezed_annotation/freezed_annotation.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:starcitizen_doctor/api/udb.dart';
|
||||
import 'package:starcitizen_doctor/data/nav_api_data.dart';
|
||||
|
||||
part 'nav_state.freezed.dart';
|
||||
|
||||
part 'nav_state.g.dart';
|
||||
|
||||
@freezed
|
||||
class NavState with _$NavState {
|
||||
const factory NavState({
|
||||
List<NavApiDocsItemData>? items,
|
||||
@Default("") String errorInfo,
|
||||
}) = _NavState;
|
||||
}
|
||||
|
||||
@riverpod
|
||||
class Nav extends _$Nav {
|
||||
bool _mounted = true;
|
||||
|
||||
@override
|
||||
NavState build() {
|
||||
state = NavState();
|
||||
loadData(1);
|
||||
ref.onDispose(() {
|
||||
_mounted = false;
|
||||
});
|
||||
return state;
|
||||
}
|
||||
|
||||
void loadData(int pageNo) async {
|
||||
if (!_mounted) return;
|
||||
try {
|
||||
final r = await UDBNavApi.getNavItems(pageNo: pageNo);
|
||||
state = state.copyWith(items: r.docs, errorInfo: "");
|
||||
} catch (e) {
|
||||
state = state.copyWith(errorInfo: e.toString());
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user