3일차 과제 - rlatkddbs99/Flutter GitHub Wiki

1.절대경로와 상대경로 절대경로 : 최상위 디렉토리부터 해당 파일까지 경유한 모든 경로를 전부 기입하는 방식이다. 내가 작성중인 파일이 어디 있던 간에 주소가 절대로 변하지 않는다.

상대경로 : 현재 파일이 존재하는 디렉토리를 기준으로 해당 파일까지의 위치를 작성한 경로이다. 상대 경로에서 알아 두어야 할 것은 최상위 디렉토리, 현재 디렉토리, 현재 디렉토리의 상위 디렉토리 접근 방법이다. 경로가 자주 바뀌거나 최초 디렉토리가 서로 다른 Windows와 Mac OS 모두에서 작동해야 하는 프로그램을 만드는 경우엔 그때 그때 경로를 다시 작성하거나 OS 별로 따로 관리해야 하는 것은 너무 비효율적이기 때문에 상대경로가 좋음.

2.mainAxisAlignment, crossAxisAlignment, mainAxisSize mainAxisAlignment: 주축 정렬 -> y축 기준 MainAxisAlignment.start 적용(기본값) -> 위젯이 왼쪽상단을 기준으로 그려진다 MainAxisAlignment.center -> 위젯이 왼쪽정렬 된 상태에서 가운데로 그려진다 MainAxisAlignment.end -> 위젯이 왼쪽 하단에 그려진다. MainAxisAlignment.spaceBetween -> 위젯과 위젯의 사이가 동일하게 배치 MainAxisAlignment.spaceEvenly -> 위젯을 같은 간격으로 배치하지만 끝과 끝에도 위젯이 아닌 빈 간격으로 시작 MainAxisAlignment.spaceAround -> spaceEvenly + 끝과 끝의 간격은 1/2

crossAxisAlignment: 반대축 정렬 -> x축 기준 CrossAxisAlignment.center 적용(기본값) -> 위젯이 x축 기준 가운데로 그려진다 CrossAxisAlignment.start -> 위젯이 x축 기준 왼쪽으로 그려진다. CrossAxisAlignment.end -> 위젯이 x축 기준 오른쪽으로 그려진다. CrossAxisAlignment.stretch -> 위젯을 최대한 늘려서 화면에 꽉 차게 그려진다.

mainAxisSize: 주축 크기 MainAxisSize.max 적용(기본값) -> 위젯의 빈공간도 채워서 최대로 늘림 MainAxisSize.min 적용 -> 위젯의 빈공간 없이 최소로 줄임

3-1 캡처 import 'package:flutter/material.dart';

void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key});

@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: Container( width: 300, height: 300, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors:[Colors.blue,Colors.cyan,Colors.green,Colors.orange,Colors.red] ) ), ), ), ), ); } }

3-2 캡처1 import 'package:flutter/material.dart';

void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key});

@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Container( width: 300, height: 300, margin: EdgeInsets.all(50), padding: EdgeInsets.all(100), decoration: BoxDecoration( borderRadius: BorderRadius.only( topLeft: Radius.circular(150), bottomRight: Radius.circular(150), ), gradient: LinearGradient( begin: Alignment.topRight, end: Alignment.bottomLeft, colors:[Colors.blue,Colors.red] ) ), child: Container(

      decoration: BoxDecoration(
        borderRadius: BorderRadius.circular(100),
        color: Colors.green,
    ),

    ),
  ),
  ),
);

} }

3-3 import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget { const MyApp({super.key});

@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Column( children: [ Image.network( "https://www.google.com/imgres?imgurl=https%3A%2F%2Fwww.elegantthemes.com%2Fblog%2Fwp-content%2Fuploads%2F2020%2F08%2F000-http-error-codes.png&imgrefurl=https%3A%2F%2Fwww.elegantthemes.com%2Fblog%2Fwordpress%2Fthe-ultimate-guide-to-common-http-error-codes&tbnid=Leystw72I66tAM&vet=12ahUKEwiLsNnCluf8AhVJUpQKHWoXD3sQMygAegUIARDcAQ..i&docid=G84NVnYGVQ80kM&w=1080&h=608&q=Error&ved=2ahUKEwiLsNnCluf8AhVJUpQKHWoXD3sQMygAegUIARDcAQ"), Text("sniperfactory_official"), ], )), ); } }

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget { const MyApp({super.key});

@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: ListView( children: [ Row( children: [ Image.network( "https://www.google.com/aclk?sa=l&ai=DChcSEwjDte_QuOf8AhVDn8IKHc4lB9IYABABGgJ0bQ&sig=AOD64_1ziS5na2QtAk2rE-8z728fwpP48w&adurl&ctype=5&ved=2ahUKEwiFjebQuOf8AhVYzIsBHYisDn8Qvhd6BAgBEG4"), Column( children: [ Text("라이언"), Text("게임개발"), Text("c#, Unity"), ], ), Icon(Icons.access_time) ], ) ], ), ), ); } }

⚠️ **GitHub.com Fallback** ⚠️