天津做网站印标做视频网站违法吗

张小明 2026/3/12 13:08:45
天津做网站印标,做视频网站违法吗,一流的江苏网站建设,网站微信支付怎么做## #x1f324;️ 引言在本篇文章中#xff0c;我们将使用 **Flutter** 构建一个跨平台的 **天气预报应用**。它将通过调用免费的天气 API 获取实时天气数据#xff0c;并以美观的卡片形式展示给用户。我们将涵盖以下关键技术点#xff1a;- 网络请求#xff08;http 包️ 引言在本篇文章中我们将使用 **Flutter** 构建一个跨平台的 **天气预报应用**。它将通过调用免费的天气 API 获取实时天气数据并以美观的卡片形式展示给用户。我们将涵盖以下关键技术点- 网络请求http 包- JSON 数据解析- 异步编程Future 与 async/await- 状态管理基础- 自定义 UI 组件最终效果如下![天气应用效果图](https://i.imgur.com/ZKfFwRr.png)*图运行在 Android 上的 Flutter 天气应用*---## 准备工作### 1. 创建项目bashflutter create weather_appcd weather_app### 2. 添加依赖编辑 pubspec.yaml 文件添加网络请求库yamldependencies:flutter:sdk: flutterhttp: ^0.16.0 # 用于发送HTTP请求然后运行bashflutter pub get### 3. 获取天气 API 密钥我们使用 [OpenWeatherMap](https://openweathermap.org/api) 的免费 API。注册后获取你的 API Key例如your_api_key_here 提示不要将密钥硬编码在代码中此处为教学简化处理。---## ️ 定义城市与天气模型创建文件 lib/models/weather.dartdartclass Weather {final String city;final double temperature;final String description;final String iconCode;Weather({required this.city,required this.temperature,required this.description,required this.iconCode,});// 工厂构造函数从 JSON 创建对象factory Weather.fromJson(MapString, dynamic json) {return Weather(city: json[name],temperature: json[main][temp].toDouble(),description: json[weather][0][description],iconCode: json[weather][0][icon],);}}---## 调用天气 API创建 lib/services/weather_service.dartdartimport package:http/http.dart as http;import dart:convert;import ../models/weather.dart;class WeatherService {static const String baseUrl https://api.openweathermap.org/data/2.5/weather;static const String apiKey your_api_key_here; // 替换为你自己的KeyFutureWeather getWeather(String cityName) async {final response await http.get(Uri.parse($baseUrl?q$cityNameappid$apiKeyunitsmetriclangzh_cn));if (response.statusCode 200) {final data json.decode(response.body);return Weather.fromJson(data);} else {throw Exception(Failed to load weather);}}}---## 构建主页面 UI替换 lib/main.dart 内容dartimport package:flutter/material.dart;import package:weather_app/models/weather.dart;import package:weather_app/services/weather_service.dart;void main() {runApp(const MyApp());}class MyApp extends StatelessWidget {const MyApp({super.key});overrideWidget build(BuildContext context) {return MaterialApp(title: Flutter 天气预报,theme: ThemeData(primarySwatch: Colors.blue,useMaterial3: true,),home: const WeatherPage(),debugShowCheckedModeBanner: false,);}}class WeatherPage extends StatefulWidget {const WeatherPage({super.key});overrideStateWeatherPage createState() _WeatherPageState();}class _WeatherPageState extends StateWeatherPage {final TextEditingController _controller TextEditingController();Weather? _weather;bool _loading false;final WeatherService _service WeatherService();overridevoid dispose() {_controller.dispose();super.dispose();}Futurevoid _fetchWeather() async {if (_controller.text.isEmpty) return;setState(() {_loading true;});try {final weather await _service.getWeather(_controller.text);setState(() {_weather weather;_loading false;});} catch (e) {setState(() {_loading false;});ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(错误: $e)),);}}overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text(️ 天气预报),centerTitle: true,),body: Padding(padding: const EdgeInsets.all(16.0),child: Column(children: [Row(children: [Expanded(child: TextField(controller: _controller,decoration: const InputDecoration(labelText: 输入城市名称,border: OutlineInputBorder(),),onSubmitted: (_) _fetchWeather(),),),const SizedBox(width: 8),IconButton(icon: const Icon(Icons.search),onPressed: _fetchWeather,),],),const SizedBox(height: 20),// 加载状态if (_loading)const CircularProgressIndicator()else if (_weather ! null)Expanded(child: Card(elevation: 4,child: Padding(padding: const EdgeInsets.all(20.0),child: Column(children: [Text(${_weather!.city},style: const TextStyle(fontSize: 28,fontWeight: FontWeight.bold,),),const SizedBox(height: 10),Image.network(https://openweathermap.org/img/wn/${_weather!.iconCode}2x.png,width: 100,),Text(${_weather!.temperature.toStringAsFixed(1)}°C,style: const TextStyle(fontSize: 40,color: Colors.orange,),),Text(${_weather!.description}.toUpperCase(),style: const TextStyle(fontSize: 16,color: Colors.grey,),),],),),),)elseconst Expanded(child: Center(child: Text(请输入城市名称查询天气,style: TextStyle(fontSize: 18, color: Colors.grey),),),),],),),);}}---## ️ 运行效果展示### 启动应用bashflutter run### 查询“北京”天气![查询北京天气](https://i.imgur.com/9mXWYvP.png)*图成功显示北京当前天气*### 错误提示示例如果城市不存在会弹出提示![错误提示](https://i.imgur.com/3QzRZbS.png)---## 技术亮点解析| 特性 | 实现方式 ||------|----------|| **网络请求** | 使用 http.get() 获取 JSON 数据 || **JSON 解析** | factory 构造函数 Map 提取字段 || **异步处理** | FutureBuilder 可替代手动状态管理 || **用户体验** | 显示加载动画和错误提示 || **图片加载** | 直接使用 Image.network 加载图标 |---## ️ 安全建议进阶虽然本例直接写入了 API Key但在生产环境中应- 使用环境变量或配置文件- 通过后端代理请求避免密钥泄露- 使用 dotenv 包管理敏感信息yaml# 添加到 pubspec.yamldev_dependencies:dotenv: ^5.0.2---## 扩展功能建议你可以继续优化这个应用✅ 添加定位功能获取当前位置天气✅ 支持多城市收藏列表✅ 展示未来几天预报调用 forecast API✅ 深色模式切换✅ 下拉刷新---## 打包发布构建 APK 发布到手机bashflutter build apk --release生成 IPA需 macOSbashflutter build ipa---## ✅ 总结通过这个项目你学会了如何- 使用 Flutter 构建真实世界的应用- 调用外部 RESTful API- 解析 JSON 并更新 UI- 处理加载、成功、错误三种状态- 设计简洁美观的界面Flutter 让这一切变得简单而高效---
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

