2016-12-13 1 views
4

나는 전체 너비 카드의 중간에 다른 하나가 약간 겹쳐있는 두 개의 버튼을 표시하도록 UI를 표시하려고합니다. Stack은 위치가 지정되지 않은 자식만큼만 넓기 때문에 Double.INIFINITY 폭을 가진 SizedBox의 위치가 지정되지 않은 자식을 추가하여 버튼을 배치 할 캔버스를 만들었지 만 배치 할 항목을 모르겠습니다. SizedBox 높이로 이상적으로,이 위젯은 사용자가 전화 또는 태블릿에 상관없이 적절하게 크기를 지정하기 때문에 번호를 하드 코딩하는 대신 현재 크기의 SizedBox 높이를 기반으로합니다.기존 위젯의 크기를 가져 오는 방법이 있습니까?

주어진 기존 위젯의 크기를 찾는 방법이 있습니까? 그렇지 않은 경우 여러 화면 크기에서 잘보아야하는 객체의 높이를 결정하는 방법은 무엇입니까?

예제 코드 :

new Card(
    child: new Stack(
    children: <Widget>[ 
     new SizedBox(
     width: double.INFINITY, 
    ), 
     new Positioned(
     left: 1.0, 
     child: getButtonOne(), 
    ), 
     new Positioned(
     right: 1.0, 
     child: getButtonTwo(), 
    ), 
    ], 
), 
), 
+0

원하는 효과를 얻는 더 좋은 방법은 스택을 전혀 사용하지 않고 2 개의 버튼이있는 행만 겹친 버튼을 변형 속성으로 "new Matrix4.translationValues ​​(- 30.0, 0.0, 0.0) "하지만 원래 질문에 대한 대답에 대해서는 여전히 궁금합니다. – Reagankm

+0

안녕하세요! 실제로 자신의 질문에 대답 할 수 있습니다. 답변을 찾은 경우 답변으로 추가하십시오. 위의 의견보다 쉽게 ​​찾을 수 있습니다 :) –

+0

앞으로 나올 것입니다. 내 의견은 위젯 크기를 얻는 방법에 대한 내 질문에 대한 대답이 아니므로, 나는 단지 주석으로 표시했습니다. – Reagankm

답변

4

짧은 대답 때문에 그들이 크기를하지 않아도 위젯이 아직 배치되지 않은 빌드 기능시, no입니다.

더 긴 대답은 사용자 지정 레이아웃 작성기를 사용할 수 있지만 사용자 지정 레이아웃 작성기를 사용할 수 있다는 것입니다.하지만 사용자 지정 레이아웃 작성기를 사용하면 사용자 지정 레이아웃 작성기를 사용하여 자신의 크기를 조정할 수 없으므로 도움이되지 않습니다. 다음 단계는 사용자 정의 렌더링 객체를 직접 작성하는 것입니다.이 객체는 스택 및 행 및 열 등이 실제로 무엇인지 직접 정의합니다. 그런 다음 레이아웃과 관련하여 원하는 모든 작업을 수행 할 수 있습니다.