fix: click two times to enable local ai

This commit is contained in:
Nathan 2025-04-22 10:13:24 +08:00
parent 530e076838
commit 40c1ae1d38
2 changed files with 19 additions and 16 deletions

View file

@ -30,6 +30,10 @@ class LocalAiPluginBloc extends Bloc<LocalAiPluginEvent, LocalAiPluginState> {
LocalAiPluginEvent event,
Emitter<LocalAiPluginState> emit,
) async {
if (isClosed) {
return;
}
await event.when(
didReceiveAiState: (aiState) {
emit(
@ -54,7 +58,9 @@ class LocalAiPluginBloc extends Bloc<LocalAiPluginEvent, LocalAiPluginState> {
emit(LocalAiPluginState.loading());
await AIEventToggleLocalAI().send().fold(
(aiState) {
add(LocalAiPluginEvent.didReceiveAiState(aiState));
if (!isClosed) {
add(LocalAiPluginEvent.didReceiveAiState(aiState));
}
},
Log.error,
);
@ -69,10 +75,14 @@ class LocalAiPluginBloc extends Bloc<LocalAiPluginEvent, LocalAiPluginState> {
void _startListening() {
listener.start(
stateCallback: (pluginState) {
add(LocalAiPluginEvent.didReceiveAiState(pluginState));
if (!isClosed) {
add(LocalAiPluginEvent.didReceiveAiState(pluginState));
}
},
resourceCallback: (data) {
add(LocalAiPluginEvent.didReceiveLackOfResources(data));
if (!isClosed) {
add(LocalAiPluginEvent.didReceiveLackOfResources(data));
}
},
);
}
@ -80,7 +90,9 @@ class LocalAiPluginBloc extends Bloc<LocalAiPluginEvent, LocalAiPluginState> {
void _getLocalAiState() {
AIEventGetLocalAIState().send().fold(
(aiState) {
add(LocalAiPluginEvent.didReceiveAiState(aiState));
if (!isClosed) {
add(LocalAiPluginEvent.didReceiveAiState(aiState));
}
},
Log.error,
);

View file

@ -47,7 +47,6 @@ class _LocalAISettingState extends State<LocalAISetting> {
),
header: LocalAiSettingHeader(
isEnabled: state.isEnabled,
isToggleable: state is ReadyLocalAiPluginState,
),
collapsed: const SizedBox.shrink(),
expanded: Padding(
@ -65,11 +64,9 @@ class LocalAiSettingHeader extends StatelessWidget {
const LocalAiSettingHeader({
super.key,
required this.isEnabled,
required this.isToggleable,
});
final bool isEnabled;
final bool isToggleable;
@override
Widget build(BuildContext context) {
@ -91,15 +88,9 @@ class LocalAiSettingHeader extends StatelessWidget {
],
),
),
IgnorePointer(
ignoring: !isToggleable,
child: Opacity(
opacity: isToggleable ? 1 : 0.5,
child: Toggle(
value: isEnabled,
onChanged: (_) => _onToggleChanged(context),
),
),
Toggle(
value: isEnabled,
onChanged: (_) => _onToggleChanged(context),
),
],
);