본문 바로가기

프로그래밍/Flutter38

[Flutter] Scroll To Top 버튼 final ScrollController _scrollController = ScrollController(); void _scrollToTop() { _scrollController.animateTo(0, duration: const Duration(milliseconds: 750), curve: Curves.ease); } // ScrollView의 controller 속성에 추가 SingleChildScrollView( controller: _scrollController, ... ), // Top 버튼 in Column Padding( padding: const EdgeInsets.all(margin16), child: Align( alignment: Alignment.centerRight, ch.. 2022. 4. 17.
[Flutter] BackPress to exit int iPrevClickTime = 0; void updatePrevClickTime() => iPrevClickTime = DateTime.now().millisecondsSinceEpoch; bool clickedToExit() { int iClickTime = DateTime.now().millisecondsSinceEpoch; if(iClickTime - iPrevClickTime < 2000) { return true; } return false; } // wiget에서 WillPopScope( onWillPop: () async { if (clickedToExit()) { return true; } else { Fluttertoast.showToast('Press one more to exi.. 2022. 4. 16.
[Flutter] WebView on Web flutter Trying to load an image from another domain 웹뷰를 사용하려면 기존에 web 플랫폼을 지원하는 webviewwx 플러그인을 추가하여 사용한다. 위에서 설정한 configuration 설정도 해줘야 한다고 합니다. UrlByPass쪽에 이슈가 있는지 처음 연결을 하고 이후에 클릭을 좀 하면 막혀버린다. (web) 모바일은 정상. 버그가 있기는 한데, 소개 페이지 띄우는 정도만 사용한다면 괜찮을 듯? 2022. 4. 16.
[Flutter] Android 어플 Flutter로 실행시키기 최근에 회사에서 작업한 내용이 Android로 개발한 어플을 Flutter 환경에서 실행시키는 것을 해봤습니다. 플랫폼 별 코드 작성 앱에서 커스텀하게 플랫폼 별 코드를 작성하는 방법을 배워보세요. flutter-ko.dev MethodChannel이라는 개념을 이용하여 Flutter로 실행시킨 어플에서 바로 Android쪽 소스의 Activity를 호출하는 형태로 작업을 했습니다. Dart의 코드로 실행시켜서 버튼을 누르면(Native Call) 프로젝트의 FlutterActivity가 call을 받아서 startActivity를 통해 실질적으로 사용할 Activity를 호출합니다. 이런 식으로 처리하면, Flutter를 기반으로 실행을 시켜서 Android Native코드를 실행시킬 수 있습니다. m.. 2022. 4. 14.
[Flutter] ScrollView 처리 Toolbar 형태로 작업을 한 이후에 다른 위젯들은 Scrollable 형태가 되도록 하고 싶다. Column( children: [ Column( children: [ // wigets ]), ]), 이런 형태에서 같이 처리하려는 위젯을 Column으로 감싸서 하나의 자식으로 만든다. 이후에 SingleChildScrollView로 감싸고 그걸 다시 Expanded로 감싸면 남은 영역에 대해서 ScrollView처리가 된다. Expanded( child: SingleChildScrollView( scrollDirection: Axis.vertical, child: Column( children: [ // wigets ], ), ), ), 2022. 4. 12.
[Flutter] Dialog insetPadding /// Defaults to `EdgeInsets.symmetric(horizontal: 40.0, vertical: 24.0)`. /// {@endtemplate} final EdgeInsets? insetPadding; Dialog insetPadding 속성을 통해 숨겨진(?) 패딩값을 조절할 수 있다. 예전에 안드로이드에서 테블릿에서만 Padding 잡혀 있던 거 생각나네 ㅋㅋ 2022. 4. 10.
[Flutter] 카드에 반투명한 이미지 만들기 1. 카드에 이미지를 뛰운다. 꽉 채워서 2. 해당 카드를 반 투명하게 만든다. 3. 중간에 텍스트를 뿌린다. Container( padding: const EdgeInsets.only(left: 8, right: 8), width: double.infinity, height: 250, child: Card( child: Image.network( 'https://storep-phinf.pstatic.net/linesoft_01/original_13.gif?type=pa50_50', fit: BoxFit.fill, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(15), ), ), ), Image쪽에 0.5 alpha, colo.. 2022. 4. 9.
[Flutter] ScrollView Scroll Glow 효과 없애기 class MyBehavior extends ScrollBehavior { @override Widget buildOverscrollIndicator( BuildContext context, Widget child, ScrollableDetails details) { return child; } } MaterialApp의 속성으로 scrollBehavior가 있는데 여기에 넣어주자. https://stackoverflow.com/a/51119796/17141266 2022. 4. 9.
[Flutter] BottomSheet 확장하기 showModalBottomSheet( isScrollControlled: true, context: context, builder: (BuildContext bc) { return Wrap( children: [...] ) } ) isScrollControlled가 중요하다. 해당 속성을 주지 않으면 마진이 먹지 않는 경우가 있음. 2022. 4. 8.
[Flutter] Navigator.push() in Dialog 예를 들어 버튼을 하나 가진 Dialog가 있을 때 OK버튼을 누르면 다른 화면으로 이동하도록 처리를 해야 한다. 이런 상황에서 보통 람다함수를 받을 수 있도록 Dialog를 설계하여 버튼을 누르는 상황에서 함수를 실행할 것이다. 비슷한 처리를 하던 다른 부분에서 왜 동작이 정상적으로 이루어 졌는지 확인을 해보니 Delayed 처리가 되어 있었다. Future.delayed(const Duration(milliseconds: 1500, ), () { Navigator.of(context, rootNavigator: true).pop('dialog'); ... 중략 Navigator.push(context, MaterialPageRoute(builder: (context) => const newScreen.. 2022. 4. 7.