휴. 일단 설치를 완료 했습니다.

파이썬 org에 가셔서 설치를 하시고.. 전 최근 버전으로 하니 오류 나는것들이 있어서 3.7.5로 설치를 하였습니다.

그리고 파이참이라는 툴을 설치 했습니다.

순서대로 하셔야 파이참에서 해당 파이썬을 잡아주는거 같아요.

일단 오늘의 배울 점은.

파이썬은 기존 프로그램 처럼 main이 없다.

이 부분에서 변경을 해서 실행을 시킬 수 있습니다.

아래 그림과 같은 곳에 폴더를 클릭 하시면

내가 원하는 파일이 나올 겁니다.

그리고 나서 아래와 같은 run을 누르시면 실행 됨.

일단 open cv를하기 위해서 파이썬을 하는 것이니..

카메라를 먼저 동작 시켜봐야겠죠?

import cv2

frameWidth = 640
frameHeight = 360

cap = cv2.VideoCapture(0)

while True:
sucess,img = cap.read()
cv2.imshow("Video",img)

if cv2.waitKey(0) & 0xFF == ord('q'):
break

여기서 오류를 범했던건.. waitkey 이게 k가 대문자 K 였다... ㅡㅡ...

실수 하지 맙시다..

오늘은 여기까지...

 

여러분 안녕하세요.

오늘은 Flutter에서 BuildContext에 대해서 공부하고 가도록 하겠습니다.

BuildContext란 무엇인가??

스캣폴드를 포함하지 않은 Context이다.

"A handle to the location of a widget in the widget tree"

"위젯 tree에서 현재 위젯의 위치를 알 수 있는 정보"

어디에 쓰이는걸까?

우리는 코딩할때마다 이것을 보았다.

모든 위젯은 빌드 메스드를 가지고 있다.

빌드메쓰드로 들어오는 인자 값은 컨텍스트는 타입의 컨텍스트의 인자값을 대입한 스캣폴드 위젯을 리턴한다는 뜻이다.

이 BulidContext는 stateless위젯이나 state빌드 메서드에 의해서 리턴 된 위젯의 부모가 된다.

간단하게라도 정리 했습니다.

오늘은 이만.. 조이코딩연구소 장샘 2021.04.25 오후 11시45분..

여러분 안녕하세요.

조이코딩연구소 장샘 입니다.

 

어제 리스트뷰에 이어서 스낵바를 만들도록 하겠습니다.

스낵바는 뭘까요? 

 

음식..먹는게 아니라. 

 

앱 화면의 아래의 잠시 뜨는 팝업 창 같은거에요.

 

Flutter2.0으로 오면서 Snackbar 사용하는 방법이 바뀌었으니 잘 보도록 하시죠

 

자 먼저 리스트 뷰에 리스트 타일을 이용하여 하단 메뉴를 더 구성 하도록 하겠습니다.

각 하단별 메뉴를 추가 하였고, 클릭 하였을때 OnTap으로 효과를 주었습니다.

 

그리고 다음으로 스낵바를 나오도록 버튼을 추가하고 클릭 해보겠습니다.

import 'package:flutter/material.dart';

 

void main() => runApp(MyApp());

 

class MyApp extends StatelessWidget {

  @override

  Widget build(BuildContext context) {

    return MaterialApp(

      title: 'Appbar',

      theme: ThemeData(

        primarySwatch: Colors.blue,

      ),

      home: MyPage(),

    );

  }

}

 

class MyPage extends StatelessWidget {

  @override

