티스토리 뷰

받아오는 JSON 데이터 셋

 

pubspec.yaml

name: server_app
description: A new Flutter server application.

# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  http: ^0.12.1


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.3

dev_dependencies:
  flutter_test:
    sdk: flutter

# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  # assets:
  #   - images/a_dot_burr.jpeg
  #   - images/a_dot_ham.jpeg

  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware.

  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages

main.dart

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:async';
import 'dart:convert';
import 'dart:developer';

void main() => runApp(HttpApp());

class Data{
  int memSeq;
  String memNm;

  Data(this.memSeq, this.memNm);

  factory Data.fromJson(dynamic json){
    return Data(json['memSeq'] as int, json['memNm'] as String);
  }

  @override
  String toString(){
    return '{${this.memSeq}, ${this.memNm}}';
  }
}

class HttpApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HttpExampleWidget(),
    );
  }
}

class HttpExampleWidget extends StatefulWidget {
  @override
  _HttpExampleWidgetState createState() => _HttpExampleWidgetState();
}

class _HttpExampleWidgetState extends State<HttpExampleWidget>{
  var _text = "Http Example";
  List<Data> _datas = [];

  void _fetchPosts() async{
      final response = await http.get("http://tizen.adup.kr:15012/admin/member/list");
      _text = utf8.decode(response.bodyBytes);
      var dataObjsJson = jsonDecode(_text)['data'] as List;
      final List<Data> parsedResponse = dataObjsJson.map((dataJson)=>Data.fromJson(dataJson)).toList();
      //print(Member.fromJson(jsonDecode(_text)));
      //print(dataObjs);
      setState(() {
        _datas.clear();
        _datas.addAll(parsedResponse);
      });
      print(parsedResponse);
  }

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

  @override
  Widget build(BuildContext context){
    return Scaffold(
      body: Center(
        child: ListView.builder(
          itemCount: this._datas.length,
          itemBuilder: (context, index){
          final data = this._datas[index];
          return ListTile(
            title: Text(data.memSeq.toString()),
            subtitle: Text(data.memNm),);
      },
        ),
      ),
    );
  }
}

 

결과화면

 

댓글