flutter天气预报APP

栏目: IOS · 发布时间: 5年前

内容简介:这是一个使用flutter写的天气预报APP,主要使用了以下几个插件,入门级练练手。首先搜集一些天气预报APP的设计稿,确定一下自己的界面。看到有很多好看的,但是并不想做的太复杂。于是选择了一些简洁的,背景图也都去掉了。然后在PS里大概出一个界面,如下:界面堆好之后,再做一个搜索城市的页面,一个搜索框加列表就可以了,怎么简单怎么来。页面通过右上角的设置按钮进入。

这是一个使用flutter写的天气预报APP,主要使用了以下几个插件,入门级练练手。 dio :网络请求插件,用于获取天气信息 fluttertoast :弹出toast提示信息 shared_preferences :简单的数据存储,用于保存设置过的天气预报信息 intl :日期格式化 项目GitHub地址: d9l_weather

界面

首先搜集一些天气预报APP的设计稿,确定一下自己的界面。看到有很多好看的,但是并不想做的太复杂。于是选择了一些简洁的,背景图也都去掉了。然后在PS里大概出一个界面,如下:

flutter天气预报APP
然后分析一下这个页面,大主体就是一个Column布局排列下来,中间穿插Row布局。详细的布局这里就不写,可以查看源码 home_page.dart

界面堆好之后,再做一个搜索城市的页面,一个搜索框加列表就可以了,怎么简单怎么来。页面通过右上角的设置按钮进入。

接口

页面都写好之后就需要把数据替换成真实数据了,这里使用了和风天气的API获取天气数据,注册之后就能使用。但是普通用户有些接口是不能用的,但是对这个APP来说,能够查到天气信息以及足够了。 新建一个 dio_client.dart 文件,里面放所有API请求方法,这里写成单例模式,如下。

class DioClient {
  factory DioClient() => _getInstance();
  static DioClient get instance => _getInstance();
  static DioClient _instance; // 单例对象

  static DioClient _getInstance() {
    if (_instance == null) {
      _instance = DioClient._internal();
    }
    return _instance;
  }

  DioClient._internal();
}
复制代码

在main函数中初始化单例对象

DioClient();
复制代码

使用方法

DioClient().getRealTimeWeather();
复制代码

如获取实时天气的方法如下:

Future<RealTimeWeather> getRealTimeWeather(String cid) async {
    String url = rootUrl + '/now';

    try {
      Response response = await Dio().get(url, options: options, queryParameters: {
        'location': cid, // 查询的城市id
        'key': key,
      });
// 根据API返回的参数定义的model
      RealTimeWeather realTimeWeather;
      realTimeWeather = RealTimeWeather.fromJson(response.data['HeWeather6'].first);
      if (realTimeWeather.status.contains('permission')) {
        return realTimeWeather;
      }

      realTimeWeather.basic = Basic.fromJson(realTimeWeather.mBasic);
      realTimeWeather.update = Update.fromJson(realTimeWeather.mUpdate);
      realTimeWeather.now = Now.fromJson(realTimeWeather.mNow);
      return realTimeWeather;
    } catch (e) {
      print('getRealTimeWeather error= $e');
      return null;
    }
  }
复制代码

shared_preferences

在搜索完一个城市的天气后,需要把这个城市的 id 保存在 shared_preferences 中,这样关闭app下次再打开的时候才能显示上一次查询的城市天气,或者需要保存多个城市天气预报的时候,也可以保存。 保存只需要一行代码:

SpClient.sp.setString('cid', cid);
复制代码

shared_preferences 的使用也是使用了单例模式,和 dio_client.dart 一样


以上所述就是小编给大家介绍的《flutter天气预报APP》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java夜未眠

Java夜未眠

蔡学镛 / 电子工业出版社 / 2003-4 / 20.00元

本书是一本散文集。作为一名资深程序设计师,作者走笔清新面独特,简练俏皮的文字下,是作者对工作,对人生的理性思考。书中收录的文章内容贴近程序员的生活,能令读者产生强烈共鸣。此外,书中的部分文章也以轻松的风格剖析了学习Java技术时的常见问题,并以专家眼光和经验推荐介绍了一批优秀的技术书籍,旨在帮助读者兴趣盎然地学习Java。一起来看看 《Java夜未眠》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具