提交 b58fcafe authored 作者: 祁增奎's avatar 祁增奎

Merge branch 'v1.0.3_temp' of…

Merge branch 'v1.0.3_temp' of https://t.clxkj.cn/openSourceLibrary/flutter_clx_base into v1.0.3_auto_load_more # Conflicts: # lib/utils/toast_util.dart
...@@ -44,4 +44,6 @@ ...@@ -44,4 +44,6 @@
* hideName姓名脱敏 * hideName姓名脱敏
* ## 1.2.2 * ## 1.2.2
* hideBankCard银行卡号脱敏 * hideBankCard银行卡号脱敏
* ## 1.2.3
* SearchAppBar增加搜索背景圆角属性设置
\ No newline at end of file
...@@ -2,6 +2,7 @@ import 'dart:io'; ...@@ -2,6 +2,7 @@ import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_clx_base/flutter_clx_base.dart'; import 'package:flutter_clx_base/flutter_clx_base.dart';
import 'package:flutter_clx_base/utils/platform_utils.dart';
import 'base_dio.dart'; import 'base_dio.dart';
...@@ -13,7 +14,7 @@ bool setProxyFlag = false; // 设置代理标识 true 设置 false 不设置 ...@@ -13,7 +14,7 @@ bool setProxyFlag = false; // 设置代理标识 true 设置 false 不设置
/// dio 设置代理uri /// dio 设置代理uri
void setProxyUri(Dio? dio, bool isProdEnv) { void setProxyUri(Dio? dio, bool isProdEnv) {
setProxyFlag = !isProdEnv; //生产环境不设置代理 setProxyFlag = !isProdEnv; //生产环境不设置代理
if (!setProxyFlag) return; if (!setProxyFlag || PlatformUtils.isWeb) return;
String? proxyIP = SpUtil.getString(spProxyIp); String? proxyIP = SpUtil.getString(spProxyIp);
String? proxyPort = SpUtil.getString(spProxyPort); String? proxyPort = SpUtil.getString(spProxyPort);
...@@ -102,7 +103,10 @@ setProxyDialog(context) { ...@@ -102,7 +103,10 @@ setProxyDialog(context) {
spProxyIp, ipController.value.text.toString().trim()); spProxyIp, ipController.value.text.toString().trim());
SpUtil.putString( SpUtil.putString(
spProxyPort, portController.value.text.toString().trim()); spProxyPort, portController.value.text.toString().trim());
exit(0); // 延迟1s 退出,修复保存失败问题
Future.delayed(const Duration(seconds: 1), () {
exit(0);
});
}, },
child: Container( child: Container(
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
...@@ -156,7 +160,8 @@ Widget _textFieldItem({title, controller}) { ...@@ -156,7 +160,8 @@ Widget _textFieldItem({title, controller}) {
child: TextField( child: TextField(
maxLines: 1, maxLines: 1,
controller: controller, controller: controller,
keyboardType: const TextInputType.numberWithOptions(decimal: true), keyboardType:
const TextInputType.numberWithOptions(decimal: true),
decoration: const InputDecoration( decoration: const InputDecoration(
counterText: "", counterText: "",
border: InputBorder.none, //去掉下划线 border: InputBorder.none, //去掉下划线
......
import 'dart:io';
import 'package:flutter/foundation.dart';
/// 平台信息
class PlatformUtils {
static bool _isWeb() {
return kIsWeb == true;
}
static bool _isAndroid() {
return _isWeb() ? false : Platform.isAndroid;
}
static bool _isIOS() {
return _isWeb() ? false : Platform.isIOS;
}
static bool get isWeb => _isWeb();
static bool get isAndroid => _isAndroid();
static bool get isIOS => _isIOS();
}
...@@ -14,7 +14,7 @@ class ToastUtil { ...@@ -14,7 +14,7 @@ class ToastUtil {
toastLength: toastDuration == ToastDuration.long toastLength: toastDuration == ToastDuration.long
? Toast.LENGTH_LONG ? Toast.LENGTH_LONG
: Toast.LENGTH_SHORT, : Toast.LENGTH_SHORT,
gravity: gravity, gravity: ToastGravity.CENTER,
// timeInSecForIos: 1, // timeInSecForIos: 1,
backgroundColor: const Color(0xB3000000), backgroundColor: const Color(0xB3000000),
textColor: Colors.white, textColor: Colors.white,
......
...@@ -55,6 +55,8 @@ class _BaseListWidgetState extends State<BaseListWidget> { ...@@ -55,6 +55,8 @@ class _BaseListWidgetState extends State<BaseListWidget> {
StateType _stateType = StateType.loading; // 列表状态 StateType _stateType = StateType.loading; // 列表状态
// 禁止手动触发滚动,处理刷新过程中禁止滚动列表操作 // 禁止手动触发滚动,处理刷新过程中禁止滚动列表操作
bool _disallowScroll = false; bool _disallowScroll = false;
// 禁止手动触发滚动遮罩State,单独刷新,否则列表项会刷新两次
StateSetter? _disallowScrollState;
bool _callReloading = false; // 触发自动刷新标识 bool _callReloading = false; // 触发自动刷新标识
@override @override
...@@ -103,13 +105,17 @@ class _BaseListWidgetState extends State<BaseListWidget> { ...@@ -103,13 +105,17 @@ class _BaseListWidgetState extends State<BaseListWidget> {
child: buildScrollView(), child: buildScrollView(),
), ),
// 列表刷新时,增加透明遮罩,禁止滚动列表 // 列表刷新时,增加透明遮罩,禁止滚动列表
Visibility( StatefulBuilder(builder: (context, setState) {
visible: _disallowScroll, _disallowScrollState = setState;
child: Container( return Visibility(
visible: _disallowScroll,
child: Container(
color: Colors.transparent, color: Colors.transparent,
width: double.infinity, width: double.infinity,
height: double.infinity), height: double.infinity,
), ),
);
}),
], ],
); );
} }
...@@ -297,7 +303,7 @@ class _BaseListWidgetState extends State<BaseListWidget> { ...@@ -297,7 +303,7 @@ class _BaseListWidgetState extends State<BaseListWidget> {
// 禁止手动触发滚动 // 禁止手动触发滚动
void setDisallowScroll() { void setDisallowScroll() {
if (mounted) { if (mounted) {
setState(() { _disallowScrollState?.call(() {
_disallowScroll = true; _disallowScroll = true;
}); });
} }
......
...@@ -55,6 +55,7 @@ class ImageWidget { ...@@ -55,6 +55,7 @@ class ImageWidget {
BoxFit? fit, BoxFit? fit,
String format = 'png', String format = 'png',
Color? color, Color? color,
String? package,
}) { }) {
return Image.asset( return Image.asset(
ImageUtils.getImgPath(image, format: format), ImageUtils.getImgPath(image, format: format),
...@@ -64,6 +65,7 @@ class ImageWidget { ...@@ -64,6 +65,7 @@ class ImageWidget {
cacheHeight: cacheHeight, cacheHeight: cacheHeight,
fit: fit, fit: fit,
color: color, color: color,
package: package,
/// 忽略图片语义 /// 忽略图片语义
excludeFromSemantics: true, excludeFromSemantics: true,
......
...@@ -2,6 +2,7 @@ import 'dart:io'; ...@@ -2,6 +2,7 @@ import 'dart:io';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_clx_base/utils/platform_utils.dart';
import 'state_layout.dart'; import 'state_layout.dart';
...@@ -292,7 +293,7 @@ class MyBehavior extends ScrollBehavior { ...@@ -292,7 +293,7 @@ class MyBehavior extends ScrollBehavior {
@override @override
Widget buildOverscrollIndicator( Widget buildOverscrollIndicator(
BuildContext context, Widget child, ScrollableDetails details) { BuildContext context, Widget child, ScrollableDetails details) {
if (Platform.isAndroid || Platform.isFuchsia) { if (PlatformUtils.isAndroid) {
return child; return child;
} else { } else {
return super.buildOverscrollIndicator(context, child, details); return super.buildOverscrollIndicator(context, child, details);
......
...@@ -16,6 +16,7 @@ class MyScaffold extends StatelessWidget { ...@@ -16,6 +16,7 @@ class MyScaffold extends StatelessWidget {
final KeyboardActionsConfig? keyboardConfig; final KeyboardActionsConfig? keyboardConfig;
final Widget? floatingActionButton; final Widget? floatingActionButton;
final ScrollController? controller; final ScrollController? controller;
final Widget? endDrawer;
const MyScaffold({ const MyScaffold({
Key? key, Key? key,
...@@ -30,6 +31,7 @@ class MyScaffold extends StatelessWidget { ...@@ -30,6 +31,7 @@ class MyScaffold extends StatelessWidget {
this.keyboardConfig, this.keyboardConfig,
this.floatingActionButton, this.floatingActionButton,
this.controller, this.controller,
this.endDrawer,
}) : super(key: key); }) : super(key: key);
@override @override
...@@ -37,6 +39,7 @@ class MyScaffold extends StatelessWidget { ...@@ -37,6 +39,7 @@ class MyScaffold extends StatelessWidget {
return Scaffold( return Scaffold(
appBar: appBar ?? MyPageAppBar(title: title), appBar: appBar ?? MyPageAppBar(title: title),
backgroundColor: backgroundColor ?? const Color(0xFFf2f3f3), backgroundColor: backgroundColor ?? const Color(0xFFf2f3f3),
endDrawer: endDrawer,
body: SafeArea( body: SafeArea(
child: body ?? child: body ??
MyScrollView( MyScrollView(
......
...@@ -23,6 +23,7 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget { ...@@ -23,6 +23,7 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget {
final bool automaticallyImplyLeading; final bool automaticallyImplyLeading;
final TextEditingController? textEditingController; final TextEditingController? textEditingController;
final double? leadingWidth; final double? leadingWidth;
final double? searchBgRadius; // 搜索背景圆角
const SearchAppBar({ const SearchAppBar({
Key? key, Key? key,
...@@ -46,6 +47,7 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget { ...@@ -46,6 +47,7 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget {
this.automaticallyImplyLeading = true, this.automaticallyImplyLeading = true,
this.textEditingController, this.textEditingController,
this.leadingWidth, this.leadingWidth,
this.searchBgRadius,
}) : super(key: key); }) : super(key: key);
@override @override
...@@ -90,7 +92,8 @@ class _SearchAppBarState extends State<SearchAppBar> { ...@@ -90,7 +92,8 @@ class _SearchAppBarState extends State<SearchAppBar> {
child: Container( child: Container(
margin: widget.margin, margin: widget.margin,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(20.0)), borderRadius: BorderRadius.all(
Radius.circular(widget.searchBgRadius ?? 20.0)),
color: color:
widget.searchBackgroundColor ?? const Color(0xFFEEEEEE), widget.searchBackgroundColor ?? const Color(0xFFEEEEEE),
), ),
......
...@@ -77,6 +77,7 @@ class _StateLayoutState extends State<StateLayout> { ...@@ -77,6 +77,7 @@ class _StateLayoutState extends State<StateLayout> {
img, img,
width: 133.5 * 2, width: 133.5 * 2,
height: 95 * 2, height: 95 * 2,
package: "flutter_clx_base",
) )
: const SizedBox(), : const SizedBox(),
Text( Text(
......
...@@ -87,6 +87,8 @@ flutter: ...@@ -87,6 +87,8 @@ flutter:
# adding or updating assets for this project. # adding or updating assets for this project.
# To add assets to your plugin package, add an assets section, like this: # To add assets to your plugin package, add an assets section, like this:
assets:
- assets/images/
# assets: # assets:
# - images/a_dot_burr.jpeg # - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg # - images/a_dot_ham.jpeg
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论