Flutter天气管理插件weather_manager的使用

发布于 1周前 作者 gougou168 来自 Flutter

Flutter天气管理插件weather_manager的使用

Weather Manager Package

一个使用OpenWeather API获取当前及未来天气数据的Dart包。

特性

  • 可以通过纬度和经度获取当前天气数据。
  • 可以获取最多5天内的每小时天气预报。

安装

在你的pubspec.yaml文件中添加以下依赖:

dependencies:
  weather_manager: ^1.0.0

然后运行flutter pub get来安装该包。

使用

导入包
import 'package:weather_manager/weather_manager.dart';
初始化WeatherMan

创建一个带有OpenWeather API密钥的WeatherMan实例:

void main() async {
  WeatherMan weatherMan = WeatherMan(apiKey: 'your_api_key_here');

  // 获取每3小时一次的5天内每小时的天气预报
  final hourlyWeatherForecast = await weatherMan.getHourlyForecast(lat: 26.9287, long: 80.9335);

  // 获取当前天气预报
  final currentWeather = await weatherMan.getCurrentWeatherByLatLong(lat: 26.9287, long: 80.9335);

  print(hourlyWeatherForecast);
  print(currentWeather);
}

示例

下面是一个完整的示例,演示如何使用WeatherMan类来获取天气数据:

import 'package:weather_manager/weather_manager.dart';

void main() async {
  // 创建一个带有API密钥的WeatherMan实例
  WeatherMan weatherMan = WeatherMan(apiKey: 'YOUR_API_KEY');

  try {
    // 获取每3小时一次的5天内每小时的天气预报
    final hourlyWeatherForecast = await weatherMan.getHourlyForecast(
      lat: 26.9287,
      long: 80.9335,
    );

    // 打印每小时天气预报详情
    print('每小时天气预报(5天):');
    print('城市: ${hourlyWeatherForecast.cityName}, ${hourlyWeatherForecast.countryCode}');
    print('坐标: ${hourlyWeatherForecast.coordinates}');
    print('时区偏移: ${hourlyWeatherForecast.timezoneOffset}');
    print('日出时间: ${hourlyWeatherForecast.sunrise}');
    print('日落时间: ${hourlyWeatherForecast.sunset}');
    print('数据点数量: ${hourlyWeatherForecast.dataCount}');
    for (var weatherData in hourlyWeatherForecast.weatherData) {
      print('日期时间: ${weatherData.currentTime}');
      print('温度: ${weatherData.temperature}');
      print('体感温度: ${weatherData.feelsLike}');
      print('最低温度: ${weatherData.minimumTemperature}');
      print('最高温度: ${weatherData.maximumTemperature}');
      print('湿度: ${weatherData.humidity}');
      print('天气状况: ${weatherData.weatherCondition}');
      print('天气描述: ${weatherData.weatherDescription}');
      print('风速: ${weatherData.windSpeed}');
      print('云量: ${weatherData.cloudCover}');
      print('能见度: ${weatherData.visibility}');
      print('-----------------------------------');
    }

    // 获取当前天气预报
    final currentWeather = await weatherMan.getCurrentWeatherByLatLong(
      lat: 26.9287,
      long: 80.9335,
    );

    // 打印当前天气详情
    print('当前天气:');
    print('城市: ${currentWeather.cityName}, ${currentWeather.countryCode}');
    print('坐标: ${currentWeather.coordinates}');
    print('温度: ${currentWeather.weatherData.temperature}');
    print('体感温度: ${currentWeather.weatherData.feelsLike}');
    print('最低温度: ${currentWeather.weatherData.minimumTemperature}');
    print('最高温度: ${currentWeather.weatherData.maximumTemperature}');
    print('湿度: ${currentWeather.weatherData.humidity}');
    print('天气描述: ${currentWeather.weatherData.weatherDescription}');
    print('风速: ${currentWeather.weatherData.windSpeed}');
    print('云量: ${currentWeather.weatherData.cloudCover}');
    print('能见度: ${currentWeather.weatherData.visibility}');
    print('日出时间: ${currentWeather.sunrise}');
    print('日落时间: ${currentWeather.sunset}');
    print('时区偏移: ${currentWeather.timezoneOffset}');
  } catch (e) {
    print('错误: $e');
  }
}

更多关于Flutter天气管理插件weather_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter天气管理插件weather_manager的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter项目中使用weather_manager插件的示例代码。这个插件通常用于获取和管理天气数据。假设你已经添加了weather_manager依赖到你的pubspec.yaml文件中,并运行了flutter pub get

1. 添加依赖

首先,确保你的pubspec.yaml文件中包含weather_manager依赖:

dependencies:
  flutter:
    sdk: flutter
  weather_manager: ^最新版本号 # 替换为实际最新版本号

2. 导入插件并初始化

在你的Flutter项目的Dart文件中导入weather_manager插件,并进行初始化。通常,你会在main.dart或者某个服务类中做这些工作。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Weather App',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: WeatherScreen(),
    );
  }
}

class WeatherScreen extends StatefulWidget {
  @override
  _WeatherScreenState createState() => _WeatherScreenState();
}

class _WeatherScreenState extends State<WeatherScreen> {
  late WeatherManager _weatherManager;
  WeatherData? _weatherData;

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

  void _initWeatherManager() async {
    // 初始化WeatherManager
    _weatherManager = WeatherManager(
      apiKey: '你的API密钥', // 替换为你的天气API密钥
      location: '北京', // 你可以动态获取位置或者硬编码一个位置
    );

    // 获取天气数据
    _weatherData = await _weatherManager.getCurrentWeather();

    // 更新UI
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('天气信息'),
      ),
      body: Center(
        child: _weatherData == null
            ? CircularProgressIndicator()
            : Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text(
                    '温度: ${_weatherData!.temperature}°C',
                    style: TextStyle(fontSize: 24),
                  ),
                  Text(
                    '天气状况: ${_weatherData!.description}',
                    style: TextStyle(fontSize: 18),
                  ),
                ],
              ),
      ),
    );
  }
}

// 假设WeatherData类如下(实际类可能不同,请参考weather_manager文档)
class WeatherData {
  final double temperature;
  final String description;

  WeatherData({required this.temperature, required this.description});
}

3. 注意事项

  • API密钥:确保你有一个有效的天气API密钥,并将其替换为代码中的你的API密钥
  • 位置数据:上面的代码示例中使用了硬编码的位置“北京”,你可以通过定位服务动态获取用户位置。
  • 错误处理:在实际应用中,应该添加错误处理逻辑,比如网络错误或API调用失败的处理。
  • UI更新:使用setState来更新UI,当天气数据发生变化时。

4. 运行应用

确保你的Flutter环境配置正确,然后运行应用:

flutter run

这个示例代码展示了如何初始化weather_manager插件,获取当前天气数据,并在Flutter应用的UI中显示这些数据。根据weather_manager插件的实际API,你可能需要调整代码以适应最新版本的功能和类结构。

回到顶部