<aside> ❓ 1. Hero 위젯 사용하여 아래의 결과물을 제작하세요.
</aside>
import 'package:dio/dio.dart';
import 'package:first_app/homework/week5/day19/hero.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
Dio dio = Dio();
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('19일차 과제'),
centerTitle: false,
elevation: 0,
),
body: FutureBuilder(
future: dio.get('<https://sniperfactory.com/sfac/read_dogs>'),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
var data = snapshot.data!.data['body'];
return ListView.builder(
itemCount: data.length,
itemBuilder: (context, index) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: ListTile(
leading: AspectRatio(aspectRatio: 1/1,
child: Hero(
tag: '$index',
child: Image.network(data[index]['url'], fit: BoxFit.cover,)
)
),
title: Text(data[index]['msg']),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (context) => HeroPage(imgUrl: data[index]['url'], heroTag: '$index',)));
},
),
);
},
);
} else {
return Center(child: CircularProgressIndicator());
}
},
),
),
);
}
}
import 'package:flutter/material.dart';
class HeroPage extends StatelessWidget {
const HeroPage({Key? key, required this.imgUrl, required this.heroTag}) : super(key: key);
final String imgUrl;
final String heroTag;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('second page'),
centerTitle: false,
elevation: 0,
),
body: Center(
child: Hero(
tag: heroTag,
child: Image.network(imgUrl)
),
),
);
}
}