19일차 과제 - rlatkddbs99/Flutter GitHub Wiki

Android Emulator - flutter_emulator_5554 2023-02-20 13-43-57

main.dart

import 'package:flutter/material.dart';
import 'package:hero/pages/homePage.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: homePage(),
    );
  }
}

homePage.dart

import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/container.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:hero/pages/hero_Anima.dart';
import 'package:hero/pages/hero_ani.dart';

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

  @override
  State<homePage> createState() => _homePageState();
}

class _homePageState extends State<homePage> {
  Dio dio = Dio();

  Future getData() async {
    var url = "https://sfacassignment-default-rtdb.firebaseio.com/.json";
    var res = await dio.get(url);
    return res.data['body'];
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("19일차 과제"),
      ),
      body: FutureBuilder(
        future: getData(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return Padding(
              padding: const EdgeInsets.all(8.0),
              child: ListView.builder(
                itemCount: snapshot.data?.length,
                itemBuilder: (context, index) {
                  return ListTile(
                    leading: InkWell(
                      onTap: () {
                        Navigator.push(
                            context,
                            MaterialPageRoute(
                                builder: ((context) => hero_Anima(
                                    imgUrl: snapshot.data![index]['url'],
                                    htag: index))));
                      },
                      child: Hero(
                        tag: "dog$index",
                        child: Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: AspectRatio(
                            aspectRatio: 1 / 1,
                            child: Image.network(
                              snapshot.data[index]['url'],
                              fit: BoxFit.fill,
                            ),
                          ),
                        ),
                      ),
                    ),
                    title: Text(snapshot.data[index]['msg'].toString()),
                  );
                },
              ),
            );
          }
          return Text("ㄱㄷ");
        },
      ),
    );
  }
}


hero_Anima.dart

import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/container.dart';
import 'package:flutter/src/widgets/framework.dart';

class hero_Anima extends StatelessWidget {
  const hero_Anima({super.key, required this.imgUrl, required this.htag});
  final int htag;
  final String imgUrl;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("second Page"),
      ),
      body: Center(
        child: Hero(tag: "dog$htag", child: Image.network(imgUrl)),
      ),
    );
  }
}

⚠️ **GitHub.com Fallback** ⚠️