After Width: | Height: | Size: 2.9 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 785 B |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 638 B |
After Width: | Height: | Size: 575 B |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 818 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 848 B |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 754 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 968 B |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.0 KiB |
After Width: | Height: | Size: 9.8 KiB |
After Width: | Height: | Size: 48 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 7.0 KiB |
@ -0,0 +1,32 @@
|
||||
import 'package:aku_community/model/common/img_model.dart';
|
||||
|
||||
class SwiperModel {
|
||||
int? newsId;
|
||||
String? title;
|
||||
List<ImgModel>? voResourcesImgList;
|
||||
|
||||
SwiperModel({this.newsId, this.title, this.voResourcesImgList});
|
||||
|
||||
SwiperModel.fromJson(Map<String, dynamic> json) {
|
||||
newsId = json['newsId'];
|
||||
title = json['title'];
|
||||
if (json['voResourcesImgList'] != null) {
|
||||
voResourcesImgList = [];
|
||||
json['voResourcesImgList'].forEach((v) {
|
||||
voResourcesImgList!.add(new ImgModel.fromJson(v));
|
||||
});
|
||||
} else {
|
||||
voResourcesImgList = [];
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['newsId'] = this.newsId;
|
||||
data['title'] = this.title;
|
||||
if (this.voResourcesImgList != null) {
|
||||
data['voResourcesImgList'] = this.voResourcesImgList!.map((v) => v.toJson()).toList();
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:velocity_x/velocity_x.dart';
|
||||
|
||||
import 'package:aku_community/base/base_style.dart';
|
||||
import 'package:aku_community/const/resource.dart';
|
||||
import 'package:aku_community/pages/tab_navigator.dart';
|
||||
import 'package:aku_community/widget/bee_scaffold.dart';
|
||||
|
||||
class BorrowExaminePage extends StatefulWidget {
|
||||
|
||||
BorrowExaminePage({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
_BorrowExaminePageState createState() => _BorrowExaminePageState();
|
||||
}
|
||||
|
||||
class _BorrowExaminePageState extends State<BorrowExaminePage> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BeeScaffold(
|
||||
title: '出借结果',
|
||||
body: Center(
|
||||
child: Column(
|
||||
children: [
|
||||
75.w.heightBox,
|
||||
SizedBox(
|
||||
width: 110.w,
|
||||
height: 110.w,
|
||||
child: Image.asset(R.ASSETS_ICONS_EXAMINE_PNG
|
||||
),
|
||||
),
|
||||
48.w.heightBox,
|
||||
'正在审核中'
|
||||
.text
|
||||
.color(ktextPrimary)
|
||||
.size(36.sp)
|
||||
.bold
|
||||
.make(),
|
||||
16.w.heightBox,
|
||||
'使用后请记得归还'
|
||||
.text
|
||||
.color(ktextSubColor)
|
||||
.size(26.sp)
|
||||
.make(),
|
||||
95.w.heightBox,
|
||||
MaterialButton(
|
||||
color: kPrimaryColor,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.circular(8.w)),
|
||||
elevation: 0,
|
||||
hoverElevation: 0,
|
||||
highlightElevation: 0,
|
||||
focusElevation: 0,
|
||||
disabledElevation: 0,
|
||||
padding: EdgeInsets.symmetric(vertical: 24.w),
|
||||
minWidth: double.infinity,
|
||||
onPressed: () {
|
||||
Get.back();},
|
||||
child: '返回物品借还列表'
|
||||
.text
|
||||
.color( ktextPrimary )
|
||||
.size(36.sp)
|
||||
.make(),
|
||||
)
|
||||
],
|
||||
),
|
||||
).pSymmetric(
|
||||
h: 24.w,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import 'package:aku_community/extensions/num_ext.dart';
|
||||
import 'package:aku_community/pages/tab_navigator.dart';
|
||||
import 'package:aku_community/utils/developer_util.dart';
|
||||
|
||||
class TipsDialog {
|
||||
static tipsDialog() async {
|
||||
await Get.dialog(
|
||||
CupertinoAlertDialog(
|
||||
title: Text('功能提醒'),
|
||||
content: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
20.hb,
|
||||
Row(
|
||||
children: [
|
||||
Text('请各位住户注意:'
|
||||
,style: TextStyle(color: Color(0xA6000000),fontSize: 26.sp),),
|
||||
],
|
||||
),
|
||||
20.hb,
|
||||
|
||||
Text('本功能已实现,但当前小区不具备能够使用该功能使用的条件,页面内容仅供参考。'
|
||||
,style: TextStyle(color: Color(0xA6000000),fontSize: 26.sp),textAlign: TextAlign.start,),
|
||||
|
||||
20.hb,
|
||||
|
||||
],
|
||||
),
|
||||
actions: [
|
||||
CupertinoDialogAction(
|
||||
child: Text('确定'),
|
||||
textStyle: TextStyle(color: Color(0xFF007AFF),fontSize: 28.sp),
|
||||
onPressed: () => Get.back(),
|
||||
),
|
||||
],
|
||||
),
|
||||
barrierDismissible: false,
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,139 @@
|
||||
|
||||
import 'package:aku_community/pages/opening_code_page/opening_code_page.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
|
||||
|
||||
import 'package:aku_community/const/resource.dart';
|
||||
|
||||
import 'package:aku_community/utils/headers.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
|
||||
|
||||
class OverlayLivingBtnWidget extends StatefulWidget {
|
||||
|
||||
|
||||
OverlayLivingBtnWidget({Key? key, }) : super(key: key);
|
||||
|
||||
@override
|
||||
_OverlayLivingBtnWidgetState createState() => _OverlayLivingBtnWidgetState();
|
||||
}
|
||||
|
||||
class _OverlayLivingBtnWidgetState extends State<OverlayLivingBtnWidget> with TickerProviderStateMixin{
|
||||
double _topPos = 0;
|
||||
double _leftPos = 0;
|
||||
bool _isMoving = false;
|
||||
double _width = 65;
|
||||
double get _subWidth => _width / 2;
|
||||
double _height = 65;
|
||||
double get _subHeight => _height / 2;
|
||||
bool _isHide = false;
|
||||
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
_topPos = ScreenUtil().screenHeight - 20 - _height -50;
|
||||
_leftPos = _leftPos = ScreenUtil().screenWidth-20 - _width;
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AnimatedPositioned(
|
||||
left: _isHide ? -_width : _leftPos,
|
||||
top: _topPos,
|
||||
child: Container(
|
||||
|
||||
child: Stack(
|
||||
children: [
|
||||
Positioned(
|
||||
left: 0,
|
||||
right: 0,
|
||||
top: 0,
|
||||
bottom: 0,
|
||||
child: Container(
|
||||
width: 65.w,
|
||||
height: 65.w,
|
||||
decoration: BoxDecoration(
|
||||
image: DecorationImage(
|
||||
fit: BoxFit.fill,
|
||||
image:
|
||||
AssetImage(R.ASSETS_ICONS_ICON_MAIN_OPEN_PNG),)
|
||||
),
|
||||
),
|
||||
|
||||
),
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
Get.to(OpeningCodePage());
|
||||
|
||||
},
|
||||
onPanUpdate: (detail) {
|
||||
setState(() {
|
||||
_topPos = detail.globalPosition.dy - _subHeight;
|
||||
_leftPos = detail.globalPosition.dx - _subWidth;
|
||||
});
|
||||
},
|
||||
onPanStart: (detail) {
|
||||
setState(() {
|
||||
_isMoving = true;
|
||||
});
|
||||
},
|
||||
onPanEnd: (detail) {
|
||||
_isMoving = false;
|
||||
if (_leftPos < 20) _leftPos = 20;
|
||||
if (_topPos < ScreenUtil().statusBarHeight + 20)
|
||||
_topPos = (20 + ScreenUtil().statusBarHeight);
|
||||
if ((_leftPos + _width + 20) > ScreenUtil().screenWidth)
|
||||
_leftPos = ScreenUtil().screenWidth - 20 - _width;
|
||||
if ((_topPos + _height + 55 + 20) > ScreenUtil().screenHeight)
|
||||
_topPos = ScreenUtil().screenHeight- 20 - _height - 55;
|
||||
setState(() {});
|
||||
},
|
||||
child: Container(
|
||||
height: _height,
|
||||
width: _width,
|
||||
color: Colors.transparent,
|
||||
),
|
||||
),
|
||||
// Positioned(
|
||||
// right: 5,
|
||||
// top: 5,
|
||||
// child: GestureDetector(
|
||||
// onTap: () {
|
||||
// setState(() {
|
||||
// _isHide = true;
|
||||
// });
|
||||
// },
|
||||
// child: Container(
|
||||
// height: 20,
|
||||
// width: 20,
|
||||
// child: Icon(
|
||||
// Icons.clear,
|
||||
// size: 16,
|
||||
// color: Colors.black,
|
||||
// ),
|
||||
// decoration: BoxDecoration(
|
||||
// color: Colors.white.withOpacity(0.3),
|
||||
// borderRadius: BorderRadius.circular(10),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
],
|
||||
),
|
||||
),
|
||||
curve: Curves.easeInOutCubic,
|
||||
duration: _isMoving ? Duration.zero : Duration(milliseconds: 300),
|
||||
);
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class RectIndicator extends StatelessWidget {
|
||||
final int position;
|
||||
final int count;
|
||||
final Color color;
|
||||
final Color activeColor;
|
||||
final double width;
|
||||
final double activeWidth;
|
||||
final double height;
|
||||
final double radius;
|
||||
|
||||
RectIndicator({
|
||||
Key? key,
|
||||
this.width: 50.0,
|
||||
this.activeWidth: 50.0,
|
||||
this.height: 4,
|
||||
required this.position,
|
||||
required this.count,
|
||||
this.color: Colors.white,
|
||||
required this.radius,
|
||||
this.activeColor: const Color(0xFF3E4750),
|
||||
}) : assert(count != null && position != null),
|
||||
super(key: key);
|
||||
|
||||
_indicator(bool isActive) {
|
||||
return AnimatedContainer(
|
||||
margin: EdgeInsets.symmetric(horizontal: 3.0), //指示器间距
|
||||
height: height,
|
||||
width: isActive ? activeWidth : width,
|
||||
decoration: BoxDecoration(
|
||||
color: isActive ? color : activeColor,
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: Colors.black12,
|
||||
offset: Offset(0.0, 2.0),
|
||||
blurRadius: 0.0)
|
||||
],
|
||||
borderRadius: BorderRadius.circular(radius )),
|
||||
duration: Duration(milliseconds: 150),
|
||||
);
|
||||
}
|
||||
|
||||
_buildPageIndicators() {
|
||||
List<Widget> indicatorList = [];
|
||||
for (int i = 0; i < count; i++) {
|
||||
indicatorList.add(i == position ? _indicator(true) : _indicator(false));
|
||||
}
|
||||
return indicatorList;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: _buildPageIndicators(),
|
||||
);
|
||||
}
|
||||
}
|