name27 / flutter

0 stars 0 forks source link

pub.dev 패키지 사용: carousel_slider #69

Open name27 opened 1 year ago

name27 commented 1 year ago

image

import 'dart:math';

import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter/material.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

final imageUrl = [
  "https://images.pexels.com/photos/1108099/pexels-photo-1108099.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
  "https://images.pexels.com/photos/33053/dog-young-dog-small-dog-maltese.jpg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
  "https://images.pexels.com/photos/2664417/pexels-photo-2664417.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
  "https://images.pexels.com/photos/10361796/pexels-photo-10361796.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1",
  "https://images.pexels.com/photos/9409823/pexels-photo-9409823.jpeg?auto=compress&cs=tinysrgb&w=1260&h=750&dpr=1"
];

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: Text('14일차 과제 4번'),
          ),
          body: Center(
            child: CarouselSlider(
              options: CarouselOptions(
                  height: 250.0,
                  autoPlay: true,
                  autoPlayAnimationDuration: Duration(milliseconds: 500),
                  autoPlayInterval: Duration(milliseconds: 2500),
                  autoPlayCurve: Curves.easeOutBack),
              items: imageUrl.map((i) {
                return Builder(
                  builder: (BuildContext context) {
                    return ClipRRect(
                      borderRadius: BorderRadius.circular(35),
                      child: Container(
                        margin: EdgeInsets.symmetric(horizontal: 2),
                        child: FittedBox(
                            fit: BoxFit.fitHeight,
                            clipBehavior: Clip.hardEdge,
                            child: Image.network(i)),
                      ),
                    );
                  },
                );
              }).toList(),
            ),
          )),
    );
  }
}
name27 commented 1 year ago

FittedBox

child 또는 내용의 양에 따라 크기가 확장되는 위젯에 의해 오버플로우가 발생되는 경우 FittedBox로 감싸면 전체 크기를 넘지 않게 되며 오버플로우가 방지된다. alignment를 사용하여 원하는 배열로 나타낼 수 있다. 단, 부모가 로우인 경우 로우는 가로 방향으로 무한대의 width를 허락하므로 FittedBox로 감싸도 width은 아무 영향도 주지 않음

Enum 열거형 타입, 서로 연관된 상수를 모아놓은 집합

ex)

enum NewColor {
  red("레드", "red"),
  blue("블루", "blue"),
  white("화이트", "white"),
  amber("엠버","amber");

  final String korean;
  final String english;  
  const NewColor(this.korean, this.english);    
}
print(NewColor.amber.korean);
print(NewColor.amber.english);