happy cat image

everdevel

coding

login
알림X
  • 현재 댓글에 대한 답변만 표시합니다.
  • 표시할 댓글 이력이 없거나 로그인해 주세요.
























everdevel이 만든 무료 클라우드 개발환경을 소개합니다.

방문해 주셔서 감사합니다.

Scaffold 클래스

이번시간에는 Scaffold 클래스에 대해서 알아보겠습니다.

Scaffold클래스는 머티리얼 디자인을 돕는 클래스입니다.

머티리얼은 구글에서 제작한 Flat디자인 지침입니다.

꼭 이 디자인을 따라야 하는건 아니지만 깔끔하고 명료한 간결한 디자인 구성이 가능합니다.

괜히 뭐 한다고 아이콘 하나 하나 다 그려서 뭐하는 저같은 사람들은 이런걸 사용해서 빠르게 빠르게 개발하는게 좋습니다.

지금 보고 계시는 제 사이트의 디자인이 거지같은 이유기도하지요.

디자인 수정해야하긴 하는데 답답하네요. ㅜㅜ

아무튼 머티리얼 디자인에 관해서는 아래의 링크를 통해서 봐주세요.

https://material.io/design

머티리얼 디자인을 사용하기 위해서는 Scaffold클래스를 사용한다고했는데요.

Scaffold 클래스는 MaterialApp()안에서 작동합니다.

그러므로 먼저 MaterialApp()을 만드는 함수

현재의 my_second_app은 StatefulWidget를 설명하기위해 최소한의 코드를 사용한 예입니다.

MaterialApp()을 사용하기 위해 우선 StatelessWidget를 상속한 클래스를 추가하겠습니다.

main.dart파일의 MyApp 클래스 명을 MyAppState로 변경합니다. _MyApp 클래스명은 _MyAppState로 변경합니다.

코드 변경 전

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyApp();
  }
}

class _MyApp extends State<MyApp> {

  @override
  Widget build(BuildContext context) {

  }
}

코드 변경 후

class MyAppState extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyAppState();
  }
}

class _MyAppState extends State<MyAppState> {

  @override
  Widget build(BuildContext context) {

  }
}

이제 MyApp클래스를 생성하겠습니다.

이 클래스는 StatelessWidget 클래스를 상속받습니다.

우리가 my_first_app프로젝트에서 작성했던 MyApp 클래스를 작성한다고 보시면 됩니다.

build와 MaterialApp()까지 작성합니다.

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context){
    return MaterialApp(
      title: 'everdevel',
      theme: ThemeData(
        primarySwatch: Colors.red,
      ),
    );
  }
}

위의 코드를 void main 함수 아래에 작성합니다.

현재까지의 최종코드는 다음과 같습니다.

import "package:flutter/material.dart";

void main(){
  runApp(MyApp());
}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context){
    return MaterialApp(
      title: 'everdevel',
      theme: ThemeData(
        primarySwatch: Colors.red,
      ),
    );
  }
}

class MyAppState extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyAppState();
  }
}

class _MyAppState extends State<MyAppState> {

  @override
  Widget build(BuildContext context) {

  }
}

MaterialApp()을 MyApp클래스에서 생성했습니다.

my_first_app 프로젝트에서는 MaterialApp()의 home에 이런 저런 위젯을 추가했었습니다.

앞에서 했던 것처럼 home에 직접 여러 위젯을 작성할 수 있지만 간단히 해보기 위해서 앞에서 그렇게 했고

원래는 앞에서는 했던것처럼 사용하지 않습니다.

정말 상태 변화가 없는 앱이라면 Scaffold()를 home:에 바로 사용할 수 있지만 보통 앱은 상태 변화가 있는 앱을 만들기 때문입니다.

아래의 코드는 my_second_app 프로젝트에 적용하지 마세요. 바로 Scaffold()를 StatelessWidget에 사용하는 예입니다.

return MaterialApp(
    title: 'everdevel',
    theme: ThemeData(
        primarySwatch: Colors.red,
    ),
    home: Scaffold(),
);

그럼 다시 본론으로 돌아와서........

home()에는 StatefulWidget 클래스를 상속받는 클래스를 입력합니다.

그럼 MyApp 클래스의 MaterialApp()안의 theme 이후에 다음의 코드를 추가합니다.

home: MyAppState(),

그럼 MyApp의 코드는 최종적으로 다음과 같죠.

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context){
    return MaterialApp(
      title: 'everdevel',
      theme: ThemeData(
        primarySwatch: Colors.red,
      ),
      home: MyAppState(),
    );
  }
}

그럼 _MyAppState 클래스에 선언해 둔 build에 Scaffold 클래스 반환하겠습니다.

_MyAppState 클래스의 build()에 다음의 코드를 추가합니다.

return Scaffold(

);

현재까지의 _MyAppState 클래스의 코드는 다음과 같습니다.

class _MyAppState extends State<MyAppState> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(

    );
  }
}

와우 여기까지 했네요. 이제 머티리얼 디자인을 사용할 준비가 끝났습니다.

그럼 다음 시간에는 앱바를 만들어 볼게요.

앱바란 다음 이미지의 상단 빨간색 박스 부분을 말합니다.

scaffold

봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.

컨텐츠의 내용을 더 보려면 바로 아래에서 확인할 수 있습니다.


    
    

강좌로 돌아가기

댓글 0개

정렬기준