Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
F
flutter_clx_base
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
openSourceLibrary
flutter_clx_base
Commits
d02bd486
提交
d02bd486
authored
12月 02, 2025
作者:
张国庆
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 新增同步请求方式,支持解析实体
上级
d9108b8f
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
53 行增加
和
1 行删除
+53
-1
base_dio.dart
lib/api/base_dio.dart
+53
-0
toast_util.dart
lib/utils/toast_util.dart
+0
-1
没有找到文件。
lib/api/base_dio.dart
浏览文件 @
d02bd486
...
...
@@ -153,6 +153,59 @@ abstract class BaseDio {
}
}
}
// 构建网络请求同步请求
Future
<
T
?>
requestSyncWithModel
<
T
>({
required
String
requestUrl
,
required
Method
method
,
// 是否单独处理异常
bool
handleError
=
false
,
Options
?
options
,
Map
<
String
,
dynamic
>?
queryParameters
,
Object
?
data
,
T
Function
(
Map
<
String
,
dynamic
>)?
fromJson
,
})
async
{
try
{
final
Response
response
=
await
dio
.
request
(
requestUrl
,
queryParameters:
queryParameters
,
data:
data
,
options:
_checkOptions
(
method
.
value
,
options
),
);
try
{
final
String
data
=
response
.
data
.
toString
();
final
bool
isCompute
=
data
.
length
>
10
*
1024
;
final
Map
<
String
,
dynamic
>
map
=
isCompute
?
await
jsonTransformer
.
parseJson
(
data
)
:
jsonTransformer
.
parseAndDecode
(
data
);
var
responseCode
=
map
[
'code'
]?.
toString
();
if
(
responseCode
==
"100"
||
responseCode
==
"-100"
)
{
logger
.
e
(
"登录过期:
${map['msg']}
"
);
onLoginExpire
();
return
null
;
}
// 不处理错误时,直接返回null 需要单独处理错误时,返回全部数据部分
if
(
responseCode
!=
"0"
)
{
logger
.
e
(
"请求错误:
${map['code']}
${map['msg']}
"
);
return
handleError
?
map
as
T
?
:
null
;
}
if
(
fromJson
!=
null
)
{
return
handleError
?
fromJson
(
map
)
:
fromJson
(
map
[
'data'
]);
}
return
handleError
?
map
as
T
?
:
map
[
'data'
]
as
T
?;
}
catch
(
e
)
{
logger
.
e
(
"数据解析错误:
${e.toString()}
"
);
return
null
;
}
}
on
DioException
catch
(
e
)
{
var
result
=
await
_handleHttpException
(
e
);
logger
.
e
(
"请求错误:
${result?["message"]}
"
);
// result 为null时,已调用重新登录方法 onLoginExpire,onLoginExpire需重写
return
null
;
}
}
// 处理网络请求成功逻辑
void
_onNetSuccess
(
Response
response
,
NetSuccessCallback
successCallback
,
...
...
lib/utils/toast_util.dart
浏览文件 @
d02bd486
import
'dart:io'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_clx_base/common/extension.dart'
;
import
'package:fluttertoast/fluttertoast.dart'
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论