genai: Fixed ModelSelector InkWell Bleed & made it visible in History

This commit is contained in:
Manas Hejmadi
2025-08-16 16:02:34 +05:30
parent 30075a6d95
commit db326b434a
3 changed files with 63 additions and 44 deletions

View File

@@ -1,3 +1,4 @@
import 'package:apidash/screens/home_page/editor_pane/url_card.dart';
import 'package:apidash_core/apidash_core.dart'; import 'package:apidash_core/apidash_core.dart';
import 'package:apidash_design_system/apidash_design_system.dart'; import 'package:apidash_design_system/apidash_design_system.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -58,6 +59,12 @@ class HistoryURLCard extends StatelessWidget {
), ),
isCompact ? kHSpacer10 : kHSpacer20, isCompact ? kHSpacer10 : kHSpacer20,
], ],
if (apiType == APIType.ai) ...[
AIProviderSelector(
readOnlyModel: historyRequestModel?.aiRequestModel,
),
SizedBox(width: 20),
],
Expanded( Expanded(
child: ReadOnlyTextField( child: ReadOnlyTextField(
initialValue: url, initialValue: url,

View File

@@ -4,17 +4,21 @@ import 'package:flutter/material.dart';
class DefaultLLMSelectorButton extends StatelessWidget { class DefaultLLMSelectorButton extends StatelessWidget {
final LLMSaveObject? defaultLLM; final LLMSaveObject? defaultLLM;
final bool readonly;
final Function(LLMSaveObject) onDefaultLLMUpdated; final Function(LLMSaveObject) onDefaultLLMUpdated;
const DefaultLLMSelectorButton({ const DefaultLLMSelectorButton({
super.key, super.key,
this.defaultLLM, this.defaultLLM,
this.readonly = false,
required this.onDefaultLLMUpdated, required this.onDefaultLLMUpdated,
}); });
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ElevatedButton( return ElevatedButton(
onPressed: () async { onPressed: readonly
? null
: () async {
final saveObject = await showDialog( final saveObject = await showDialog(
context: context, context: context,
builder: (context) { builder: (context) {
@@ -171,7 +175,10 @@ class _DefaultLLMSelectorDialogState extends State<DefaultLLMSelectorDialog> {
borderRadius: BorderRadius.circular(10), borderRadius: BorderRadius.circular(10),
color: const Color.fromARGB(27, 0, 0, 0), color: const Color.fromARGB(27, 0, 0, 0),
), ),
child: Material(
color: Colors.transparent,
child: SingleChildScrollView( child: SingleChildScrollView(
clipBehavior: Clip.hardEdge,
child: Column( child: Column(
children: [ children: [
...selectedLLMProvider.models.map( ...selectedLLMProvider.models.map(
@@ -205,6 +212,7 @@ class _DefaultLLMSelectorDialogState extends State<DefaultLLMSelectorDialog> {
), ),
), ),
), ),
),
kVSpacer10, kVSpacer10,
Align( Align(
alignment: Alignment.centerRight, alignment: Alignment.centerRight,

View File

@@ -171,15 +171,18 @@ class SendRequestButton extends ConsumerWidget {
} }
class AIProviderSelector extends ConsumerWidget { class AIProviderSelector extends ConsumerWidget {
final AIRequestModel? readOnlyModel;
const AIProviderSelector({ const AIProviderSelector({
super.key, super.key,
this.readOnlyModel,
}); });
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final selectedId = ref.watch(selectedIdStateProvider); final selectedId = ref.watch(selectedIdStateProvider);
final req = ref.watch(collectionStateNotifierProvider)![selectedId]!; final req = ref.watch(collectionStateNotifierProvider)![selectedId]!;
AIRequestModel? aiRequestModel = req.aiRequestModel; AIRequestModel? aiRequestModel = readOnlyModel ?? req.aiRequestModel;
if (aiRequestModel == null) { if (aiRequestModel == null) {
return Container(); return Container();
@@ -194,6 +197,7 @@ class AIProviderSelector extends ConsumerWidget {
); );
return DefaultLLMSelectorButton( return DefaultLLMSelectorButton(
readonly: (readOnlyModel != null),
key: ValueKey(ref.watch(selectedIdStateProvider)), key: ValueKey(ref.watch(selectedIdStateProvider)),
defaultLLM: defaultLLMSO, defaultLLM: defaultLLMSO,
onDefaultLLMUpdated: (llmso) { onDefaultLLMUpdated: (llmso) {