<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>dean_w.log</title>
        <link>https://velog.io/</link>
        <description>딘딘딘</description>
        <lastBuildDate>Fri, 29 Dec 2023 09:20:31 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>dean_w.log</title>
            <url>https://velog.velcdn.com/images/dean_w/profile/e210cc57-599d-467a-a946-cd96ab4a3d0c/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. dean_w.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/dean_w" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[dart 외부 패키지 import 오류]]></title>
            <link>https://velog.io/@dean_w/dart-%EC%99%B8%EB%B6%80-%ED%8C%A8%ED%82%A4%EC%A7%80-import-%EC%98%A4%EB%A5%98</link>
            <guid>https://velog.io/@dean_w/dart-%EC%99%B8%EB%B6%80-%ED%8C%A8%ED%82%A4%EC%A7%80-import-%EC%98%A4%EB%A5%98</guid>
            <pubDate>Fri, 29 Dec 2023 09:20:31 GMT</pubDate>
            <description><![CDATA[<h3 id="오류-내용">오류 내용</h3>
<p>외부 라이브러리 의존성 설정해도 import 시 </p>
<pre><code>Target of URI doesn&#39;t exist: &#39;package:syncfusion_flutter_calendar/calendar.dart&#39;</code></pre><p>오류 발생,
import 코딩 시 notification에서 <del>/.pub-cache/hosted/pub.dev/</del> : persmission denied 발생</p>
<hr>
<h3 id="원인">원인</h3>
<p>pub.dev 툴 권한 없음</p>
<hr>
<h3 id="해결">해결</h3>
<pre><code class="language-bash">sudo chown -R ~/.pub-cache/hosted/pub.dev</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[안드로이드 스튜디오에서 dart 빨간줄 안보일 때]]></title>
            <link>https://velog.io/@dean_w/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8A%A4%ED%8A%9C%EB%94%94%EC%98%A4%EC%97%90%EC%84%9C-dart-%EB%B9%A8%EA%B0%84%EC%A4%84-%EC%95%88%EB%B3%B4%EC%9D%BC-%EB%95%8C</link>
            <guid>https://velog.io/@dean_w/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8A%A4%ED%8A%9C%EB%94%94%EC%98%A4%EC%97%90%EC%84%9C-dart-%EB%B9%A8%EA%B0%84%EC%A4%84-%EC%95%88%EB%B3%B4%EC%9D%BC-%EB%95%8C</guid>
            <pubDate>Fri, 29 Dec 2023 08:08:27 GMT</pubDate>
            <description><![CDATA[<h3 id="오류">오류</h3>
<p>android studio로 dart 파일 작성 중
구문오류 있을 때 Red line 없음.</p>
<hr>
<h3 id="원인">원인</h3>
<p>설정 누락</p>
<hr>
<h3 id="해결">해결</h3>
<p>dart Analysis &gt; setting &gt; &quot;Scrope analysis to the current package&quot; 체크
<img src="blob:https://velog.io/48c636f9-fad1-4d7d-be31-334bb9f0d719" alt="업로드중.."></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[cocoapods 설치 오류 시]]></title>
            <link>https://velog.io/@dean_w/cocoapods-%EC%84%A4%EC%B9%98-%EC%98%A4%EB%A5%98-%EC%8B%9C</link>
            <guid>https://velog.io/@dean_w/cocoapods-%EC%84%A4%EC%B9%98-%EC%98%A4%EB%A5%98-%EC%8B%9C</guid>
            <pubDate>Fri, 29 Dec 2023 07:45:14 GMT</pubDate>
            <description><![CDATA[<h3 id="오류-내용">오류 내용</h3>
<pre><code class="language-bash">zsh% flutter doctor -v
&quot;    ✗ CocoaPods installed but not working.
        You appear to have CocoaPods installed but it is not working.
        This can happen if the version of Ruby that CocoaPods was installed with is different from the one being used to invoke it.
        This can usually be fixed by re-installing CocoaPods.
      To re-install see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
&quot;</code></pre>
<hr>
<h3 id="원인">원인</h3>
<pre><code>cocoapods 설치 오류</code></pre><hr>
<h3 id="해결">해결</h3>
<p>rvm 설치하여 해결</p>
<pre><code class="language-bash">curl -L https://get.rvm.io | bash -r stable
export PATH=${PATH}:{rvm설치경로}
/bin/bash --login
rvm install ruby-2.6.5
rvm use ruby-2.6.5
rvm --default use 2.6.5
sudo gem install cocoapods</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[하단 네비게이션 바]]></title>
            <link>https://velog.io/@dean_w/%ED%95%98%EB%8B%A8-%EB%84%A4%EB%B9%84%EA%B2%8C%EC%9D%B4%ED%84%B0-%EB%B0%94</link>
            <guid>https://velog.io/@dean_w/%ED%95%98%EB%8B%A8-%EB%84%A4%EB%B9%84%EA%B2%8C%EC%9D%B4%ED%84%B0-%EB%B0%94</guid>
            <pubDate>Tue, 26 Dec 2023 07:09:52 GMT</pubDate>
            <description><![CDATA[<ol>
<li><p>변수 선언 및 class에 with 세팅</p>
<pre><code class="language-dart">class _MyApp extends State&lt;MyApp&gt; with SingleTickerProviderStateMixin{
 TabController? _tabController;
 int _selectedTabIndex = 0;
}</code></pre>
</li>
<li><p>초기화 밑 dispose</p>
<pre><code class="language-dart">@override
void initState(){
 super.initState();
 _tabContoller = TabController(length: 3, vsync: this); //컨트롤러 초기화 
 _tabController!.addListner(
     () =&gt; setState(
         ()=&gt; _selectedTabInxex = _tabContoller!.index
         ) //setState
      ); //addListner
}
</code></pre>
</li>
</ol>
<p>@override
void dispose(){
    _tabController?.dispose();
    super.dispose();
}</p>
<p>```</p>
<ol start="3">
<li>구현
```dart
@override
Widget build(BuildContext context){
 return Scaffold(<pre><code> bottomNavigationBar: SizedBox(
     height: 70,
     child: TabBar(
         controller: _tabController, //컨트롤러 맵핑
         tabs: const &lt;Widget&gt;[
             Tab(icon: Icon(
                         Icons.person,
                         color: Colors.gry
                         ),
                 text: &quot;Customer&quot;,
                ), //Tab
             Tab(icon: Icon(
                         Icons.person,
                         color: Colors.gry
                         ),
                 text: &quot;Customer&quot;,
                ), //Tab
         ] //&lt;Widget&gt;[]
      ) //TabBar
   ), //SizedBox
); //Scaffold</code></pre>} // build</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[assertThat import 안됨]]></title>
            <link>https://velog.io/@dean_w/assertThat-import-%EC%95%88%EB%90%A8</link>
            <guid>https://velog.io/@dean_w/assertThat-import-%EC%95%88%EB%90%A8</guid>
            <pubDate>Sat, 05 Aug 2023 08:02:18 GMT</pubDate>
            <description><![CDATA[<h3 id="오류-내용">오류 내용</h3>
<p>assertThat 사용 불가
<img src="https://velog.velcdn.com/images/dean_w/post/3f30169f-a4d4-4153-8b17-a7c254b615ab/image.png" alt=""></p>
<hr>
<h3 id="원인">원인</h3>
<p>자동으로 import 된 이놈 땜 시 발생</p>
<pre><code class="language-kotlin">import org.junit.jupiter.api.*</code></pre>
<hr>
<h3 id="해결방법">해결방법</h3>
<p>해당 import 문 삭제 하거나
그 위에 assertThat import</p>
<pre><code class="language-kotlin">import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.*</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[시뮬 사용 불가 : Flutter device daemon #1 exited (exit code 255), stderr]]></title>
            <link>https://velog.io/@dean_w/Flutter-device-daemon-1-exited-exit-code-255-stderr</link>
            <guid>https://velog.io/@dean_w/Flutter-device-daemon-1-exited-exit-code-255-stderr</guid>
            <pubDate>Fri, 21 Jul 2023 06:25:47 GMT</pubDate>
            <description><![CDATA[<h3 id="오류-내용">오류 내용</h3>
<p>Flutter device daemon #1 exited (exit code 255), stderr: Unhandled exception: Exception: Flutter failed to write to a file at &quot;/Users/user/.config/flutter/tool_state&quot;. Please ensure that the SDK and/or project is installed in a location that has read/write permissions for the current user. Try running: sudo chown -R $(whoami) /Users/user/.config/flutter/tool_state #0 throwToolExit (package:flutter_tools/src/base/common.dart:10:3) #1 _throwFileSystemException (package:flutter_tools/src/base/error_handling_io.dart:834:3) #2 _handlePosixException (package:flutter_tools/src/base/error_handling_io.dart:764:3) #3 _runSync (package:flutter_tools/src/base/error_handling_io.dart:600:7) #4 ErrorHandlingFile.writeAsStringSync (package:flutter_tools/src/base/error_handling_io.dart:266:5) #5 Config._flushValues (package:flutter_tools/src/base/config.dart:185:11) #6 Config.setValue (package:flutter_tools/src/base/config.dart:174:5) #7 _DefaultPersistentToolState.setIsRunningOnBot (package:flutter_tools/src/persistent_tool_state.dart:136:13) #8 BotDetector.isRunningOnBot (package:flutter_tools/src/base/bot_detector.dart:40:28) #9 isRunningOnBot (package:flutter_tools/src/globals.dart:89:48) #10 runInContext.runnerWrapper (package:flutter_tools/src/context_runner.dart:80:34) #11 AppContext.run.  (package:flutter_tools/src/base/context.dart:150:29) #12 _rootRun (dart:async/zone.dart:1399:13) #13 _CustomZone.run (dart:async/zone.dart:1301:19) #14 _runZoned (dart:async/zone.dart:1804:10) #15 runZoned (dart:async/zone.dart:1747:10) #16 AppContext.run (package:flutter_tools/src/base/context.dart:149:12) #17 runInContext (package:flutter_tools/src/context_runner.dart:84:18) #18 run (package:flutter_tools/runner.dart:49:10) #19 main (package:flutter_tools/executable.dart:91:16) #20 main (file:///Users/dean/dev/tools/flutter/packages/flutter_tools/bin/flutter_tools.dart:8:14) #21 _delayEntrypointInvocation.  (dart:isolate-patch/isolate_patch.dart:294:33) #22 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:189:12)</p>
<hr>
<h3 id="원인">원인</h3>
<p>파일시스템 권한 문제.</p>
<hr>
<h3 id="해결">해결</h3>
<p>소유권 변경</p>
<pre><code class="language-shell">sudo chown -R dean /Users/user/.config/flutter</code></pre>
<p>++ 추가적으로 flutter 설치 경로 내 모든 파일 및 
아래 명령어 실행 시 permission 관련 오류 일으키는 경로 모두 소유권 변경 해버림</p>
<pre><code class="language-shell">/Users/dean/dev/tools/flutter/bin/flutter run -d chrome</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[플러터 예제]]></title>
            <link>https://velog.io/@dean_w/%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%98%88%EC%A0%9C</link>
            <guid>https://velog.io/@dean_w/%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%98%88%EC%A0%9C</guid>
            <pubDate>Mon, 26 Jun 2023 11:53:29 GMT</pubDate>
            <description><![CDATA[<pre><code>import &#39;package:flutter/material.dart&#39;;

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePage createState() =&gt; _MyHomePage();
}

class _MyHomePage extends State&lt;MyHomePage&gt; {
  bool isUserMgmtExpd = false;
  bool isBookMgmtExpd = false;

  void toggleUserMgmtMenu(){
    setState((){
      isUserMgmtExpd = !isUserMgmtExpd;
      print(isUserMgmtExpd);
    });
  }

  void toggleBookMgmtMenu(){
    setState((){
      isBookMgmtExpd = !isBookMgmtExpd;
      print(isBookMgmtExpd);
    });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(&#39;Library Management&#39;,),
        /*
        leading: IconButton(icon: Icon(Icons.menu),
                            onPressed:() =&gt; {print(&quot;menu&quot;)}),
        */
        actions: [
          IconButton(icon: Icon(Icons.search),
                    onPressed:() =&gt; {print(&quot;search&quot;)}),
          ]
      ),
      drawer: Drawer(
        child: ListView(
          children: [
            UserAccountsDrawerHeader(
              accountName: Text(&#39;관리자&#39;),
              accountEmail: Text(&#39;Manager@library.com&#39;),
              currentAccountPicture: CircleAvatar(
                backgroundColor: Colors.white,
              ),
            ),
            ListTile(
              leading: Icon(Icons.supervised_user_circle),
              title: Text(&quot;User Management&quot;),
              onTap: () =&gt; {
                print(&quot;User Management&quot;),
                toggleUserMgmtMenu(),
              },
              trailing: Icon(Icons.keyboard_arrow_down_rounded), //keyboard_control_key_rounded 
            ),
            if(isUserMgmtExpd)
              Padding(
                padding: EdgeInsets.symmetric(horizontal: 5,),
                child: Column(
                  children: [
                    ListTile(
                      title: Text(&quot;Register User&quot;),
                      onTap: () =&gt; {print(&quot;Register User&quot;),},
                    )
                  ])
              )
            ,
            ListTile(
              leading: Icon(Icons.menu_book_rounded),
              title: Text(&quot;Book Management&quot;),
              onTap: () =&gt; {
                print(&quot;Book Management&quot;),
                toggleBookMgmtMenu(),
              },
              trailing: Icon(Icons.keyboard_arrow_down_rounded),//keyboard_control_key_rounded 
            ),
            if(isBookMgmtExpd)
              Padding(
                padding: EdgeInsets.symmetric(horizontal: 5,),
                child: Column(
                  children: [
                    ListTile(
                      title: Text(&quot;Register Book&quot;),
                      onTap: () =&gt; {print(&quot;Register Book&quot;),},
                    ),
                    ListTile(
                      title: Text(&quot;Rent Book&quot;),
                      onTap: () =&gt; {print(&quot;Rent Book&quot;),},
                    ),
                    ListTile(
                      title: Text(&quot;Return Book&quot;),
                      onTap: () =&gt; {print(&quot;Return Book&quot;),},
                    ),
                  ])
              )
            ,
          ],
        ),
        ),
      body: Row(
        children: [
          Expanded(
            child: Column(
              children: [
                Expanded(
                  child: Container(
                    margin: EdgeInsets.only(left:20, right:10, bottom: 10, top:20),
                    child: Center(
                      child: Container(
                        decoration: BoxDecoration(
                          border: Border.all(
                            color: Colors.grey,
                          ),
                          borderRadius: BorderRadius.all(
                            Radius.circular(20.0),
                          ),
                        ),
                      ),
                    ),
                  ),
                ),
                Expanded(
                  child: Container(
                    margin: EdgeInsets.only(left:20, right:10, bottom: 20, top:10),
                    child: Container(
                      decoration: BoxDecoration(
                        border: Border.all(color: Colors.grey,),
                        borderRadius: BorderRadius.all(
                          Radius.circular(20.0),
                        ),
                      )
                    ),
                  ),
                ),
              ],
            ),
          ),
          Expanded(
            child: Column(
              children: [
                Expanded(
                  child: Container(
                    margin: EdgeInsets.only(left:10, right:20, bottom: 10, top:20),
                    child: Container(
                      decoration: BoxDecoration(
                        border: Border.all(color: Colors.grey,),
                        borderRadius: BorderRadius.all(
                          Radius.circular(20.0),
                        ),
                      )
                    ),
                  ),
                ),
                Expanded(
                  child: Container(
                    margin: EdgeInsets.only(left:10, right:20, bottom: 20, top:10),
                    child: Container(
                      decoration: BoxDecoration(
                        border: Border.all(color: Colors.grey,),
                        borderRadius: BorderRadius.all(
                          Radius.circular(20.0),
                        ),
                      )
                    ),
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: MyHomePage(),
    title: &quot;Library Management&quot;,
    theme: ThemeData(primarySwatch: Colors.orange),
    )
  );
}
</code></pre>]]></description>
        </item>
    </channel>
</rss>