flutter:安装第三方库dio 5.9.2,一个简单的get方法例子

一,安装

地址:

https://pub.dev/packages/dio

编辑pubspec.yaml

dependencies:
  dio: ^5.9.2

二,代码

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

class DetailPage extends StatefulWidget {
  @override
  State<DetailPage> createState() => _DetailPageState();
}

class _DetailPageState extends State<DetailPage>  {

  String _title = "标题";
  String _author = "作者";
  String _content = "吟诗一首";
  
  Future<Map<String, dynamic>> getHttp(String url) async {
    Map<String,dynamic> res = {};
    try {
      final response = await Dio().get(url);
      print(response);

      if (response.statusCode == HttpStatus.ok) {
        var data= jsonDecode(response.toString());
        print(data);
        //setContent(data['data']['content'],data['data']['title'],data['data']['author']);
        res['data'] = data['data'];
        res['status'] = 'success';
        res['message'] = '';
        return res;
      } else {
        res['data'] = {};
        res['status'] = 'failed';
        res['message'] = 'response.statusCode:'+response.statusCode.toString();
        return res;
      }
    } catch (e) {
      print(e.toString());
      res['data'] = {};
      res['status'] = 'failed';
      res['message'] = 'exception:'+e.toString();
      return res;
    }
  }


  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.surfaceContainer,
        title: const Text("detail页面"),
      ),

      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[

            ElevatedButton(
              onPressed: () async {
                print("按钮被点击了:");
                String url = "http://www.nihonnoma.net/detail.php";
                var res = await getHttp(url);
                print(res);
                if (res['status'] == 'success') {
                  setState(() {
                    _content = res['data']['content'];
                    _title = res['data']['title'];
                    _author = res['data']['author'];
                  });
                } else {
                   print("报错:"+res['message']);
                }
              },
              child: Text(
                '获取远程数据',
                style: TextStyle(
                  color: Colors.blue,
                ),
              ),
            ),

            Text(
              '$_title',
            ),
            Text(
              '$_author',
            ),

            Text(
              '$_content',
              style: Theme.of(context).textTheme.headlineMedium,
            ),
          ],
        ),
      ),

    );
  }

}

 

三,测试效果:

image

 

posted @ 2026-03-03 14:25  刘宏缔的架构森林  阅读(2)  评论(0)    收藏  举报