Flutter Start

2022. 4. 9. 23:56ยท๐Ÿ’ป Programming Language/Flutter-Dart
import "package:flutter/material.dart";

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

class MyApp extends StatelessWidget {
  Widget build(BuildContext context) {
    return MaterialApp(
      title : "Flutter Demo",
      theme: ThemeData(primarySwatch: Colors.blue),
      home: MyHomePage(title: '๋“œ๊ฐ€์ž~~~'),
    );
  }
}

class MyHomePage extends StatefulWidget {

  MyHomePage({Key? key, required this.title}) : super(key : key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;


  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(widget.title),), //widget์ด ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ด => this ์™€ ๋น„์Šทํ•œ๊ฑด๊ฐ€??
      body : Center(
        child : Column(mainAxisAlignment: MainAxisAlignment.center,// ํ™”๋ฉด์ƒ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Œ + ๊ฐ€์šด๋ฐ ์ •๋ ฌ
        children : <Widget>[ // child ๋‚ด์—์„œ ์ •๋ ฌ๋  ์•„์ดํ…œ๋“ค
          Text("๋ฒ„ํŠผ ๋งŽ์ด ๋ˆŒ๋Ÿฌ๋ˆŒ๋Ÿฌ"), //ํฐํŠธ๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ
          Text('$_counter', style : Theme.of(context).textTheme.display1),
          // ์ด๋Ÿฐ์‹์œผ๋กœ ์Šคํƒ€์ผ์„ ๋„ฃ์„ ์ˆ˜ ๋„ ์žˆ์Œ
        ]
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: "Increment",
        child : Icon(Icons.add)
      ),
    );
  }

  void _incrementCounter() {
    setState((){
      _counter++;
    });
    //StateLess์œ„์ ฏ๊ณผ StateFull ์œ„์ ฏ์„ ์ดํ•ดํ•˜๊ณ  setState()๋ฅผ ์ดํ•ดํ•ด์•ผํ•จ.
    // StateLess => ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
    // StateFull => ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
    // setState() ๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ์šฉํ•ด์ค€๋‹ค.
  }
}

 

-์ดˆ๊ธฐ package:flutter/material.dart ๋ฅผ Import ํ•œ๋‹ค.

 

void Main() => runApp(MyApp());
  • MyApp ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰

 

  • Flutter์—๋Š” Stateful ์œ„์ ฏ๊ณผ Stateless ์œ„์ ฏ์ด ์žˆ๋‹ค.
  • Stateful => ํ™”๋ฉด์ƒ์—์„œ ๋‚ด์šฉ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅ
  • Stateless => ํ™”๋ฉด์ƒ์—์„œ ๋‚ด์šฉ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ
  • Stateful์˜ ๊ฒฝ์šฐ setState()๋ฅผ ์‚ฌ์šฉํ•ด ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.

 

๋‚ด์šฉ ๋“ค์—ฌ๋‹ค๋ณด๊ธฐ

Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text(widget.title),), //widget์ด ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚ด => this ์™€ ๋น„์Šทํ•œ๊ฑด๊ฐ€??
      body : Center(
        child : Column(mainAxisAlignment: MainAxisAlignment.center,// ํ™”๋ฉด์ƒ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Œ + ๊ฐ€์šด๋ฐ ์ •๋ ฌ
        children : <Widget>[ // child ๋‚ด์—์„œ ์ •๋ ฌ๋  ์•„์ดํ…œ๋“ค
          Text("๋ฒ„ํŠผ ๋งŽ์ด ๋ˆŒ๋Ÿฌ๋ˆŒ๋Ÿฌ"), //ํฐํŠธ๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ
          Text('$_counter', style : Theme.of(context).textTheme.display1),
          // ์ด๋Ÿฐ์‹์œผ๋กœ ์Šคํƒ€์ผ์„ ๋„ฃ์„ ์ˆ˜ ๋„ ์žˆ์Œ
        ]
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: "Increment",
        child : Icon(Icons.add)
      ),
    );

 

  • appBar => ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒ๋‹จ๋ฐ”๋ฅผ ์ƒ์„ฑ
  • column => ์ด๋ฆ„์€ column์ด์ง€๋งŒ ํ™”๋ฉด์ƒ์— ํ•˜๋‚˜์˜ column ๋ฐฉํ–ฅ์œผ๋กœ ์Šคํƒ์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋‚ด์šฉ๋ฌผ์„ ์ •๋ฆฌํ•˜๊ณ  ์Œ“์•„์ค€๋‹ค. ์ •๋ ฌ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ์•„์ดํ…œ ๋ฐฐ์น˜๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ.
  • children => child๋‚ด์—์„œ ์‚ฌ์šฉ๋  ์•„์ดํ…œ๋“ค์„ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