  Widget build(BuildContext context) {

    return Scaffold(

      // 흰 도화지를 꺼내자.

      appBar: AppBar(

        // App Bar를 만들자

        title: Text('Joy Coidng Lab Menu'), // 앱 바에 글씨를 써준다.

        centerTitle: true// 가운데로 글씨를 정렬하자.

        elevation: 0.0//올록이 효과를 없앤다.

        actions: [

          //앱 바에 아이콘 들을 배치하자.

          IconButton(

            // 아이콘 버튼 형태를 만들자.

            icon: Icon(Icons.shopping_cart), //아이콘 쇼핑 카트 아이콘을 넣어보자.

            onPressed: () {

              // 버튼 클릭했을때의 번쩍효과!!

              print('menu button is clicked');

            },

          ), //리딩 속성을 불러 옵니다.

          IconButton(

            icon: Icon(Icons.search),

            onPressed: () {

              print('menu button is clicked');

            },

          ), //리딩 속성을 불러 옵니다.

        ],

      ),

      drawer: Drawer(

        //왼족 햄버거 모양의 메뉴를 만들어보자.

        child: ListView(

          //클릭했을때 리스트 메뉴를 만들자.

          padding: EdgeInsets.zero, //빈공간을 만들지 말자.

          children: [

            UserAccountsDrawerHeader(

              //메뉴 중에 사용자 헤드 메세지 부분을 만들자.

              currentAccountPicture: CircleAvatar(

                // 이미지는 동그랗게 꾸며주고.

                backgroundImage: AssetImage('assets/bonobono.jpg'), //내가 이미지 삽입

                backgroundColor: Colors.white, // 배경은 화이트로~

              ),

              otherAccountsPictures: [

                CircleAvatar(

                  backgroundImage: AssetImage('assets/User.jpg'),

                  backgroundColor: Colors.white,

                ),

                // CircleAvatar(

                //   backgroundImage: AssetImage('assets/bonobono.jpg'),

                //   backgroundColor: Colors.white,

                // ),

              ],

              accountName: Text('JoyCoding'), //사용자 계정에는 이부분을 꼭 써줘야 한다.

              accountEmail:

                  Text('jhwjhw2580@gmail.com'), //사용자 계정에는 이부분을 꼭 써줘야 한다.

              onDetailsPressed: () {

                //리스트 뷰 화면에서 화살표 모양의 오른쪽에 버튼 생성.

                print('arrow is clicked');

              },

              decoration: BoxDecoration(

                //사용자 계정 이미지를 동그랗게 꾸며준다.

                color: Colors.blue[200],

                borderRadius: BorderRadius.only(

                  //사각형 이미지의 아래쪽을 동그랗게 만든다.

                  bottomLeft:

                      Radius.circular(40.0), //40.0은 동그랗게 만들어 주는 상수 값이다. 변경 가능

                  bottomRight:

                      Radius.circular(40.0), //40.0은 동그랗게 만들어 주는 상수 값이다. 변경 가능

                ),

              ),

            ),

            ListTile(

              //왼쪽 끝에 아이콘 배치 하는것.

              leading: Icon(

                Icons.home,

                color: Colors.grey[850], //아이콘의 색을 찐하게 해주는 것.

              ),

              title: Text('Home'),

              onTap: () {

                //onTap은 두번 Touch하거나 쭈욱 눌렀을때 이벤트를 할 수 있는 것.

                print('Home is Clicked');

              },

              trailing: Icon(Icons.add), //오른쪽 끝에 배치하는 것 트레일링.

            ),

            ListTile(

              leading: Icon(

                //왼쪽 끝에 아이콘 배치 하는것.

                Icons.settings,

                color: Colors.grey[850],

              ),

              title: Text('Setting'),

              onTap: () {

                print('Setting is Clicked');

              },

              trailing: Icon(Icons.add), //오른쪽 끝에 배치하는 것 트레일링.

            ),

            ListTile(

              leading: Icon(

                //왼쪽 끝에 아이콘 배치 하는것.

                Icons.question_answer,

                color: Colors.grey[850],

              ),

              title: Text('Q&A'),

              onTap: () {

                print('Question is Clicked');

              },

              trailing: Icon(Icons.add), //오른쪽 끝에 배치하는 것 트레일링.

            ),

          ],

        ),

      ),

      body: Center(

        child: ElevatedButton(

          child: Text('Show Me'),

          onPressed: () {

            ScaffoldMessenger.of(context).showSnackBar(

              const SnackBar(

                content: Text('Flutter2.0 Snack method'),

              ),

            );//<-- 여기가!!! 세미 콜론이야!!!!! 온프레스드!!!!

          },

        ),

      ),

    );

  }

}

 

자 조금씩 플러터 위젯을 공부하고 있습니다.

서서히 앱의 형태가 나타나기 시작하고 있죠? 이렇게 조금씩이라도 공부해서 하나씩 여러분걸로 만든다면

나중에 완전한 앱을 플러터로 만들 수 있겠죠?

 

그럼 오늘도 이만.. 조이코딩연구소 장샘 2021.04.24 오후 11시43분...

+ Recent posts