[Flutter for openharmony第三方库] flutter小精灵的鸿蒙冒险之旅:dio库玩转待办清单
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net。
[Flutter for openharmony第三方库] flutter小精灵的鸿蒙冒险之旅:dio库玩转待办清单
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
咻~ Flutter小精灵空降OpenHarmony!🌟
嘿!今天我要讲一个超有趣的故事——一只可爱的Flutter小精灵,带着它的小伙伴dio库,来到了OpenHarmony的奇妙世界!它们要一起打造一个超萌的待办清单应用!你准备好了吗?让我们开始冒险吧~
第一关:给数据画个可爱的模样 🎨
首先,我们来给待办事项穿上漂亮的小衣服!TodoItem就是一个超级可爱的小盒子~
class TodoItem {
final int userId;
final int id;
final String title;
final bool completed;
TodoItem({required this.userId, required this.id, required this.title, required this.completed});
factory TodoItem.fromJson(Map<String, dynamic> json) => TodoItem(
userId: json['userId'] as int,
id: json['id'] as int,
title: json['title'] as String,
completed: json['completed'] as bool,
);
}
看!fromJson就像一个神奇的魔法棒,把JSON数据变成了可爱的TodoItem!✨
第二关:dio小助手,出发!🚀
现在轮到dio小助手出场啦!它是我们的网络小英雄,负责去服务器把待办数据接回来~
class TodoService {
static const String _baseUrl = 'https://jsonplaceholder.typicode.com';
final Dio _dio = Dio(BaseOptions(
connectTimeout: const Duration(seconds: 30),
receiveTimeout: const Duration(seconds: 30),
sendTimeout: const Duration(seconds: 30),
headers: {'Content-Type': 'application/json', 'Accept': 'application/json'},
));
Future<List<TodoItem>> getTodos() async {
try {
final response = await _dio.get('$_baseUrl/todos');
return (response.data as List).map((json) => TodoItem.fromJson(json)).toList();
} on DioException catch (e) {
throw Exception(_getCuteErrorMessage(e));
}
}
String _getCuteErrorMessage(DioException e) {
switch (e.type) {
case DioExceptionType.connectionTimeout: return '哎呀,等太久啦!⏰';
case DioExceptionType.connectionError: return '网络小堵车~ 🚗';
default: return '出了点小状况:${e.message} 😅';
}
}
}
错误提示也变得超可爱!用户看到都会心一笑~ 💖
第三关:萌萌UI,变变变!🎭
现在到了最有趣的环节——用状态管理让界面变魔术!数据变了,界面立刻就更新,太神奇啦!
class _TodoListPageState extends State<TodoListPage> {
final TodoService _todoService = TodoService();
List<TodoItem> _todos = [];
bool _isLoading = true;
String? _errorMessage;
void initState() {
super.initState();
_loadTodos();
}
Future<void> _loadTodos() async {
setState(() { _isLoading = true; _errorMessage = null; });
try {
setState(() { _todos = await _todoService.getTodos(); _isLoading = false; });
} catch (e) {
setState(() { _errorMessage = e.toString(); _isLoading = false; });
}
}
}
状态管理就像变魔术,太好玩啦!✨
终极挑战:OpenHarmony设备打卡!📸
特别通行证:给小精灵开绿灯!🚦
在鸿蒙世界里,我们需要给小精灵发一张特别通行证——INTERNET权限!
{
"module": {
"name": "entry",
"type": "entry",
"requestPermissions": [{"name": "ohos.permission.INTERNET"}]
}
}
有了这张通行证,小精灵就能自由访问网络啦!🎫
哇!运行截图大赏!📸
【截图位置1:萌萌加载中~ 🔄】
应用启动啦!一个可爱的加载指示器在转圈圈,就像一只跳舞的小蜜蜂~
【截图位置2:超萌待办清单!📋】
哇塞!数据加载成功!每个待办都有自己的小卡片,绿色勾勾、橙色小闹钟,既直观又可爱!
【截图位置3:点击刷新,丝滑流畅!🖱️】
点击刷新按钮,数据重新加载,就像巧克力在口中融化一样顺滑~
圆满结局:冒险成功!🎊
恭喜恭喜!Flutter小精灵和dio小助手在OpenHarmony的冒险之旅圆满成功啦!它们完美地完成了任务,打造了一个超萌的待办清单应用!
dio库在鸿蒙平台上运行得非常顺畅,就像鱼儿在水中游泳一样自然!我们不需要修改任何dio库的源代码,它就能完美地工作在OpenHarmony设备上!这证明了Flutter生态的强大兼容性,也展示了OpenHarmony平台的开放与包容!
新冒险预告!✨
Flutter for OpenHarmony的世界还有很多有趣的东西等待我们去探索!文件上传下载、WebSocket实时通信、更复杂的状态管理……每一个主题都像是一个新的冒险,等待勇敢的开发者去挑战!
本文的完整代码已经托管到AtomGit平台(https://atomgit.com),欢迎大家去围观、学习、甚至贡献代码!
记住,编程不仅仅是写代码,更是一种创造的乐趣!当你看到自己的应用在OpenHarmony设备上完美运行时,那种成就感是无法言喻的!所以,勇敢地迈出第一步吧,Flutter for OpenHarmony的世界等着你来探索!🚀✨
更多推荐



所有评论(0)