flutter로 iOS 어플을 발행하려고 하는데 'Share' 기능이 동작을 안하는 문제가 발생했다. Share 기능을 실행하면 아래처럼 에러를 뿌리기만 하고 Share 프로그램 목록 창이 올라오질 않는 문제이다.
(
"<NSLayoutConstraint:0x6000006d9310 LPLinkView:0x7fbbdbd2a840.leading == UILayoutGuide:0x600001c61340'UIViewLayoutMarginsGuide'.leading (active)>",
"<NSLayoutConstraint:0x6000006d9b80 H:[LPLinkView:0x7fbbdbd2a840]-(59)-| (active, names: '|':_UIActivityContentTitleView:0x7fbbdbd06c40 )>",
"<NSLayoutConstraint:0x6000006ad4f0 H:|-(0)-[_UIActivityContentTitleView:0x7fbbdbd06c40] (active, names: '|':_UINavigationBarContentView:0x7fbbdbe54140 )>",
"<NSLayoutConstraint:0x6000006ad540 _UIActivityContentTitleView:0x7fbbdbd06c40.trailing == _UINavigationBarContentView:0x7fbbdbe54140.trailing (active)>",
"<NSLayoutConstraint:0x6000006ae8a0 'UIView-Encapsulated-Layout-Width' _UINavigationBarContentView:0x7fbbdbe54140.width == 0 (active)>",
"<NSLayoutConstraint:0x6000006d9d10 'UIView-leftMargin-guide-constraint' H:|-(16)-[UILayoutGuide:0x600001c61340'UIViewLayoutMarginsGuide'](LTR) (active, names: '|':_UIActivityContentTitleView:0x7fbbdbd06c40 )>"
)
특이한 점은 iPhone 에서는 동작을 잘하는데 iPad에서만 문제가 발생했다. (iPhone 만 테스트해서는 안되려나 보다. ㅠ_ㅠ)
구글에서 검색을 해보니 아래처럼 나와 비슷한 문제를 겪은 사람들이 많이 있는 것을 알 수 있었다.
문제는 sharePositionOrigin을 적용하지 않아서 발생하고 있었다.
The optional sharePositionOrigin
parameter can be used to specify a global origin rect for the share sheet to popover from on iPads. It has no effect on non-iPads.
이를 적용하는 방법은 몇 가지가 있는데 내가 사용한 방법은 아래와 같다.
final Size size = MediaQuery.of(context).size;
......
onPressed: () => Share.share(
message,
sharePositionOrigin: Rect.fromLTWH(0, 0, size.width, size.height / 2),
),
이제 iPhone, iPad 양쪽에서 모두 동작이 잘된다. 문제 해결!
flutter로 iOS 개발할 때 iPad에서 Share 기능이 동작하지 않는 문제 해결
Reviewed by John.P
on
8월 12, 2020
Rating:
댓글 없음: