정지홍 2023. 6. 30. 10:53

네이티브코드: 각 플랫폼에 종속된 코드

 

 

-dir들

android:안드로이드 앱 구성 

ios:ios앱 구성

lib:다트 파일을 저장하며 하위 디렉토리를 자유롭게 구성가능하다

test:앱 빌드시 포함하지 않으려고 만든것

lib/main.dart:메인함수가 있으며 꼭 main.dart가 아니라 메인함수가 있는 파일이면 런닝가능

.gitignore:깃에 업로드 안할 파일들

pubspec.yyml:빌드와 관련 설정들이 있으며 자주 열어서 분석 혹은 수정한다.

 

//다른 다트파일을 불러올때 사용
//패키지일수도 있우묘 pubspec.yaml에 들록한 외부 패키지일수 있다
//다른 파일의 클래스,함수,변수등을 불러올때
import 'package:flutter/material.dart';

 

 

//화면에 출력할 위젯클래스
class MyApp extends StatelessWidget {
  const MyApp({super.key});
  
  //아래 빌드함수를 보면 MaterialApp,MyHomePage의 두개로 구성된다
  //전자는 플러터에서 제공하는 위젯이며 머티리얼 디자인을 적용하게 해준다.
  //후자는 개발자가 작성한 위젯
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(

        
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

 

dependencies:앱이 빌드되서 플랫폼에서 실행될때도 필요한 패키지들

 dev_dependencies:개발할때 만 이용하는 패키지들

 

-->패키지 입포트후에 pub get을 눌러줘야함

 

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.2

dev_dependencies:
  flutter_test:
    sdk: flutter

  # The "flutter_lints" package below contains a set of recommended lints to
  # encourage good coding practices. The lint set provided by the package is
  # activated in the `analysis_options.yaml` file located at the root of your
  # package. See that file for information about deactivating specific lint
  # rules and activating additional ones.
  flutter_lints: ^2.0.0

 


import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
import 'package:flutter_lab/main.dart';

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

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    final wordPair=WordPair.random();
    return MaterialApp(
      home:Scaffold(
        appBar:AppBar(
          title:Text('Test'),

        ),
        body:Center(
          child:Text('${wordPair.first}'),
        ),
      ),
    );
  }



}

lib/ch2/test.dart파일

 


화살표가 진입점을 의미


//int a1=10;
int? a2=10;
late int a3;

main(){
  //a1=null; 널 불허여서 에러 발생
  a2=null;

  List<int> list2=[10,2,3];
  print(list2);

  list2.add(4);
  list2.add(5);
  print(list2);

  list2.removeAt(1);
  print(list2);

  //growable: true을 해줘야 add를 가능
  var list3 = List<int>.filled(5, 8,growable: true);//[8,8,8,8,8]
  list3[1]=5;
  print(list3);

  list3.add(7);
  print(list3);

  var list4=List<int>.generate(3, (index) => index*7,growable: true);
  print(list4);

  //set은 중복값을 허용하지 않으며 list는 허용한다.
  Set<int> set1={1,2,3};
  print(set1);
  set1.add(5);
  set1.add(8);
  print(set1);

  Set<int> set2 = Set();
  print(set2);

  Map<String,String> map1 = {'one':'hello' , 'two':'world!'};
  print(map1);
  print(map1['one']);


}