본문 바로가기

분류 전체보기127

같은 행동을 반복하면서 더 나은 미래가 오길 바란다. 잠이 안 올 때 어떻게 해야 하는지 난 이미 알고 있다. 일어나서 책을 읽든지, 일을 하든지 하면 된다. 하지만 난 유튜브에서 봤던 잠이 오지 않을 때 절대 하면 안 되는 행동들만 골라서 한다. 잠이 안 오면 그냥 누워있지 말라고 했는데 나는 계속 누워 있는다. 스마트폰만은 절대로 보지 마라고 했는데 난 결국 스마트폰을 본다. 누워 있는 것도 편하게 누워 있느냐? 그것도 아니다. 보통 좀 춥든 덥든 아니면 자세가 좀 불편하든 약간은 불편한 게 있는데 그냥 참고 있는다. 잠을 희생한 대신 스마트폰으로 엄청나게 재밌는 영상을 보거나 하는 것도 아니다. 그냥 멍하니 슬롯머신에서 잭팟이 터지길 바라는 도박 중독자마냥 반복적으로 스크롤을 내릴 뿐이다. 이 정도면 제발 잠이 오질 말라고 굿을 한바탕 벌이는 수준이다.. 2023. 10. 10.
명상 요즘은 감정에 쉽게 휩싸이지 않는다는 생각이 많이 든다. 예전에는 한 번 예전의 일을 떠올리면 길게는 며칠동안 그 분노, 슬픔, 후회 기타등등의 감정에 매몰되는 경우가 심심치 않았는데 요즘은 안 그런다. 예전의 일이 아예 떠오르지 않는 건 아니다. 하루에도 몇 번씩 찾아올 때가 있는데, 그럴 때마다 피어나는 감정들이 매우 빠르게 사라지고 평정이 오는 게 명확히 느껴진다. 이 평정을 어떻게 표현해야 하나 고심이 많았는데 뭔가 머릿속에서 편안한 느낌이 확장되는 느낌? 아니다 그 종착지는 명상 당시 느끼던 몸 상태와 감정이었다. 글 쓰면서도 뭔 소린가 싶은데 어쨌든 쉽게 말해 부정적인 감정을 자극하는 기억이 머릿속에서 떠오를 때면 빠르게 명상할 때의 상태로 진입하는 것 같다. 최근 들어 명상을 자주 했던 게 .. 2023. 10. 9.
[Error] No MaterialLocalizations found - MyApp widgets require MaterialLocalizations to be provided by a Localizations widget ancestor 이런 식으로 동작하는 팝업창 연습용 앱을 만들기 위해서 이런 식으로 코드를 짰다. void main() => runApp(MyHomePage()); class MyHomePage extends StatefulWidget { const MyHomePage({super.key}); @override State createState() => _MyHomePageState(); } class _MyHomePageState extends State { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text("Test Title"), ), body: Contain.. 2023. 10. 9.
[tip] 자동으로 코드 정리하기 코드를 짜다 보면 추가했다 지웠다 다시 추가했다 지웠다 이런 식으로 하게 되는 경우가 잦은데 그렇게 되면 십중팔구 코드가 난장판이 된다. 그럴 땐 아주 간단하게 상단의 Code 메뉴를 클릭한 후 Reformat Code with 'dart.format' 기능을 클릭해주면 아주 편리하게 자동으로 코드를 정리해준다. 2023. 10. 9.
[tip]statefulwidget statefulessWidget 쉽게 초기화하기 android studio에서 stful 치고 엔터 누르면 기본형이 나온다. stless도 마찬가지 2023. 10. 9.
[Error]A value of type 'Null' can't be assigned to a parameter of type 'String' in a const constructor. class CakeTimerUI extends StatefulWidget { final int value2; //const CakeTimerUI({super.key, required this.value2}); const CakeTimerUI({Key? key, required this.value2}) : super(key: key); @override CakeTimerState createState() => CakeTimerState(); } class CakeTimerState extends State { @override Widget build(BuildContext context) { return const Center( child: SingleChildScrollView( child: Column.. 2023. 10. 9.
sharedpreference 기능 적용하기 현재 문제점 sharedpreference에 오직 하나의 imagepath만 등록되어 있다보니 6개 영역 전체가 똑같은 사진이 나와버린다. MyappState -> tmpWidget -> cakeTimerUI -> TimerFunction 순으로 클래스가 계속 호출되는데 그렇다면 tmpWidget이 생성될 때 번호를 매겨서 TimerFunction에 전달하는 수밖엔 없다. MyappState에서 tmpWidget이 호출될 때 번호를 하나씩 부여받는다. 1, 2, 3, 4, 5, 6 그리고 이 번호를 클래스가 호출될 때마다 순차적으로 아래로 전달한다. 그러려면 생성자에 대해서 공부해야 된다 StatefulWidget에서 StatelessWidget으로 인자를 전달하는 건 쉽게 됐다. 그런데 Stateles.. 2023. 10. 8.
생성자(Constructor) 클래스에서 클래스로 인자값을 전달해야 할 필요가 생겼는데 생성자를 공부하지 않고는 도저히 할 수가 없을 것 같다. 1. 생성자란? 클래스는 자동차 설계도로 비유될 수 있고, 인스턴스(객체)는 실제 자동차로 비유될 수 있는데, 생성자는 자동차 공장의 생산 라인으로 비유될 수 있다. 고객들이 자동차를 주문할 때는 서로 제각기 다른 옵션을 넣어 주문한다. 그러면, 그때그때 주문에 따라 새로운 설계도를 제작해서 자동차를 제작하는 건 너무 비효율적이다. 기본적인 자동차 설계도는 하나로 유지하되 생산 라인에서 필요에 따라 이 기능은 넣었다가, 저 기능은 추가했다가 하는 것이 훨씬 효율적이라고 볼 수 있을 텐데 생성자가 그러한 역할을 한다. 2. 생성자의 종류 기본 생성자(Default Constructor)와 명명.. 2023. 10. 8.
[Error] 예외가 발생했습니다. _TypeError (type '_File' is not a subtype of type 'CroppedFile?' in type cast) SharedPreferences를 통해 _croppedFile에 저장된 현재 화면에 표시된 이미지가 앱을 껐다가 켠 후에도 그대로 표시되도록 하는 기능을 구현 중에 마주친 에러다. 어쩐지, 앱을 껐다가 다시 켜면 아무것도 안 보이더라. 앱이 실행되는 순간 initState 메서드로 _loadImage 메서드를 호출해서 _croppedFile에 Sharedpreference에 저장된 이미지를 불러오는 것이 목표지만 사진에서 볼 수 있듯 그 부분이 제대로 작동하지 않는 것 같다. 일단 _TypeError (type '_File' is not a subtype of type 'CroppedFile?' in type cast) 이 에러의 의미는 '_File'이 'CroppedFile?'의 서브타입이 아니기 때문.. 2023. 10. 6.
[개념] 변수 앞에 붙는 underbar 현재 이 파일 내에서만 사용할 수 있다는 즉, private 변수라는 의미이다. 그러나 딱히 dart에서는 관련 기능을 지원하는 건 아니고 그냥 관례적으로 쓰이는 의미다. 2023. 10. 6.