Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
F
flutter_clx_base
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
openSourceLibrary
flutter_clx_base
Commits
8daea16b
提交
8daea16b
authored
10月 30, 2025
作者:
史晓晨
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat:①升级Flutter SDK 3.24.5②升级AGP 8.0+
上级
c0f30d33
显示空白字符变更
内嵌
并排
正在显示
22 个修改的文件
包含
98 行增加
和
148 行删除
+98
-148
build.gradle
example/android/app/build.gradle
+17
-11
AndroidManifest.xml
example/android/app/src/debug/AndroidManifest.xml
+2
-3
AndroidManifest.xml
example/android/app/src/main/AndroidManifest.xml
+10
-12
AndroidManifest.xml
example/android/app/src/profile/AndroidManifest.xml
+2
-3
build.gradle
example/android/build.gradle
+2
-2
gradle-wrapper.properties
example/android/gradle/wrapper/gradle-wrapper.properties
+2
-2
sample.dart
example/lib/sample.dart
+27
-27
scroll_view.dart
example/lib/sample/scroll_view.dart
+3
-5
skeleton_item.dart
example/lib/sample/skeleton_item.dart
+1
-1
flutter_clx_base.dart
lib/flutter_clx_base.dart
+0
-4
common_utils.dart
lib/utils/common_utils.dart
+2
-4
date_utils.dart
lib/utils/date_utils.dart
+0
-1
keyboard_utils.dart
lib/utils/keyboard_utils.dart
+0
-29
string_util.dart
lib/utils/string_util.dart
+5
-5
toast_util.dart
lib/utils/toast_util.dart
+0
-1
auto_size_text.dart
lib/widget/auto_size_text.dart
+0
-2
base_list_widget.dart
lib/widget/base_list_widget.dart
+2
-2
get_widget.dart
lib/widget/get_widget.dart
+0
-3
image_widget.dart
lib/widget/image_widget.dart
+1
-1
my_scaffold.dart
lib/widget/my_scaffold.dart
+0
-5
my_scroll_view.dart
lib/widget/my_scroll_view.dart
+0
-3
pubspec.yaml
pubspec.yaml
+22
-22
没有找到文件。
example/android/app/build.gradle
浏览文件 @
8daea16b
...
...
@@ -21,38 +21,44 @@ if (flutterVersionName == null) {
flutterVersionName
=
'1.0'
}
// AGP 8.13 支持传统 apply plugin 方式,但需确保插件版本匹配根目录配置
apply
plugin:
'com.android.application'
apply
plugin:
'kotlin-android'
apply
from:
"$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android
{
compileSdkVersion
34
// 1. 升级 compileSdk 至 36(AGP 8.13 最佳兼容版本,替代 compileSdkVersion)
compileSdk
34
// 2. JDK 版本需升级至 17(AGP 8.13 强制要求)
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1
1
targetCompatibility
JavaVersion
.
VERSION_1
1
sourceCompatibility
JavaVersion
.
VERSION_1
7
targetCompatibility
JavaVersion
.
VERSION_1
7
}
// 3. Kotlin JVM 目标版本同步为 17
kotlinOptions
{
jvmTarget
=
'17'
}
sourceSets
{
main
.
java
.
srcDirs
+=
'src/main/kotlin'
}
// 4. AGP 8.0+ 要求显式声明 namespace(替代 AndroidManifest.xml 中的 package)
namespace
"com.example.example"
defaultConfig
{
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId
"com.clx.flutterBase"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion
21
targetSdkVersion
31
applicationId
"com.clx.flutterBase"
// 保持与 namespace 一致
minSdkVersion
21
// 支持最低版本可保留 21(AGP 8.13 兼容)
targetSdkVersion
31
// 建议与 compileSdk 一致(原 31 过低,需升级)
versionCode
flutterVersionCode
.
toInteger
()
versionName
flutterVersionName
}
buildTypes
{
release
{
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
// 建议在 release 环境配置正式签名(此处暂保留 debug 签名用于测试)
signingConfig
signingConfigs
.
debug
}
}
...
...
example/android/app/src/debug/AndroidManifest.xml
浏览文件 @
8daea16b
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.example.example"
>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
</manifest>
example/android/app/src/main/AndroidManifest.xml
浏览文件 @
8daea16b
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.example.example"
>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<application
android:label=
"example"
android:name=
"${applicationName}"
android:icon=
"@mipmap/ic_launcher"
>
android:icon=
"@mipmap/ic_launcher"
android:label=
"example"
>
<activity
android:name=
".MainActivity"
android:configChanges=
"orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:exported=
"true"
android:hardwareAccelerated=
"true"
android:launchMode=
"singleTop"
android:theme=
"@style/LaunchTheme"
android:configChanges=
"orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated=
"true"
android:windowSoftInputMode=
"adjustResize"
>
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
...
...
@@ -22,11 +21,10 @@
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name=
"io.flutter.embedding.android.NormalTheme"
android:resource=
"@style/NormalTheme"
/>
android:resource=
"@style/NormalTheme"
/>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
...
...
example/android/app/src/profile/AndroidManifest.xml
浏览文件 @
8daea16b
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
package=
"com.example.example"
>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
</manifest>
example/android/build.gradle
浏览文件 @
8daea16b
buildscript
{
ext
.
kotlin_version
=
'1.
7.1
0'
ext
.
kotlin_version
=
'1.
8.2
0'
repositories
{
google
()
mavenCentral
()
}
dependencies
{
classpath
'com.android.tools.build:gradle:
7.3.0
'
classpath
'com.android.tools.build:gradle:
8.1.1
'
classpath
"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
...
...
example/android/gradle/wrapper/gradle-wrapper.properties
浏览文件 @
8daea16b
...
...
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath
=
wrapper/dists
zipStoreBase
=
GRADLE_USER_HOME
zipStorePath
=
wrapper/dists
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-7.6.3-all.zip
\ No newline at end of file
distributionUrl
=
https
\:
//services.gradle.org/distributions/gradle-8.1-bin.zip
\ No newline at end of file
example/lib/sample.dart
浏览文件 @
8daea16b
...
...
@@ -15,52 +15,52 @@ class Sample extends StatelessWidget {
return
MyScaffold
(
title:
'Sample'
,
children:
[
GFButton
(
fullWidthButton:
true
,
TextButton
(
onPressed:
()
=>
Get
.
to
(
const
BaseListWidgetTest
()),
text:
'列表'
),
GFButton
(
fullWidthButton:
true
,
child:
const
Text
(
'列表'
),
),
TextButton
(
onPressed:
()
=>
Get
.
to
(
const
DioWidgetTest
()),
text:
'dio'
),
GFButton
(
fullWidthButton:
true
,
child:
const
Text
(
'dio'
),
),
TextButton
(
onPressed:
()
{
Get
.
dialog
(
const
NormalDialog
(
content:
"通用dialog"
));
},
text:
'NormalDialog'
),
GFButton
(
fullWidthButton:
true
,
child:
const
Text
(
'NormalDialog'
),
),
TextButton
(
onPressed:
()
{
// 1、manifest配置权限
requestPermission
(
permissionList:
[
Permission
.
camera
],
toSettingTip:
"请开启相机权限"
);
},
text:
'动态申请权限'
),
GFButton
(
fullWidthButton:
true
,
child:
const
Text
(
'动态申请权限'
),
),
TextButton
(
onPressed:
()
=>
Get
.
to
(
const
ScrollViewPage
()),
text:
'scrollView'
),
GFButton
(
fullWidthButton:
true
,
child:
const
Text
(
'scrollView'
),
),
TextButton
(
onPressed:
()
{
SnackBarUtil
.
show
(
"11111"
);
},
text:
'SnackBar'
),
GFButton
(
fullWidthButton:
true
,
child:
const
Text
(
'SnackBar'
),
),
TextButton
(
onPressed:
()
{
ToastUtil
.
showToast
(
"11111"
);
},
text:
'toast'
),
GFButton
(
fullWidthButton:
true
,
child:
const
Text
(
'toast'
),
),
TextButton
(
onPressed:
()
=>
Get
.
to
(
const
SearchAppBarPage
()),
text:
'SearchAppBar'
),
GFButton
(
fullWidthButton:
true
,
child:
const
Text
(
'SearchAppBar'
),
),
TextButton
(
onPressed:
()
=>
Get
.
to
(
List1Page
()),
text:
'BaseListWidget多次reload无法应问题'
),
child:
const
Text
(
'BaseListWidget多次reload无法应问题'
),
),
],
);
}
...
...
example/lib/sample/scroll_view.dart
浏览文件 @
8daea16b
...
...
@@ -17,16 +17,14 @@ class _ScrollViewPageState extends State<ScrollViewPage> {
return
MyScaffold
(
title:
"scrollView"
,
body:
MyScrollView
(
keyboardConfig:
KeyBoardUtils
.
getKeyboardActionsConfig
(
context
,
<
FocusNode
>[
focusNode1
,
focusNode2
]),
children:
[
TextField
(
focusNode:
focusNode1
),
GFButton
(
fullWidthButton:
true
,
TextButton
(
onPressed:
()
{
ToastUtil
.
showToast
(
"点击按钮"
);
},
text:
'点击按钮'
),
child:
const
Text
(
'点击按钮'
),
),
const
SizedBox
(
height:
500
),
TextField
(
focusNode:
focusNode2
),
],
...
...
example/lib/sample/skeleton_item.dart
浏览文件 @
8daea16b
...
...
@@ -13,7 +13,7 @@ class SkeletonItem extends StatelessWidget {
@override
Widget
build
(
BuildContext
context
)
{
final
themeData
=
Theme
.
of
(
context
);
final
backgroundColor
=
themeData
.
colorScheme
.
surface
Varian
t
;
final
backgroundColor
=
themeData
.
colorScheme
.
surface
ContainerHighes
t
;
final
foregroundColor
=
themeData
.
colorScheme
.
surface
;
if
(
direction
==
Axis
.
vertical
)
{
return
Card
(
...
...
lib/flutter_clx_base.dart
浏览文件 @
8daea16b
...
...
@@ -3,13 +3,9 @@ library flutter_clx_base;
export
'package:dio/dio.dart'
;
export
'package:easy_refresh/easy_refresh.dart'
;
export
'package:flustars_flutter3/flustars_flutter3.dart'
;
export
'package:flutter_cupertino_datetime_picker/flutter_cupertino_datetime_picker.dart'
;
export
'package:flutter_localizations/flutter_localizations.dart'
;
export
'package:get/get.dart'
hide
FormData
hide
MultipartFile
hide
Response
;
export
'package:getwidget/getwidget.dart'
;
export
'package:image_picker/image_picker.dart'
;
export
'package:keyboard_actions/keyboard_actions.dart'
;
export
'package:package_info_plus/package_info_plus.dart'
;
export
'package:permission_handler/permission_handler.dart'
;
export
'package:sp_util/sp_util.dart'
;
...
...
lib/utils/common_utils.dart
浏览文件 @
8daea16b
...
...
@@ -96,10 +96,8 @@ requestPermission({
onFailed:
onRefuse
,
// 权限拒绝回调
onOpenSetting:
()
{
Get
.
dialog
(
WillPopScope
(
onWillPop:
()
{
return
Future
.
value
(
false
);
},
PopScope
(
canPop:
false
,
child:
NormalDialog
(
title:
"温馨提示"
,
content:
toSettingTip
,
...
...
lib/utils/date_utils.dart
浏览文件 @
8daea16b
export
'package:flutter_cupertino_datetime_picker/flutter_cupertino_datetime_picker.dart'
;
lib/utils/keyboard_utils.dart
浏览文件 @
8daea16b
import
'package:flutter/material.dart'
;
import
'package:keyboard_actions/keyboard_actions.dart'
;
class
KeyBoardUtils
{
static
KeyboardActionsConfig
getKeyboardActionsConfig
(
BuildContext
context
,
List
<
FocusNode
>
list
,
{
bool
displayActionBar
=
false
,
// 是否展示actionBar
})
{
return
KeyboardActionsConfig
(
keyboardBarColor:
Colors
.
grey
[
200
],
nextFocus:
true
,
actions:
List
.
generate
(
list
.
length
,
(
i
)
=>
KeyboardActionsItem
(
displayActionBar:
displayActionBar
,
focusNode:
list
[
i
],
toolbarButtons:
[
(
node
)
{
return
GestureDetector
(
onTap:
()
=>
node
.
unfocus
(),
child:
const
Padding
(
padding:
EdgeInsets
.
only
(
right:
16.0
),
child:
Text
(
'关闭'
),
),
);
},
],
)),
);
}
//隐藏键盘
static
void
hideKeyboard
()
{
FocusManager
.
instance
.
primaryFocus
?.
unfocus
();
...
...
lib/utils/string_util.dart
浏览文件 @
8daea16b
...
...
@@ -18,7 +18,7 @@ String txtIsNullWithTitle(txt, title, {nullTxt = "-"}) {
if
(
txt
==
null
||
txt
==
""
)
{
return
nullTxt
;
}
else
{
return
title
+
": "
+
txt
;
return
"
$title
:
$txt
"
;
}
}
...
...
@@ -98,7 +98,7 @@ bool checkEasyPwd(String input, String phone) {
///密码长度8-12位
///密码由数字及大小写英文字母组成
///密码中需包含至少1个大写字母+1个小写字母+1个数字
bool
checkPwdRule
(
String
pwd
){
bool
checkPwdRule
(
String
pwd
)
{
RegExp
regExp
=
RegExp
(
"(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[A-Za-z0-9]{8,12}"
);
return
regExp
.
hasMatch
(
pwd
);
}
...
...
@@ -107,7 +107,7 @@ bool checkPwdRule(String pwd){
///密码长度8-12位
///密码由数字及大小写英文字母组成
///密码中需包含至少1个大写字母或1个小写字母+1个数字
bool
checkPwdRuleDriver
(
String
pwd
){
bool
checkPwdRuleDriver
(
String
pwd
)
{
RegExp
regExp
=
RegExp
(
"(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{8,12}"
);
return
regExp
.
hasMatch
(
pwd
);
}
...
...
@@ -151,7 +151,7 @@ String hideName(String? name) {
/// 隐藏银行卡号
String
hideBankCard
(
String
?
bankCard
)
{
return
!
bankCard
.
isNullOrEmpty
()
?
bankCard
!.
replaceRange
(
0
,
bankCard
.
length
<
4
?
0
:
bankCard
.
length
-
4
,
'**** **** **** ***'
)
?
bankCard
!.
replaceRange
(
0
,
bankCard
.
length
<
4
?
0
:
bankCard
.
length
-
4
,
'**** **** **** ***'
)
:
""
;
}
lib/utils/toast_util.dart
浏览文件 @
8daea16b
import
'dart:io'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_clx_base/common/extension.dart'
;
import
'package:fluttertoast/fluttertoast.dart'
;
...
...
lib/widget/auto_size_text.dart
deleted
100644 → 0
浏览文件 @
c0f30d33
export
'package:auto_size_text/auto_size_text.dart'
;
\ No newline at end of file
lib/widget/base_list_widget.dart
浏览文件 @
8daea16b
...
...
@@ -180,7 +180,7 @@ class _BaseListWidgetState extends State<BaseListWidget> {
ClassicHeader
(
clamping:
_headerProperties
.
clamping
,
backgroundColor:
_headerProperties
.
background
?
Theme
.
of
(
context
).
colorScheme
.
surface
Varian
t
?
Theme
.
of
(
context
).
colorScheme
.
surface
ContainerHighes
t
:
null
,
mainAxisAlignment:
_headerProperties
.
alignment
,
showMessage:
_headerProperties
.
message
,
...
...
@@ -203,7 +203,7 @@ class _BaseListWidgetState extends State<BaseListWidget> {
ClassicFooter
(
clamping:
_footerProperties
.
clamping
,
backgroundColor:
_footerProperties
.
background
?
Theme
.
of
(
context
).
colorScheme
.
surface
Varian
t
?
Theme
.
of
(
context
).
colorScheme
.
surface
ContainerHighes
t
:
null
,
mainAxisAlignment:
_footerProperties
.
alignment
,
showMessage:
_footerProperties
.
message
,
...
...
lib/widget/get_widget.dart
deleted
100644 → 0
浏览文件 @
c0f30d33
export
'package:getwidget/getwidget.dart'
;
lib/widget/image_widget.dart
浏览文件 @
8daea16b
...
...
@@ -30,7 +30,7 @@ class ImageWidget {
url
=
url
!=
null
&&
url
.
isNotEmpty
?
"
$url
?
${Random().nextDouble()}
"
:
""
;
}
if
(
TextUtil
.
isEmpty
(
url
))
{
if
(
url
.
isNullOrEmpty
(
))
{
return
const
SizedBox
();
}
return
OctoImage
(
...
...
lib/widget/my_scaffold.dart
浏览文件 @
8daea16b
import
'package:flutter/material.dart'
;
import
'package:keyboard_actions/keyboard_actions.dart'
;
import
'my_app_bar.dart'
;
import
'my_scroll_view.dart'
;
...
...
@@ -13,7 +12,6 @@ class MyScaffold extends StatelessWidget {
final
String
title
;
final
Widget
?
bottomButton
;
final
CrossAxisAlignment
crossAxisAlignment
;
final
KeyboardActionsConfig
?
keyboardConfig
;
final
Widget
?
floatingActionButton
;
final
ScrollController
?
controller
;
final
Widget
?
endDrawer
;
...
...
@@ -28,7 +26,6 @@ class MyScaffold extends StatelessWidget {
this
.
body
,
this
.
bottomButton
,
this
.
crossAxisAlignment
=
CrossAxisAlignment
.
start
,
this
.
keyboardConfig
,
this
.
floatingActionButton
,
this
.
controller
,
this
.
endDrawer
,
...
...
@@ -46,7 +43,6 @@ class MyScaffold extends StatelessWidget {
padding:
padding
,
bottomButton:
bottomButton
,
crossAxisAlignment:
crossAxisAlignment
,
keyboardConfig:
keyboardConfig
,
controller:
controller
,
children:
children
??
[],
),
...
...
@@ -54,5 +50,4 @@ class MyScaffold extends StatelessWidget {
floatingActionButton:
floatingActionButton
,
);
}
}
lib/widget/my_scroll_view.dart
浏览文件 @
8daea16b
import
'package:flutter/material.dart'
;
import
'package:keyboard_actions/keyboard_actions.dart'
;
/// 本项目通用的布局(SingleChildScrollView)
/// 1.底部存在按钮
...
...
@@ -14,7 +13,6 @@ class MyScrollView extends StatelessWidget {
this
.
physics
=
const
BouncingScrollPhysics
(),
this
.
crossAxisAlignment
=
CrossAxisAlignment
.
start
,
this
.
bottomButton
,
this
.
keyboardConfig
,
this
.
tapOutsideToDismiss
=
false
,
this
.
overScroll
=
16.0
,
this
.
controller
,
...
...
@@ -25,7 +23,6 @@ class MyScrollView extends StatelessWidget {
final
ScrollPhysics
physics
;
final
CrossAxisAlignment
crossAxisAlignment
;
final
Widget
?
bottomButton
;
final
KeyboardActionsConfig
?
keyboardConfig
;
final
ScrollController
?
controller
;
/// 键盘外部按下将其关闭
...
...
pubspec.yaml
浏览文件 @
8daea16b
...
...
@@ -13,53 +13,53 @@ dependencies:
flutter_localizations
:
sdk
:
flutter
# dio https://pub.dev/packages/dio
dio
:
^5.
3.1
dio
:
^5.
9.0
# 时间选择器 https://pub.dev/packages/flutter_cupertino_datetime_picker
flutter_cupertino_datetime_picker
:
^3.0.0
#
flutter_cupertino_datetime_picker: ^3.0.0
# 键盘工具类 https://pub.dev/packages/keyboard_actions
keyboard_actions
:
^4.0.1
#
keyboard_actions: ^4.0.1
# sp https://pub.dev/packages/sp_util
sp_util
:
^2.0.3
# get https://pub.dev/packages/get
get
:
^4.
6.5
get
:
^4.
7.2
# 日志打印 https://pub.dev/packages/logger
logger
:
^
1.2
.2
logger
:
^
2.6
.2
# toast https://pub.dev/packages/fluttertoast
fluttertoast
:
^8.2.1
fluttertoast
:
^8.2.1
4
# webview https://pub.dev/packages/webview_flutter
webview_flutter
:
^4.
0.5
webview_flutter
:
^4.
10.0
# 显示网页Widget https://pub.dev/packages/flutter_widget_from_html_core
flutter_widget_from_html_core
:
^0.1
0.0
flutter_widget_from_html_core
:
^0.1
6.1
# 包信息 https://pub.dev/packages/package_info_plus
package_info_plus
:
^
3.0.3
package_info_plus
:
^
8.3.1
# 权限 https://pub.dev/packages/permission_handler
permission_handler
:
^
9.2.0
permission_handler
:
^
12.0.1
# https://pub.dev/packages/url_launcher
url_launcher
:
^6.
1.2
url_launcher
:
^6.
3.1
# loading https://pub.dev/packages/flutter_easyloading
flutter_easyloading
:
^3.0.5
# https://pub.dev/packages/auto_size_text
auto_size_text
:
^3.0.0
#
auto_size_text: ^3.0.0
# https://pub.flutter-io.cn/packages/getwidget
getwidget
:
^3.0.1
#
getwidget: ^3.0.1
# https://pub.dev/packages/octo_image
octo_image
:
^2.0
.0
# octo_image: ^2.1
.0
# https://pub.dev/packages/cached_network_image
cached_network_image
:
^3.
3.0
cached_network_image
:
^3.
4.1
# https://pub.dev/packages/image_picker
image_picker
:
^
0.8.6
image_picker
:
^
1.1.2
#https://pub.dev/packages/flustars_flutter3
flustars_flutter3
:
^3.0.0
#
flustars_flutter3: ^3.0.0
#https://pub.dev/packages/easy_refresh
easy_refresh
:
^3.
3.1
easy_refresh
:
^3.
4.0
#https://pub.dev/packages/flutter_spinkit
flutter_spinkit
:
^5.1.0
#
flutter_spinkit: ^5.1.0
# https://pub.dev/packages/pretty_dio_logger
pretty_dio_logger
:
^1.
3.1
pretty_dio_logger
:
^1.
4.0
# 获取设备唯一标识 https://pub.dev/packages/unique_identifier
unique_identifier
:
^0.3.0
#
unique_identifier: ^0.3.0
# 设备信息 https://pub.dev/packages/device_info_plus
device_info_plus
:
^
8.1.0
device_info_plus
:
^
11.2.2
#获取设备id https://t.clxkj:cn/openSourceLibrary/device_id_plugin.git
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论