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