본문 바로가기

Language_/Flutter13

[Flutter] "취소키 방지" WillPopScope 총 정리?! [WillPopScope] App 개발을 하다보면 취소키를 막고 싶은 경우가 있을 것이다. 이럴 때, WillPopScope를 사용하면 취소키를 눌러도 뒤로 가지 않는다. 사용 방법은 간단하다. Scaffold를 WillPopScope로 감싸주면 된다. import 'package:flutter/material.dart'; void main() => runApp( MaterialApp( title: 'MyApp', home: MyApp(), ), ); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return WillPopScope( child: Scaffold( appBar: AppBar( titl.. 2020. 11. 5.
[Flutter] Error "'package:flutter/src/painting/image_resolution.dart': Failed assertion: line 136 pos 15: 'assetName != null': is not true." 오류 해결 방법 'package:flutter/src/painting/image_resolution.dart':Failed assertion: line 136 pos 15: 'assetName != null': is not true. 의 오류 해결 방안이다 .. 이전의 코드를 보면 String _path; ... ... ... _loadValue() async { SharedPreferences prefs = await SharedPreferences.getInstance(); setState(() { _path = (prefs.getString('path') ?? ''); }); } ... ... ... Widget build(BuildContext context) { return Scaffold( appBar: nu.. 2020. 10. 17.
[Flutter] Error "setState() called after dispose(): (lifecycle state: defunct, not mounted" 해결 [stackoverflow] FlutterError (setState() called after dispose(): (lifecycle state: defunct, not mounted) the error is thrown in two areas (and the app freezes (when the app is minimized, when phones back button is clicked, or when another app runs on top of the flutter app. Flutter version: 1.20.2 (pr... stackoverflow.com flutter로 개발하다 보니 위의 에러가 떠서 한 번 찾아보았다.. stackoverflow에 해결 방법이 적혀있어 기록할 겸 그적.. 2020. 10. 15.
[Flutter] Button 총 정리! "Raised, Flat, Icon, FloatingAction" 오늘은 Flutter의 Button의 종류에 대해 알아보자. 위의 예제 처럼 Button은 4가지로 나눌수 있으며 Rainsed, Flat, Icon, FloatingAction으로 나눌 수 있다. import 'package:flutter/material.dart'; void main() => runApp( MaterialApp( title: 'MyApp', home: MyApp(), ), ); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Welcome to Flutter'), ), body: Column( main.. 2020. 10. 8.
[Flutter] Bottom Navigation Bar 의 "모든 것" [Flutter] 추천 포스팅 [Flutter] Bottom App Bars의 "모든 것" [Flutter] Bottom App Bars 의 "모든 것" [Flutter] 아래에 있는 AppBar는 Bottom App Bar라고 부릅니다..! 이 BottomAppBar를 만드는 법에 대해서 알아봅시다. 우선 BottomAppBar는 Material Design 중에 하나입니다. 사용방법은 Scaffold의 속성에 있는.. security-nanglam.tistory.com import 'package:flutter/material.dart'; void main() => runApp(MaterialApp(title: 'MyApp', home: MyApp())); class MyApp extends Stat.. 2020. 9. 30.
[Flutter] Navigator & Named Route"화면 전환의 시작" [Flutter] Navigator는 앱 화면 간 이동을 구현할 때 사용한다. Navigator는 스택 개념으로 작동을 한다. 즉 Last In First Out 특징을 갖고 있는데, 만약 first screen, second screen, third screen 3개의 화면이 존재할 때, first screen - second screen - third screen으로 이동을 했다면 third screen - second screen - first screen 화면으로 나와야 한다는 의미이다. Navigator.push( context, MaterialPageRoute( builder: (context) => routeClass(), ), ); Navigator.of(context).push( Mate.. 2020. 9. 30.
[Flutter] AppBar?! AppBar의 "모든 것" [Flutter] import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Welcome to Flutter', home: Scaffold( appBar: AppBar( title: Text('Welcome to Flutter'), ), body: Center( child: Text( 'Hello World', style: TextStyle(fontSize: 30, fontFamily: 'DoHyeonRegular'), ), ), ),.. 2020. 9. 27.
[Flutter] 외부 Font 추가 및 변경 정리 "Google Font 이용" [Flutter] import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Welcome to Flutter', home: Scaffold( appBar: AppBar( title: Text('Welcome to Flutter'), ), body: Center( child: Text('Hello World', style: TextStyle(fontSize: 30)), ), ), ); } } [Flutter] 강좌 01 : Hello W.. 2020. 9. 27.
[Flutter] 이미지 추가 & "unable to load asset" 에러 해결 [Flutter] "unable to load asset" 해결 방안 - 파일명에 특수문자가 들어 있으면 사진을 못읽습니다. - pubspec.yaml 파일에 추가할때 들여쓰기 확인해야 합니다. "이미지 추가" 방법 우선 이미지 파일을 프로젝트 폴더의 images 폴더에 넣습니다. images 폴더가 없으면 새로 만들어 줍시다. pubspec.yaml 파일을 수정해야 합니다.. 위처럼 - images/ 경로를 assets 밑에 추가하면 됩니다. flutter: [2 띄어쓰기 or 1 탭]assets: [4 띄어쓰기 or 2 탭]- images/ 띄어쓰기 구분을 안 해주면 경로를 못 읽습니다. pubspec.yaml 파일 수정 후에는 명령어를 실행해야 합니다. (VScode에서는 자동적으로 해줍니다.) f.. 2020. 9. 27.
[Flutter] StatelessWidget & StatefulWidget 차이점 정리 Flutter의 Widget은 StatelessWidget(SLW)과 StatefulWidget(SFW)을 상속받아서 만들 수 있다. 또한, 두 위젯은 Scaffold를 이용해 동일한 방식으로 화면을 구성하게 된다. StatelessWidget은 단 한번만 Build를 한다. 한번 그려진 화면은 계속 유지되며, 성능상 장점이 생긴다. StatefulWidget은 state를 포함하며, setState가 발생할때마다 Build과정이 일어나고, 동적 화면을 쉽게 구현이 가능하다. 밑의 예제를 보고 차이점을 확실하게 알아가자. import 'package:flutter/material.dart'; void main() => runApp(SLWApp()); class SLWApp extends Stateless.. 2020. 9. 26.
[Flutter] 강좌 01 : Hello World 출력하기 Flutter를 이용하여 Hello Flutter World를 화면에 띄어보자. 처음에 Flutter의 New Project를 만들면 이런식으로 main.dart에 많은 글이 있을텐데.. 모두 다 지우자 ! 그리고 아래의 코드를 붙여넣기 하자. import 'package:flutter/material.dart'; void main() => runApp( MaterialApp( title: 'MyApp', home: MyApp(), ), ); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Welcome to Flutte.. 2020. 9. 26.
[Flutter] Flutter 개발시 유용한 사이트 "Pub.dev" pub.dev/ Dart packages Pub is the package manager for the Dart programming language, containing reusable libraries & packages for Flutter, AngularDart, and general Dart programs. pub.dev Search Packages에 원하는 플러그인을 검색하면 다른 사람들이 개발한 것들을 볼 수 있다. 예를 들어 sensor에 대해 검색을 해보자. 위와 같이 sensor에 관련된 플러그인들을 볼 수 있다. Usage를 참고하여 사용 방법에 대해 배울 수도 있으며 예제를 통하여 어떻게 사용하는지도 배울 수 있다. Flutter를 이용하여 개발을 할 때 위의 사이트를 이용하면 유.. 2020. 9. 26.
[Flutter] 디버깅시 앱이 실행 안될때 "Unable to locate ADB 에러" + 환경 변수 편집 VScode에서 Flutter와 에뮬레이터를 다 구축하고 디버깅을 하니 실행이 안 되는 현상이 있었다.. VScode를 잘못 설치한거 같아 AndroidStudio에서 진행을 해봤지만 똑같이 디버깅이 안 되는 현상이 나왔다.. 그리고 AndroidStudio에서는 Unable to locate ADB 라는 에러가 나왔다. Unable to locate ADB를 검색을 해보니 platform-tools 폴더에 adb.exe가 없거나, 환경변수 설정이 제대로 안되어 있을 때 나오는 에러였다. [다운로드] platform-tools SDK 플랫폼 도구 출시 노트 | Android 개발자 | Android Developers Android SDK 플랫폼 도구는 Android SDK의 구성요소입니다. develo.. 2020. 9. 26.