inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

curve: Curves.linear가 동작을 안 합니다.

467

종마루

작성한 질문수 7

0

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

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

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  Timer? timer;
  PageController controller = PageController(
    initialPage: 0,
  );

  @override
  void initState() {
    super.initState();

    timer = Timer.periodic(Duration(seconds: 4), (timer) {
      int currentPage = controller.page!.toInt();
      int nextPage = currentPage + 1;

      if (nextPage > 4) {
        nextPage = 0;
      }

      controller.animateToPage(
          nextPage,
          duration: Duration(microseconds: 400),
          curve: Curves.linear
      );
    });
  }

  @override
  void dispose() {
    if (timer != null) {
      timer!.cancel();
    }
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    // 상태바 색 변경
    SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);

    return Scaffold(
      // 스크롤
      body: PageView(
        controller: controller,
        children: [1, 2, 3, 4, 5]
            .map(
              (e) => Image.asset(
                'asset/img/image_$e.jpeg',
                fit: BoxFit.cover,
              ),
            )
            .toList(),
      ),
    );
  }
}

전체 코드이고 controller.animateToPage 부분입니다.

 

Curves.linear 대신 다른 여러 효과들을 적용해봐도

어떠한 애니메이션 없이 모두 화면이 깜빡이고 그 후 다음 사진이 나오는 방식으로만 동작합니다. 애니메이션이 적용이 안 되네요 ㅠㅠ

 

윈도우에 안드로이드 시뮬, 실기기(갤럭시) 둘 다 테스트 해봐도 동일해서 코드 문제인가 싶은데 따로 강의 내용이랑 다르게 작성한 것 같지는 않습니다.


검색해도 딱히 나오는 건 없어서 질문 드립니다 ㅠㅠ

flutter 클론코딩

답변 2

1

Park Ju Yeong

timer = Timer.periodic(Duration(seconds: 5), (timer) {
  int currentPage = controller.page!.toInt();
  int nextPage = currentPage + 1;
  if (nextPage > 4) {
    nextPage = 0;
  }
  controller.animateToPage(nextPage,
      duration: Duration(seconds: 2), curve: Curves.linear);

위와 같이 애니메이션 효과 시간을 늘려주니 되네요.

애니메이션 효과가 너무 빠르게 설정되어 깜박이는 것 같습니다.

0

코드팩토리

안녕하세요!

혹시 한번 스크롤을 다 하고나면 애니메이션이 정상 작동 하나요?

이미지를 로딩하는 과정에서 한번 깜빡일 수 있습니다. 만약 맞다면 이 부분은 배포할경우 어느정도 해결되는 문제입니다.

더욱 개선하고 싶다면 이미지 용량을 줄이는 방법이 있습니다.

확인 해보신 후 다시 답변 주시면 추가 답변 해드리도록 하겠습니다.

감사합니다!

0

종마루

스크롤이 끝나고 처음 사진으로 돌아와도 지속되고 몇 분이고 화면을 켜놓아도 마찬가지네요 ㅠㅠ
일단 큰 지장이 가는 부분은 아니니 일단 쭉 수업 듣겠습니다.

답변 감사합니다!

198강 (){onTap(e);}의 이해 돕기

0

26

1

video_call 플러그인 설치후 에러 발생

0

45

1

SDK 안드로이드 설치 질문!

0

60

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

92

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

70

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

55

1

플레이스토어

0

59

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

55

1

가이드라인 질문

0

57

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

76

1

emulator 실행 오류

0

93

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

71

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

43

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

53

1

video_call 플러그인 설치시 에러문제

0

64

1

children 안의 if 문에서 { } 못쓰는 이유?

0

48

1

이렇게 오류가 떠요

0

63

1

AppBar 사용했는데

0

61

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

56

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

63

1

Video Player 프로젝트에 대한 추가 질문

0

53

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

42

1

geolocator 오류때문에 개발진행이 불가능입니다

0

63

1

API 관련 이슈

0

86

2