I have an application with a form and now with a little experimental refactoring from last week 2 buttons doesn't do anything.
Logging just say "button was click " but no method is called.
The code is :
Widget build() {
///...
ElevatedButton (
onPress : genText1(),
child : Text("add text for image 1")
),
///...
}
An error is detected here in a method called by genText1()
Uint8List? genText2(int index, Uint8List image) {
final appState = Provider.of<AppState>(context, listen: false);
log.info(
"GenText2 dart method. Starting process... invoke generateText (Kotlin)",
);
log.info(
"GenText2 dart method. Starting process... Inputs : checks if not null",
);
try {
var image2 = Image.memory(image);
var width = image2.width;
var height = image2.height;
var imageBytes = image;
var imageWidth = width;
var imageHeight = height;
if (imageWidth != null && imageHeight != null) {
try {
final Map<String, dynamic> arguments = {
'image': imageBytes,
'width': imageWidth, // <-- ADD THIS
'height': imageHeight, // <-- ADD THIS
};
Future<dynamic> result = _FirstPanelState._channel.invokeMethod(
'generateText',
arguments,
);
log.info(
"GenText2 dart method. Starting process... generateText invoked (return to Dart)",
);
// Handle cases where imageBytes, imageWidth, or imageHeight might be null
result.then((value) {
if (value != null) {
var value2 = value as Uint8List;
log.info(
"GenText2 dart method. treats return value (not null...)",
);
setState(() {
switch (index) {
case 1:
log.info(
"GenText2 dart method. treats return value set textFileContent1 $value",
);
appState.textFileContent1 = value2;
break;
case 2:
log.info(
"GenText2 dart method. treats return value set textFileContent1 $value",
);
appState.textFileContent2 = value2;
break;
case 3:
log.info(
"GenText2 dart method. treats return value set textFileContent1 $value",
);
appState.textFileContent3 = value2;
break;
default:
}
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Completed with 100% no error. ')),
);
//appState.selectedImage = Image.memory(value);
});
}
}).catchError((error) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error: $error')),
);
});
} on PlatformException catch (e) {
log.severe("Failed to generate text: '${e.message}'.");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Failed to generate text. Error: $e')),
);
}
} else {
log.info("Error: imageWidth or imageHeight is null.");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error: imageWidth or imageHeight is null.')),
);
}
} on PlatformException catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Error: $e')),
);
log.fine("Platform Error Code: ${e.code}");
log.fine("Platform Error Message: ${e.message}");
log.fine(
"Platform Error Details: ${e.details}",
); // Now will be a String or a Map
// If you sent a Map, you can process it like this:
if (e.details is Map) {
final errorDetails = e.details as Map;
log.fine("Error Size: ${errorDetails["size"]}");
log.fine("Error Message: ${errorDetails["message"]}");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text( "Error Size: ${errorDetails["size"]}\nError Message: ${errorDetails["message"]}"
),
));
}
}
return null;
}
Error: imageWidth or imageHeight is null.