name27 / flutter

0 stars 0 forks source link

dio 데이터 가져오기 #73

Open name27 opened 1 year ago

name27 commented 1 year ago

image

import 'dart:ffi';

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

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

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

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

class _MyAppState extends State<MyApp> {
  var dio = Dio();
  var url = "https://sniperfactory.com/sfac/http_json_data";
  var name;
  var description;
  var image;
  var price;
  void getData() async {
    var res = await dio.post(url);
    name = res.data["item"]["name"];
    description = res.data["item"]["description"];
    image = res.data["item"]["image"];
    price = res.data["item"]["price"];

    setState(() {});
  }

  void initState() {
    super.initState();
    getData();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.transparent,
          elevation: 0,
        ),
        body: Center(
            child: Card(
          child: SizedBox(
            width: 250,
            height: 400,
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
                Expanded(
                    child: Image.network(
                  '$image',
                  fit: BoxFit.cover,
                )),
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: Text(
                    '$name',
                    style: TextStyle(fontWeight: FontWeight.bold),
                  ),
                ),
                SizedBox(
                  height: 8,
                ),
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: Text('$description'),
                ),
                Padding(
                  padding: const EdgeInsets.all(8.0),
                  child: ElevatedButton(
                    onPressed: () {
                      setState(() {});
                    },
                    child: Text('$price원 결제하고 등록'),
                  ),
                ),
              ],
            ),
          ),
        )),
      ),
    );
  }
}