Responsiveness added to ToolCalling code

This commit is contained in:
Manas Hejmadi
2025-08-31 01:01:28 +05:30
parent 6ba0b9181c
commit cc91cdcf12
3 changed files with 103 additions and 51 deletions

View File

@@ -98,6 +98,7 @@ class _GenerateToolDialogState extends ConsumerState<GenerateToolDialog> {
try { try {
setState(() { setState(() {
generatedToolCode = null; generatedToolCode = null;
index = 1;
}); });
final res = await generateAPIToolUsingRequestData( final res = await generateAPIToolUsingRequestData(
ref: ref, ref: ref,
@@ -108,6 +109,7 @@ class _GenerateToolDialogState extends ConsumerState<GenerateToolDialog> {
if (res == null) { if (res == null) {
setState(() { setState(() {
generatedToolCode = ''; generatedToolCode = '';
index = 0;
}); });
ScaffoldMessenger.of(context).showSnackBar(SnackBar( ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text( content: Text(
@@ -120,8 +122,12 @@ class _GenerateToolDialogState extends ConsumerState<GenerateToolDialog> {
} }
setState(() { setState(() {
generatedToolCode = res; generatedToolCode = res;
index = 1;
}); });
} catch (e) { } catch (e) {
setState(() {
index = 0;
});
String errMsg = 'Unexpected Error Occured'; String errMsg = 'Unexpected Error Occured';
if (e.toString().contains('NO_DEFAULT_LLM')) { if (e.toString().contains('NO_DEFAULT_LLM')) {
errMsg = "Please Select Default AI Model in Settings"; errMsg = "Please Select Default AI Model in Settings";
@@ -139,26 +145,65 @@ class _GenerateToolDialogState extends ConsumerState<GenerateToolDialog> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Container( return LayoutBuilder(builder: (context, constraints) {
height: 600, final dialogWidth = constraints.maxWidth;
width: MediaQuery.of(context).size.width * 0.8, final isExpandedWindow = dialogWidth > WindowWidth.expanded.value;
child: Row( final isLargeWindow = dialogWidth > WindowWidth.large.value;
children: [ final isExtraLargeWindow = dialogWidth > WindowWidth.large.value;
Expanded(child: ToolRequirementSelectorPage(
onGenerateCallback: (agent, lang) { if (isExtraLargeWindow || isLargeWindow || isExpandedWindow) {
setState(() { return Container(
selectedLanguage = lang; height: 600,
selectedAgent = agent; width: MediaQuery.of(context).size.width * 0.8,
}); child: Row(
generateAPITool(); children: [
}, Flexible(
)), flex: 2,
GeneratedToolCodeCopyPage( child: ToolRequirementSelectorPage(
toolCode: generatedToolCode, onGenerateCallback: (agent, lang) {
language: selectedLanguage.trim(), setState(() {
selectedLanguage = lang;
selectedAgent = agent;
});
generateAPITool();
},
)),
Expanded(
flex: 3,
child: GeneratedToolCodeCopyPage(
toolCode: generatedToolCode,
language: selectedLanguage.trim(),
),
),
],
), ),
], );
), } else {
); return Container(
height: 600,
// width: MediaQuery.of(context).size.width * 0.8,
child: IndexedStack(
index: index,
children: [
Center(
child: ToolRequirementSelectorPage(
onGenerateCallback: (agent, lang) {
setState(() {
selectedLanguage = lang;
selectedAgent = agent;
});
generateAPITool();
},
),
),
GeneratedToolCodeCopyPage(
toolCode: generatedToolCode,
language: selectedLanguage.trim(),
),
],
),
);
}
});
} }
} }

View File

@@ -38,7 +38,6 @@ class GeneratedToolCodeCopyPage extends StatelessWidget {
return Container( return Container(
color: const Color.fromARGB(26, 123, 123, 123), color: const Color.fromARGB(26, 123, 123, 123),
padding: EdgeInsets.all(20), padding: EdgeInsets.all(20),
width: MediaQuery.of(context).size.width * 0.50,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [

View File

@@ -39,11 +39,12 @@ class _ToolRequirementSelectorPageState
final lightMode = Theme.of(context).brightness == Brightness.light; final lightMode = Theme.of(context).brightness == Brightness.light;
return Container( return Container(
width: MediaQuery.of(context).size.width * 0.4, // Large dialog constraints: BoxConstraints.expand(),
padding: EdgeInsets.all(30), padding: EdgeInsets.all(30),
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Text( Text(
"Generate API Tool", "Generate API Tool",
@@ -124,7 +125,11 @@ class _ToolRequirementSelectorPageState
isOutlined: true, isOutlined: true,
), ),
kVSpacer20, kVSpacer20,
Row( Wrap(
runSpacing: 10,
alignment: WrapAlignment.center,
runAlignment: WrapAlignment.center,
// mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
FilledButton.tonalIcon( FilledButton.tonalIcon(
style: FilledButton.styleFrom( style: FilledButton.styleFrom(
@@ -161,34 +166,37 @@ class DefaultLLModelSelectorWidget extends ConsumerWidget {
final settings = ref.watch(settingsProvider); final settings = ref.watch(settingsProvider);
return Opacity( return Opacity(
opacity: 0.8, opacity: 0.8,
child: Row( child: Container(
children: [ width: 200,
Padding( child: Row(
padding: EdgeInsets.only(left: 3), children: [
child: Text( Padding(
"with", padding: EdgeInsets.only(left: 3),
style: TextStyle( child: Text(
color: Theme.of(context).brightness == Brightness.light "with",
? Colors.black54 style: TextStyle(
: Colors.white60, color: Theme.of(context).brightness == Brightness.light
fontSize: 15), ? Colors.black54
: Colors.white60,
fontSize: 15),
),
), ),
), SizedBox(width: 5),
SizedBox(width: 5), AIModelSelectorButton(
AIModelSelectorButton( aiRequestModel:
aiRequestModel: AIRequestModel.fromJson(settings.defaultAIModel ?? {}),
AIRequestModel.fromJson(settings.defaultAIModel ?? {}), onModelUpdated: (d) {
onModelUpdated: (d) { ref.read(settingsProvider.notifier).update(
ref.read(settingsProvider.notifier).update( defaultAIModel: d.copyWith(
defaultAIModel: d.copyWith( modelConfigs: [],
modelConfigs: [], stream: null,
stream: null, systemPrompt: '',
systemPrompt: '', userPrompt: '').toJson());
userPrompt: '').toJson()); },
}, ),
), kVSpacer5,
kVSpacer5, ],
], ),
), ),
); );
} }