我正在使用 share_plus 4.0.10 来共享一串简单的代码,它可以在 Android 模拟器中运行。然而,在将应用程序发布到 testflight 进行 Beta 测试后,共享按钮似乎不起作用。它只将空投显示为共享选项,按空投不会执行任何操作。代码非常简单。 按下时:() { Share.share('id',主题:'...')}
share_plus 要求 iPad 用户提供 sharePositionOrigin 参数。
没有它,share_plus 将无法在 iPad 上运行,并可能导致崩溃或让 UI 无响应。
为了避免该问题,请提供 sharePositionOrigin。
For example:
// Use Builder to get the widget context
Builder(
builder: (BuildContext context) {
return ElevatedButton(
onPressed: () => _onShare(context),
child: const Text('Share'),
);
},
),
// _onShare method:
final box = context.findRenderObject() as RenderBox?;
await Share.share(
text,
subject: subject,
sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size,
);
请参阅示例中的 main.dart 以获取完整示例。
不太明白 sharePositionOrigin 在 Ipad 上是如何工作的,但我是这样做的:
await Share.share(
user.name,
sharePositionOrigin: Rect.fromPoints(
const Offset(2, 2), const Offset(3, 3)));
这将弹出左上角的共享对话框。仍然需要解决这个问题,但这不是我的应用程序的核心问题,所以稍后再讨论。希望这会有所帮助。
sharePositionOrigin:可以工作,但它需要一个 Rect(), 我使用了 Rect.fromCenter(),它对我有用,因为共享弹出式抽屉在 iPad 上对我不起作用,您可以尝试以下方法:
Rect origin = Rect.fromCenter(center: Offset(512, 854), width: MediaQuery.of(context).size.width, height: MediaQuery.of(context).size.width);
Share.share(
"Hey,I just found something amazing. Please take a look\n${deepLink.toString()}",sharePositionOrigin: origin,
);
希望这有帮助;-)