Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- datetime
- snackbar
- enum
- consumer
- Camera
- controller
- provider
- changenotifierprovider
- Swift
- setstate
- runTransaction
- multiprovider
- borderRadius
- permission
- Firebase
- user
- divider
- reference
- transform
- Navigator
- Snapshot
- swift 문법
- signout
- 문법
- changenotifier
- switch
- platformexception
- globalkey
- ListView.builder
- Stream
Archives
- Today
- Total
코딩하는 제리
[Flutter/Project](Instagram Clone) 커스텀 로딩 위젯 본문
Flutter/Project_InstaClone(완)
[Flutter/Project](Instagram Clone) 커스텀 로딩 위젯
JerryCho 2021. 1. 18. 16:38소스코드
// my_progress_indicator.dart
import 'package:flutter/material.dart';
class MyProgressIndicator extends StatelessWidget {
final double containerSize;
final double progressSize;
const MyProgressIndicator(
{Key key, this.containerSize, this.progressSize = 60})
: super(key: key);
@override
Widget build(BuildContext context) {
return Container(
// width, height가 같아야 정사각형 위젯을 만듦
// size.width 해당 디바이스의 가로 사이즈
width: containerSize,
height: containerSize,
child: Center(
child: SizedBox(
// 인디케이터 박스 사이즈 설정
height: progressSize,
width: progressSize,
child: Image.asset('assets/images/loading_img.gif')),
),
);
}
}
// post.dart
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'my_progress_indicator.dart';
class Post extends StatelessWidget {
// final : 한번 데이터가 저장되면 바뀌지 않음.
final int index;
Size size;
Post(
this.index, {
Key key,
}) : super(key: key);
@override
Widget build(BuildContext context) {
// 해당 디바이스의 화면 사이즈를 가져옴
if (size == null) size = MediaQuery.of(context).size;
return CachedNetworkImage(
// CachedNetworkImage() 받아온 이미지를 캐시파일로 저장해 재사용.
imageUrl: "https://picsum.photos/id/$index/2000/2000",
placeholder: (BuildContext context, String url) {
return MyProgressIndicator(containerSize: size.width);
},
imageBuilder: (BuildContext context, ImageProvider imageProvider) {
return AspectRatio(
aspectRatio: 1 / 1 /* 1대 1의 비율로 이미지 생성 */,
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: imageProvider /* CachedNetworkImage 의 imageUrl */,
fit: BoxFit.cover,
),
),
),
);
},
);
}
}
'Flutter > Project_InstaClone(완)' 카테고리의 다른 글
[Flutter/Project](Instagram Clone) 포스트 액션 버튼 만들기 (0) | 2021.01.19 |
---|---|
[Flutter/Project](Instagram Clone) 포스트 헤더 만들기 (0) | 2021.01.19 |
[Flutter/Project](Instagram Clone) 로딩 위젯 생성 (0) | 2021.01.18 |
[Flutter/Project](Instagram Clone) 온라인 이미지 불러오기 (0) | 2021.01.18 |
[Flutter/Project](Instagram Clone) appBar 및 아이콘 (0) | 2021.01.16 |
Comments