본문 바로가기
모바일 공부/Flutter

flutter 이미지 업로드

by chogigang 2024. 1. 5.

flutter 로 이미지 업로드를 해볼려고 합니다.  그전에 간단히 몇가지 준비가 필요합니다

 

yaml 파일에가서 

 

assets:

이친구의 주석을 풀어 주셔야 합니다. 

 

 

2번째 파일을 만들어줘야하는대 1번째로  최상위 폴더에서 assets 폴더 생성후 images폴더를 만든다음 그안에 이미지를 넣어줘야합니다 

이름은 어떻게 해주든 상관이 없지만 통상적으로  assets 와 images 를 많이 쓴다고 합니다 

 

 

images 안에 이미지를 넣고 또 할일이 있습니다. 이건  좀 신기하긴한대 .yaml 에 다시 가서 assets: 주석을 푼 구간에가서 이미지 파일 이름을 올려줘야 합니다 이건 일일이 다해줘야합니다 

 

# To add assets to your application, add an assets section, like this:
assets:
- assets/images/dice-1.png
- assets/images/dice-2.png
- assets/images/dice-3.png
- assets/images/dice-4.png
- assets/images/dice-5.png
- assets/images/dice-6.png

그리고 - 앞에 띄어쓰기를 안해주면 경로를 인식못해 오류가 발생할수 있으니 꼭 들여쓰기를 신경써 줘야합니다.

너무 불편한대   * 를 써서 일괄로 처리 가능한가 찾아봤지만 

 

 

네그런거 젼혀 안됩니다.  여기서 햇갈릴수도 있습니다 일괄로 쓸려면 *가 아니라 그냥 빈공간으로 맞춰놔야합니다.

# To add assets to your application, add an assets section, like this:
assets:
- assets/images/

이것이 일괄로 폴더 다쓰는 방식입니다 다른언어들에서는 *가 일괄로 사용하는 문구인대 햇갈릴수도 있습니다.

 

이제 작성하던 코드로 넘어와서 이미지 추가하는 코드를 다시 작성해야합니다. 

child: Image.asset('assets/images/dice-2.png'),

이렇게 많이 쓰긴 합니다.

 

import 'package:flutter/material.dart';
import 'package:flutter_study_test/graient_container.dart';

void main() {
  runApp(const MyApp()); //엡구동  안에는 메인 페이지
}

class MyApp extends StatelessWidget {
  //엡 메인 페이지
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      //메인 페이지 디자인
      home: Scaffold(
        body: GradientContainer(
            Color.fromARGB(255, 36, 3, 94), Color.fromARGB(255, 147, 93, 240)),
      ),
    );
  }
}

 

import 'package:flutter/material.dart';
import 'package:flutter_study_test/styled_text.dart';

var statAlignment = Alignment.topLeft;
var endAlignment = Alignment.bottomRight;

class GradientContainer extends StatelessWidget {
  //아무것도 없는 위젯을 사용시 자동으로 뒤에서 이 클래스의 논리와,데이터를 많이 추가한다 플러터가 요구하는 데이터와 논리를 추가한다.
  const GradientContainer(
    this.color1,
    this.color2, {
    super.key,
  });

  const GradientContainer.purple({
    super.key,
  })  : color1 = Colors.deepPurple,
        color2 = Colors.indigo;

  final Color color1;
  final Color color2;

  @override
  Widget build(context) {
    return Container(
      //컨테이너
      decoration: BoxDecoration(
        //데코래이션
        gradient: LinearGradient(
          //그라데이션  하드코딩으로 기본적으로 리스트로 받아야함.
          colors: [color1, color2],
          // begin: Alignment.topLeft,
          // end: Alignment.bottomRight //그라데이션 begin 시작 end 끝
          //변수를 이용한 방법
          begin: statAlignment,
          end: endAlignment,
        ),
      ),
      child: Center(
        child: Image.asset('assets/images/dice-2.png'),
      ),
    );
  }
}

 

 

 

 

 

 

간단한 예제들은 모바일 에뮬레이터 보단 크롬으로 간단하게 돌리는게 컴파일상 빠르기 선호 하고 있습니다. 

'모바일 공부 > Flutter' 카테고리의 다른 글

flutter ROW, COLUMN 알아보기  (1) 2024.01.08
StatelessWidget,StatefulWidget 알아보기  (0) 2024.01.05
default value, required  (2) 2024.01.04
플러터 클래스 이용해보기  (1) 2024.01.03
플러터 그라데이션 주기  (1) 2024.01.03