flutter로 iOS 개발할 때 iPad에서 Share 기능이 동작하지 않는 문제 해결



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 기능이 동작하지 않는 문제 해결 flutter로 iOS 개발할 때 iPad에서 Share 기능이 동작하지 않는 문제 해결 Reviewed by John.P on 8월 12, 2020 Rating: 5

댓글 없음:

Powered by Blogger.