#flutter #dart #screenshot #socialshare
#flutter #dart #скриншот #socialshare
Вопрос:
Я не уверен, где найти дополнительный виджет, использующий тот же глобальный ключ, что и другой виджет в моем приложении. Я использую плагины Screenshot и Social Share.
https://pub.dev/packages/screenshot
https://pub.dev/packages/social_share
Я хотел бы загрузить скриншот при публикации в социальных сетях, таких как Facebook Messenger. Но я получаю следующую ошибку в своей консоли, которая возникла только после того, как я добавил контроллер скриншотов;
Flutter Multiple widgets used the same GlobalKey
Откуда у меня эта проблема? Я создал экземпляр скриншота в состоянии;
class _StageBuilderState extends State<StageBuilder> {
ScreenshotController screenshotController = ScreenshotController();
Вот сборка;
Widget createViewItem() {
return Screenshot(
controller: screenshotController,
Column(
children: <Widget>[
child: Image.network( myavatar),
child: IconButton(
icon: Icon(Icons.share),
onPressed: () async {
await screenshotController.capture().then((image) async {
SocialShare.shareOptions("http://myurl", imagePath: image.path);
}
);
},
),
],
),
),
}
Итак, где этот дополнительный виджет, использующий тот же глобальный ключ, что и что-то еще в моем приложении? С чего мне начать устранение неполадок?
Ответ №1:
Оказывается, мне пришлось сделать контроллер скриншота локальным и поместить его сюда;
Widget createViewItem() {
ScreenshotController _screenshotController = ScreenshotController();
return Screenshot(
controller: screenshotController,
Column(
children: <Widget>[
child: Image.network( myavatar),
child: IconButton(
icon: Icon(Icons.share),
onPressed: () async {
await screenshotController.capture().then((image) async {
SocialShare.shareOptions("http://myurl", imagePath: image.path);
}
);
},
),
],
),
),
}