凡科建站源码wordpress 上传文章

雷递网 雷建平 12月10日陌陌母公司挚文集团(Nasdaq:MOMO)今日发布了截至2025年9月30日的财报。财报显示,挚文集团2025年前9个月营收为77.91亿元(约10.94亿美元),较上年同期的79.26亿元下降1.7%。挚文集团20…

张小明 2026/3/5 2:40:23 网站建设

惠安县住房和城乡建设部网站设计公司的网站详情

第一章:Open-AutoGLM权限困境的核心挑战在部署和集成 Open-AutoGLM 模型时,权限管理成为系统安全与功能可用性之间的关键矛盾点。该模型通常需要访问敏感数据源、执行远程调用并动态加载插件,而传统权限模型难以平衡灵活性与控制力。权限粒度…

张小明 2026/3/5 2:40:30 网站建设

wordpress+4.2.4中文网站优化和推广方案ppt

Excalidraw AI:当手绘白板遇上智能生成 在一次远程产品评审会上,团队卡在了架构图的绘制上。有人提议用 Figma,但加载缓慢、操作复杂;有人想手画拍照上传,又显得不够正式。就在僵持之际,一位工程师输入一…

张小明 2026/3/5 2:42:28 网站建设

app购物网站建设网站制作哪家实惠

第一章:Open-AutoGLM 金融 APP 账单查询在现代金融服务中,快速、准确地获取账单信息是用户的核心需求之一。Open-AutoGLM 是一款基于自然语言理解与自动化流程编排的智能金融助手,专为提升移动端账单查询效率而设计。通过集成大语言模型与银行…

张小明 2026/3/5 2:40:27 网站建设

集团网站推广建设学校网站前的需求分析报告

智能体规划技术:企业数字化转型的"决策大脑"革命 【免费下载链接】agentflow-planner-7b 项目地址: https://ai.gitcode.com/hf_mirrors/AgentFlow/agentflow-planner-7b 行业痛点:智能体为何总是"半途而废"? 想…

张小明 2026/3/5 2:40:29 网站建设

vps网站设置wordpress 登录模块

3步搞定大模型训练:DeepSeek-V3批次拆分策略实战指南 【免费下载链接】DeepSeek-V3 项目地址: https://gitcode.com/GitHub_Trending/de/DeepSeek-V3 你是不是也遇到过这样的情况:刚把模型参数调好,准备大干一场,结果GPU内…

张小明 2026/3/5 2:40:28 网站建设