Я пытаюсь преобразовать виджет Flutter в изображение. Но получение некоторого исключения при создании сборки выпускаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Я пытаюсь преобразовать виджет Flutter в изображение. Но получение некоторого исключения при создании сборки выпуска

Сообщение Anonymous »

Ошибка при сборке > apk сборки flutter:
E/flutter (1555): [ОШИБКА: flutter/runtime/dart_vm_initializer.cc(41)] Необработанное исключение: LateInitializationError: локальный «результат» не был инициализирован.
E/flutter (1555): #0 LateError._throwLocalNotInitialized (dart:_internal-patch/internal_patch.dart:190) E/flutter (1555): #1 RenderObject.debugNeedsPaint (пакет:flutter/src/rendering/object.dart) E/flutter (1555): #2 _HomeScreenState._capturePng (пакет:geeta_gyandhara/screens/home/home_screen.dart:48) E /flutter (1555): #3 _HomeScreenState.buildShlokaCard. (пакет:geeta_gyandhara/screens/home/home_screen.dart:169) E/flutter (1555): #4 _InkResponseState.handleTap (пакет:flutter/src/ материал/ink_well.dart:1171)
E/flutter ( 1555): #5 GestureRecouncer.invokeCallback (package:flutter/src/gestures/recouncer.dart:344) E/flutter ( 1555): #6 TapGestureRecouncer.handleTapUp (package:flutter/src/gestures/tap.dart:652)
E/flutter ( 1555): #7 BaseTapGestureRecouncer._checkUp (package:flutter) /src/gestures/tap.dart:309) E/flutter (1555): #8 BaseTapGestureRecouncer.acceptGesture (пакет:flutter/src/gestures/tap.dart:279) E/flutter (1555): #9 GestureArenaManager.sweep (пакет: flutter/src/gestures/arena.dart:167) E/flutter ( 1555): #10 GestureBinding.handleEvent (пакет: flutter/src/gestures/binding.dart:499) E/flutter ( 1555): # 11 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:475)
E/flutter ( 1555): #12 RendererBinding.dispatchEvent (package:flutter/src/rendering) /binding.dart:425) E/flutter (1555): #13 GestureBinding._handlePointerEventImmediately (пакет:flutter/src/gestures/binding.dart:420) E/flutter (1555): #14 GestureBinding.handlePointerEvent (пакет:flutter) /src/gestures/binding.dart:383)
E/flutter ( 1555): #15 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:330) E /flutter (1555): #16 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:299) E/flutter (1555): #17 _invoke1 (dart:ui/hooks.dart:328) E/flutter ( 1555): #18 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:442) E/flutter ( 1555): #19 _dispatchPointerDataPacket (dart:ui/hooks.dart:262) E/flutter ( 1555):

Код:
Этот код работает правильно в режиме отладки, но показывает исключение, когда я использую apk сборки flutter

Future _capturePng(GlobalKey key) async {
RenderRepaintBoundary? boundary =
key.currentContext!.findRenderObject() as RenderRepaintBoundary?;
if (boundary == null) {
print("Boundary is not available.");
return Future.delayed(const Duration(milliseconds: 20), () => _capturePng(key));
}

if (boundary.debugNeedsPaint) {
print("Waiting for boundary to be painted.");
await Future.delayed(const Duration(milliseconds: 20));
return _capturePng(key); // Recursively retry capturing
}

ui.Image image = await boundary.toImage(pixelRatio: 3.0);
ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png);
if (byteData == null) {
throw 'Error converting image to ByteData';
}
return byteData.buffer.asUint8List();

}


Widget buildShlokaCard(
String hindiText, String englishText, String sanskritText, img,GlobalKey key) {
return RepaintBoundary(
key: key,
child: Container(
width: MediaQuery.sizeOf(context).width.w,
decoration: BoxDecoration(
color: colorWhite,
borderRadius: BorderRadius.circular(12.r),
),
padding: EdgeInsets.symmetric(horizontal: 10.w),
margin: EdgeInsets.symmetric(horizontal: 10.0.w),
child: Stack(
children: [
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextWidget(
text: hindiText,
color: Colors.black, // Adjust color as needed
fontWeight: FontWeight.bold,
fontSize: 18.0,
textAlign: TextAlign.center,
),
heightBox(10.h),
TextWidget(
text: englishText,
color: Colors.black, // Adjust color as needed
fontWeight: FontWeight.normal,
fontSize: 16.0,
textAlign: TextAlign.center,
),
heightBox(10.h),
TextWidget(
text: sanskritText,
color: Colors.black, // Adjust color as needed
fontWeight: FontWeight.normal,
fontSize: 16.0,
textAlign: TextAlign.center,
),
],
),

Positioned(
bottom: 0,
right: 0,
child: IconButton(onPressed: (){

_capturePng(key).then((imageBytes) {
if (imageBytes != null) {
// Handle captured image bytes here (e.g., save/share/etc.)
_shareImage(imageBytes);

} else {
print('Error capturing image');
}
});
}, icon: const Icon(Icons.share),),
)

],
),
),
);
}

void _shareImage(Uint8List imageBytes) async {
try {
final tempDir = await getTemporaryDirectory();
final file = await File('${tempDir.path}/shloka_image.png').create();
await file.writeAsBytes(imageBytes);

// Create an XFile instance from the file path
final xFile = XFile(file.path);

// Share the file
await Share.shareXFiles([xFile], text: 'Check out this shloka from Bhagavad Gita!');
} catch (e) {

print('Error sharing image: $e');
}
}


Подробнее здесь: https://stackoverflow.com/questions/786 ... -exception
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»