child๋‚ด์—์„œ ์‚ฌ์šฉ๋  ์•„์ดํ…œ๋“ค children์œผ๋กœ ์ •์˜ํ•˜๊ธฐ
child : Column(mainAxisAlignment: MainAxisAlignment.center,
            // ํ™”๋ฉด์ƒ์— ์—ฌ๋Ÿฌ๊ฐ€์ง€๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Œ + ๊ฐ€์šด๋ฐ ์ •๋ ฌ
        children : <Widget>[ // child ๋‚ด์—์„œ ์ •๋ ฌ๋  ์•„์ดํ…œ๋“ค
          Text("๋ฒ„ํŠผ ๋งŽ์ด ๋ˆŒ๋Ÿฌ๋ˆŒ๋Ÿฌ"), //ํฐํŠธ๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ
          Text('$_counter', style : Theme.of(context).textTheme.display1),
          // ์ด๋Ÿฐ์‹์œผ๋กœ ์Šคํƒ€์ผ์„ ๋„ฃ์„ ์ˆ˜ ๋„ ์žˆ์Œ
  • child์—์„œ column์„ ์ด์šฉํ•ด ํ‹€์„ ์žก๊ณ  children์—์„œ Text()๋ฅผ ํ†ตํ•ด ํ…์ŠคํŠธ๋“ค์„ ์ •๋ ฌํ•ด์ค€๋‹ค. ์ด๋•Œ Text() ๋‚ด๋ถ€์— ํ…์ŠคํŠธ๋ณ„ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

'๐Ÿ’ป Programming Language > Flutter-Dart' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Flutter 3rd Study  (0) 2022.04.10
Flutter 2nd Study  (0) 2022.04.09
'๐Ÿ’ป Programming Language/Flutter-Dart' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Flutter 3rd Study
  • Flutter 2nd Study
S.Honey
S.Honey
  • S.Honey
    Algo ์“ฐ์ž
    S.Honey
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (123)
      • ํšŒ๊ณ  (0)
        • ์ทจ์—… ํ›„ ํšŒ๊ณ  (0)
      • ๐Ÿƒ Frontend Road-Map (2)
        • ๐Ÿšฉ Summary (1)
        • ๐Ÿ“š Road-Map Contents (1)
        • ๐ŸŸง HTML (0)
        • ๐ŸŸฆ CSS (0)
        • ๐ŸŸจ Javascript (0)
        • โฌœ React (0)
        • ๐ŸŸช Redux (0)
      • Backend (0)
        • QueryDSL (0)
      • ๐Ÿ’ป Programming Language (54)
        • C# (51)
        • Flutter-Dart (3)
        • Java (0)
      • ๐Ÿ“š Computer Science (4)
        • Algorithms (4)
        • Database (0)
        • Network (0)
        • Operating System(OS) (0)
      • ๐Ÿ’ฏ CodingTest (60)
        • BaekJoon (22)
        • Programmers (34)
        • CodeTree (4)
      • โœ’๏ธ Design Pattern (1)
      • ๐Ÿฑ Etc (2)
        • Jenkins Plugin ์ œ์ž‘๊ธฐ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

      • ๐Ÿ“– ๊ณต๋ถ€ ์ฐธ๊ณ  ๊ต์žฌ ๋ฐ ์ž๋ฃŒ
    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      ์“ฐ์…จ์ž–์•„
      Algorithm
      ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰
      JavaScript
      ๊ตฌํ˜„
      programmers
      ํŒŒ์ด์ฌ
      ์‹œ๋ฎฌ๋ ˆ์ด์…˜
      BAEKJOON
      JS
      ๋ฌธ์ž์—ด ํŒŒ์‹ฑ
      DART
      ์Šคํ„ฐ๋””
      sort
      ์ด์ง„ํƒ์ƒ‰
      c#
      ๋ฐฑ์ค€
      Java
      ์ž๋ฃŒ๊ตฌ์กฐ
      ์‚ผ์„ฑsw์—ญํ…Œ
      ์ฝ”๋“œํŠธ๋ฆฌ
      ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
      BFS
      ์นด์นด์˜ค
      ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      Flutter
      DP
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
    S.Honey
    Flutter Start
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”