Skip to main content

http tutorial flutter

 import 'dart:convert';

import 'package:flutter/material.dart';

import 'package:http/http.dart' as http;


class DataFetchScreen extends StatefulWidget {

  @override

  _DataFetchScreenState createState() => _DataFetchScreenState();

}


class _DataFetchScreenState extends State<DataFetchScreen> {

  List<dynamic> data = [];

  bool isLoading = false;

  String errorMessage;


  Future fetchData() async {

    setState(() {

      isLoading = true;

    });


    var url = 'YOUR_API_ENDPOINT';


    try {

      var response = await http.get(url);


      if (response.statusCode == 200) {

        setState(() {

          data = json.decode(response.body);

          errorMessage = null;

        });

      } else {

        setState(() {

          errorMessage = 'Failed to load data: ${response.statusCode}';

        });

      }

    } catch (e) {

      setState(() {

        errorMessage = 'Failed to load data: $e';

      });

    } finally {

      setState(() {

        isLoading = false;

      });

    }

  }


  @override

  void initState() {

    super.initState();

    fetchData();

  }


  @override

  Widget build(BuildContext context) {

    return Scaffold(

      appBar: AppBar(

        title: Text('Data Fetch'),

      ),

      body: isLoading

          ? Center(

              child: CircularProgressIndicator(),

            )

          : errorMessage != null

              ? Center(

                  child: Text(errorMessage),

                )

              : ListView.builder(

                  itemCount: data.length,

                  itemBuilder: (context, index) {

                    return ListTile(

                      title: Text(data[index]['title']),

                      subtitle: Text(data[index]['description']),

                    );

                  },

                ),

    );

  }

}


void main() {

  runApp(MaterialApp(

    home: DataFetchScreen(),

  ));

}


Comments