Flutter 8

[flutter] SliverGrid SliverGridDelegateWithMaxCrossAxisExtent

maxCrossAxisExtent 컬럼의 최대 넓이로 row child 갯수 생성 SliverGrid( gridDelegate: SliverGridDelegateWithMaxCrossAxisExtent( maxCrossAxisExtent: 200, mainAxisSpacing: 1.0, crossAxisSpacing: 1.0, childAspectRatio: 2.0, ), minCrossAxisExtent이 없으므로 계산을 통해서 컬럼의 최소 넓이로 row child 갯수를 생성 double deviceWidth = MediaQuery.of(context).size.width; SliverGrid( gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( cr..

Dev/flutter 2023.03.09

[flutter] mouse point drag scroll

flutter 에서 web, windows, mac, linux(이건 테스트 못해 봄)에서는 제스쳐를 마우스로 하게 됩니다. 그런데 마우스로는 drag 시에 핸드폰에서 기대하던 터치 동작이 작동하지 않습니다. 터치와 같은 형태로 만들기 위해서는 scrollBehavior 값을 조정하여 스크롤의 동작 방식을 변경 할 수 있습니다. MaterialScrollBehavior 를 상속 받아 dragDevices 를 변경합니다. // mouse_drag_scroll_behavior.dart import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; class MouseDragScrollBehavior extends Material..

Dev/flutter 2022.12.21

[flutter] AnimatedPositioned size change Animation

AnimatedPositioned 을 사용하여 위아래로 움직이는 애니메션을 만들었는데 윈도우(?)의 크기를 조정시 좌우도 애니메이션이 발생하는 현상이 보였습니다. Row의 children의 가운데 정렬하기 위해서는 left, right 속성을 반드시 가변적으로 설정해야 하는데 이것이 애미메션으로 작동해서 위와 같은 문제가 발생하고 있다. Stack에 Center 속성 적용시 AnimatedPositioned가 적용되지 않고 AnimatedPositioned child의 Center는 적용이 되지 않는다. 그래서 찾은 방법이 Positioned + SlideTransition 이다. with SingleTickerProviderStateMixin ... late final AnimationControlle..

Dev/flutter 2022.12.07

[flutter] AnimatedPositioned repeat animation

Stack에서 AnimatedPositioned을 사용하는 경우 상태 변화를 주는 작업이 필요합니다. 아래와 같이 페이지가 로드 되면 자동으로 반복해서 애니메이션을 처리하고 싶을때 처리입니다. AnimatedPositioned( top: _ani ? -20 : -10, duration: const Duration(milliseconds: 500), curve: Curves.linear, onEnd: () { setState(() { _ani = !_ani; }); }, child: BubbleBox( width: (width! * 0.5), height: 20, ), ), OnEnd로 _ani의 값을 true, false 처리하여 애니메이션 효과를 줄 수 있지만 처음 트리거 하는 변경점이 필요합니다. f..

Dev/flutter 2022.12.05