Browse Source

Merge branch 'master' into dev

master
w-R 3 years ago
parent
commit
4c027d433b
  1. 39
      lib/home/home_view/home_banner.dart
  2. 3
      lib/home/huixiang_view/huixiang_banner.dart
  3. 2
      lib/home/main_home_page.dart
  4. 3
      lib/home/points_mall_view/points_mall_banner.dart
  5. 8
      lib/integral/intergra_view/integral_task.dart
  6. 7
      lib/main.dart
  7. 6
      lib/mine/coupons_page.dart
  8. 7
      lib/mine/mine_page.dart
  9. 66
      lib/mine/mine_view/mine_view.dart
  10. 153
      lib/qr/qr_code_scan.dart
  11. 202
      lib/qr/qr_share.dart
  12. 45
      lib/qr/qr_share_image.dart
  13. 5
      lib/union/union_details_page.dart
  14. 1
      lib/view_widget/tips_dialog.dart
  15. 1
      lib/web/web_view/web_content.dart
  16. 7
      pubspec.lock
  17. 4
      pubspec.yaml

39
lib/home/home_view/home_banner.dart

@ -1,4 +1,3 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_swiper/flutter_swiper.dart'; import 'package:flutter_swiper/flutter_swiper.dart';
import 'package:huixiang/retrofit/data/banner.dart'; import 'package:huixiang/retrofit/data/banner.dart';
@ -6,7 +5,6 @@ import 'package:huixiang/view_widget/custom_image.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
class HomeBanner extends StatefulWidget { class HomeBanner extends StatefulWidget {
final List<BannerData> bannerData; final List<BannerData> bannerData;
final SwiperController controller; final SwiperController controller;
@ -16,7 +14,6 @@ class HomeBanner extends StatefulWidget {
State<StatefulWidget> createState() { State<StatefulWidget> createState() {
return _HomeBanner(); return _HomeBanner();
} }
} }
class _HomeBanner extends State<HomeBanner> { class _HomeBanner extends State<HomeBanner> {
@ -50,7 +47,8 @@ class _HomeBanner extends State<HomeBanner> {
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
child: MImage( child: MImage(
(widget.bannerData != null && position < widget.bannerData.length) (widget.bannerData != null &&
position < widget.bannerData.length)
? widget.bannerData[position].imgUrl ?? "" ? widget.bannerData[position].imgUrl ?? ""
: "", : "",
radius: BorderRadius.circular(8), radius: BorderRadius.circular(8),
@ -72,30 +70,27 @@ class _HomeBanner extends State<HomeBanner> {
/// contentType 0123 /// contentType 0123
bannerClick(BannerData bannerData) async { bannerClick(BannerData bannerData) async {
switch (bannerData.contentType) { switch (bannerData.contentType) {
// case 0:
// Navigator.of(context).pushNamed('/router/qr_share');
// break;
case 1: case 1:
Navigator.of(context).pushNamed('/router/integral_store_page', Navigator.of(context).pushNamed(
arguments: {"goodsId": bannerData.content}); '/router/integral_store_page',
arguments: {"goodsId": bannerData.content},
);
break; break;
case 2: case 2:
Navigator.of(context) Navigator.of(context).pushNamed(
.pushNamed('/router/web_page', arguments: { '/router/web_page',
"activityId": bannerData.content, arguments: {"activityId": bannerData.content},
}); );
break; break;
case 3: case 3:
Navigator.of(context) Navigator.of(context).pushNamed(
.pushNamed('/router/web_page', arguments: { '/router/web_page',
"articleId": bannerData.content, arguments: {"articleId": bannerData.content},
}); );
break; break;
} }
} }
} }

3
lib/home/huixiang_view/huixiang_banner.dart

@ -63,6 +63,9 @@ class _HuiXiangBanner extends State<HuiXiangBanner> {
/// contentType 0123 /// contentType 0123
bannerClick(BannerData bannerData) async { bannerClick(BannerData bannerData) async {
switch (bannerData.contentType) { switch (bannerData.contentType) {
// case 0:
// Navigator.of(context).pushNamed('/router/qr_share');
// break;
case 1: case 1:
Navigator.of(context).pushNamed('/router/integral_store_page', Navigator.of(context).pushNamed('/router/integral_store_page',
arguments: {"goodsId": bannerData.content}); arguments: {"goodsId": bannerData.content});

2
lib/home/main_home_page.dart

@ -57,7 +57,7 @@ class _MainHomePage extends State<MainHomePage>
leading: false, leading: false,
brightness: Brightness.light, brightness: Brightness.light,
action: Container( action: Container(
margin: EdgeInsets.only(right: 17.w), margin: EdgeInsets.only(right: 8.w),
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
Navigator.of(context).pushNamed('/router/system_msg_page'); Navigator.of(context).pushNamed('/router/system_msg_page');

3
lib/home/points_mall_view/points_mall_banner.dart

@ -70,6 +70,9 @@ class _PointMallBanner extends State<PointMallBanner> {
/// contentType 0123 /// contentType 0123
bannerClick(BannerData bannerData) async { bannerClick(BannerData bannerData) async {
switch (bannerData.contentType) { switch (bannerData.contentType) {
// case 0:
// Navigator.of(context).pushNamed('/router/qr_share');
// break;
case 1: case 1:
Navigator.of(context).pushNamed('/router/integral_store_page', Navigator.of(context).pushNamed('/router/integral_store_page',
arguments: {"goodsId": bannerData.content}); arguments: {"goodsId": bannerData.content});

8
lib/integral/intergra_view/integral_task.dart

@ -100,11 +100,11 @@ class _IntegralTask extends State<IntegralTask> {
margin: EdgeInsets.only(left: 10.w, right: 10.w, top: 16.h), margin: EdgeInsets.only(left: 10.w, right: 10.w, top: 16.h),
child: Column( child: Column(
children: [ children: [
tashItem(widget.signInfo.taskList[position * 3 + 0]), taskItem(widget.signInfo.taskList[position * 3 + 0]),
if (widget.signInfo.taskList.length > (position * 3 + 1)) if (widget.signInfo.taskList.length > (position * 3 + 1))
tashItem(widget.signInfo.taskList[position * 3 + 1]), taskItem(widget.signInfo.taskList[position * 3 + 1]),
if (widget.signInfo.taskList.length > (position * 3 + 2)) if (widget.signInfo.taskList.length > (position * 3 + 2))
tashItem(widget.signInfo.taskList[position * 3 + 2]), taskItem(widget.signInfo.taskList[position * 3 + 2]),
], ],
), ),
); );
@ -125,7 +125,7 @@ class _IntegralTask extends State<IntegralTask> {
return "assets/image/icon_integral_share.png"; return "assets/image/icon_integral_share.png";
} }
Widget tashItem(Task task) { Widget taskItem(Task task) {
return Container( return Container(
margin: EdgeInsets.only(top: 8.h, bottom: 8.h), margin: EdgeInsets.only(top: 8.h, bottom: 8.h),
alignment: Alignment.center, alignment: Alignment.center,

7
lib/main.dart

@ -45,6 +45,8 @@ import 'package:huixiang/order/order_history_page.dart';
import 'package:huixiang/order/store_selector_page.dart'; import 'package:huixiang/order/store_selector_page.dart';
import 'package:huixiang/order/write_off_page.dart'; import 'package:huixiang/order/write_off_page.dart';
import 'package:huixiang/order/write_off_success_page.dart'; import 'package:huixiang/order/write_off_success_page.dart';
import 'package:huixiang/qr/qr_code_scan.dart';
import 'package:huixiang/qr/qr_share.dart';
import 'package:huixiang/setting/about_page.dart'; import 'package:huixiang/setting/about_page.dart';
import 'package:huixiang/setting/help_feedback_page.dart'; import 'package:huixiang/setting/help_feedback_page.dart';
import 'package:huixiang/setting/permission_setting_page.dart'; import 'package:huixiang/setting/permission_setting_page.dart';
@ -271,8 +273,9 @@ Map<String, WidgetBuilder> routers = <String, WidgetBuilder>{
'/router/roll_center_page': (context, {arguments}) => RollCenterPage(), '/router/roll_center_page': (context, {arguments}) => RollCenterPage(),
'/router/edit_remarks_page': (context, {arguments}) => EditRemarksPage(), '/router/edit_remarks_page': (context, {arguments}) => EditRemarksPage(),
'/router/edit_name': (context, {arguments}) => EditName(arguments: arguments), '/router/edit_name': (context, {arguments}) => EditName(arguments: arguments),
'/router/location_map': (context, {arguments}) => '/router/location_map': (context, {arguments}) => LocationMap(arguments: arguments),
LocationMap(arguments: arguments), '/router/qr_scan': (context, {arguments}) => QrCodeScanPage(),
'/router/qr_share': (context, {arguments}) => QrSharePage(),
// '/router/hot_article_details_page': (context, {arguments}) => HotArticleDetailsPage(), // '/router/hot_article_details_page': (context, {arguments}) => HotArticleDetailsPage(),
// '/router/ui_test': (context, {arguments}) => UITest(), // '/router/ui_test': (context, {arguments}) => UITest(),
}; };

6
lib/mine/coupons_page.dart

@ -96,9 +96,9 @@ class _CouponsPage extends State<CouponsPage> {
height: 26.h, height: 26.h,
alignment: Alignment.center, alignment: Alignment.center,
margin: EdgeInsets.only( margin: EdgeInsets.only(
left: 16.w, right: 12.w, top: 10.h, bottom: 14.h), left: 16.w, right: 12.w, top: 10.h, bottom: 14.h,),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(2)), borderRadius: BorderRadius.circular(2),
color: state == 1 ? Colors.white : Color(0xffE5E5E5), color: state == 1 ? Colors.white : Color(0xffE5E5E5),
), ),
child: GestureDetector( child: GestureDetector(
@ -125,7 +125,7 @@ class _CouponsPage extends State<CouponsPage> {
alignment: Alignment.center, alignment: Alignment.center,
margin: EdgeInsets.only(left: 16.w, top: 10.h, bottom: 14.h), margin: EdgeInsets.only(left: 16.w, top: 10.h, bottom: 14.h),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(2)), borderRadius: BorderRadius.circular(2),
color: state == 3 ? Colors.white : Color(0xffE5E5E5), color: state == 3 ? Colors.white : Color(0xffE5E5E5),
), ),
child: GestureDetector( child: GestureDetector(

7
lib/mine/mine_page.dart

@ -100,7 +100,6 @@ class _MinePage extends State<MinePage> with AutomaticKeepAliveClientMixin {
if (baseDate != null && baseDate.isSuccess) { if (baseDate != null && baseDate.isSuccess) {
userInfo = baseDate.data; userInfo = baseDate.data;
SharedPreferences.getInstance().then( SharedPreferences.getInstance().then(
(value) => { (value) => {
value.setString('user', jsonEncode(baseDate.data)), value.setString('user', jsonEncode(baseDate.data)),
@ -120,7 +119,7 @@ class _MinePage extends State<MinePage> with AutomaticKeepAliveClientMixin {
backgroundColor: Color(0xFFF7F7F7), backgroundColor: Color(0xFFF7F7F7),
body: Container( body: Container(
padding: EdgeInsets.only(bottom: 76.h), padding: EdgeInsets.only(bottom: 76.h),
margin: EdgeInsets.only(top: 40.h), // margin: EdgeInsets.only(top: 40.h),
child: SmartRefresher( child: SmartRefresher(
controller: _refreshController, controller: _refreshController,
enablePullDown: true, enablePullDown: true,
@ -128,7 +127,7 @@ class _MinePage extends State<MinePage> with AutomaticKeepAliveClientMixin {
header: MyHeader(), header: MyHeader(),
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
onRefresh: () { onRefresh: () {
setState(() {}); setState((){});
}, },
child: SingleChildScrollView( child: SingleChildScrollView(
child: Container( child: Container(
@ -140,6 +139,8 @@ class _MinePage extends State<MinePage> with AutomaticKeepAliveClientMixin {
builder: (context, snapshot) { builder: (context, snapshot) {
return Column( return Column(
children: [ children: [
SizedBox(height: 36,),
/// ///
MineView( MineView(
userInfo, userInfo,

66
lib/mine/mine_view/mine_view.dart

@ -1,11 +1,13 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/user_info.dart'; import 'package:huixiang/retrofit/data/user_info.dart';
import 'package:huixiang/utils/flutter_utils.dart';
import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/custom_image.dart'; import 'package:huixiang/view_widget/custom_image.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/view_widget/login_tips_dialog.dart'; import 'package:huixiang/view_widget/login_tips_dialog.dart';
import 'package:huixiang/view_widget/request_permission.dart';
import 'package:permission_handler/permission_handler.dart';
class MineView extends StatefulWidget { class MineView extends StatefulWidget {
final UserInfo userInfo; final UserInfo userInfo;
@ -26,24 +28,27 @@ class _MineView extends State<MineView> {
return Column( return Column(
children: [ children: [
Container( Container(
margin: EdgeInsets.only(right: 16.w), // margin: EdgeInsets.only(right: 16.w),
alignment: Alignment.centerRight, alignment: Alignment.centerRight,
child: Row( height: 20,
mainAxisAlignment: MainAxisAlignment.end, // child: Row(
children: [ // mainAxisAlignment: MainAxisAlignment.end,
InkWell( // children: [
onTap: () {}, // InkWell(
child: Container( // onTap: (){
margin: EdgeInsets.all(8.h), // toScan();
child: Image.asset( // },
"assets/image/icon_scan_qr_code.png", // child: Container(
width: 24.w, // margin: EdgeInsets.all(8.h),
height: 24.h, // child: Image.asset(
), // "assets/image/icon_scan_qr_code.png",
), // width: 24.w,
), // height: 24.h,
], // ),
), // ),
// ),
// ],
// ),
), ),
InkWell( InkWell(
onTap: (){ onTap: (){
@ -58,6 +63,31 @@ class _MineView extends State<MineView> {
); );
} }
toScan() async {
if (await Permission.camera.isPermanentlyDenied) {
showCupertinoDialog(
context: context,
builder: (context) {
return RequestPermission(
"assets/image/icon_camera_permission_tips.png",
"您未开启相机权限,请点击开启",
"为了您可以在使用过程中更换头像,请您开启相机使用权限",
S.of(context).kaiqiquanxian,
(result) async {
if (result) {
await openAppSettings();
}
},
heightRatioWithWidth: 0.82,
);
});
} else if (await Permission.camera.isGranted) {
Navigator.of(context).pushNamed('/router/qr_scan');
} else {
await Permission.camera.request();
}
}
/// ///
Widget mineView() { Widget mineView() {
return Container( return Container(

153
lib/qr/qr_code_scan.dart

@ -0,0 +1,153 @@
import 'package:flutter/material.dart';
import 'package:flutter_qr_reader/flutter_qr_reader.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/view_widget/my_appbar.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:huixiang/view_widget/tips_dialog.dart';
import 'package:image_picker_gallery_camera/image_picker_gallery_camera.dart';
import 'package:permission_handler/permission_handler.dart';
class QrCodeScanPage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _QrCodeScanPage();
}
}
class _QrCodeScanPage extends State<QrCodeScanPage> {
GlobalKey<_QrCodeScanPage> qrViewKey = GlobalKey();
QrReaderViewController viewController;
@override
void initState() {
super.initState();
readerHeight = MediaQuery.of(context).size.height;
Future.delayed(Duration(seconds: 1), () {
buildReaderView();
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: Stack(
children: [
Positioned(
child: qrReaderView != null
? Column(
children: [
Expanded(child: qrReaderView, flex: readerHeight.toInt(),),
// Expanded(child: qrReaderView, flex: readerHeight,),
],
)
: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
),
top: 0,
bottom: 0,
left: 0,
right: 0,
),
Positioned(
child: MyAppBar(
title: "扫码",
titleColor: Colors.white,
leadingColor: Colors.white,
brightness: Brightness.dark,
background: Colors.transparent,
action: Container(
alignment: Alignment.center,
margin: EdgeInsets.only(right: 16.w),
child: GestureDetector(
onTap: () {
openStorage();
},
child: Text(
S.of(context).xiangce,
style: TextStyle(
color: Colors.white,
fontSize: 18.sp,
fontWeight: FontWeight.bold,
),
),
),
),
),
top: 0,
left: 0,
right: 0,
),
],
),
),
);
}
QrReaderView qrReaderView;
double readerHeight ;
buildReaderView() async {
double screenWidth = MediaQuery.of(context).size.width;
readerHeight = 1920.0 / 1080.0 * screenWidth;
print("object: $readerHeight");
qrReaderView = await QrReaderView(
key: qrViewKey,
callback: onScan,
width: MediaQuery.of(context).size.width,
height: readerHeight,
);
setState(() {});
}
///
openStorage() async {
if (await Permission.storage.isGranted) {
var image = await ImagePickerGC.pickImage(
context: context, source: ImgSource.Gallery);
String filePath = image.path;
final String data = await FlutterQrReader.imgScan(filePath);
showData(data);
} else {
await Permission.storage.request();
openStorage();
}
}
startCameraResult(String data, List<Offset> offset) async {
showData(data);
this.viewController.stopCamera();
}
Future onScan(QrReaderViewController viewController) async {
this.viewController = viewController;
await this.viewController.startCamera(startCameraResult);
}
showData(String data) {
SmartDialog.show(
widget: Tips(
() {},
text: "$data",
),
onDismiss: () {
Future.delayed(Duration(seconds: 1), () {
this.viewController.startCamera(startCameraResult);
});
});
}
@override
void dispose() {
if (this.viewController != null) {
this.viewController.stopCamera();
}
super.dispose();
}
}

202
lib/qr/qr_share.dart

@ -0,0 +1,202 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:huixiang/qr/qr_share_image.dart';
import 'package:huixiang/retrofit/data/user_info.dart';
import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/view_widget/my_appbar.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:qr_flutter/qr_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart';
class QrSharePage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _QrSharePage();
}
}
class _QrSharePage extends State<QrSharePage> {
String phone = "";
@override
void initState() {
super.initState();
SharedPreferences.getInstance().then((value) {
if (value.getString('user') != null && value.getString('user') != "") {
phone = UserInfo.fromJson(jsonDecode(value.getString('user'))).phone;
setState(() {});
}
});
buildImageInfo();
}
@override
void dispose() {
super.dispose();
SmartDialog.dismiss();
}
@override
Widget build(BuildContext context) {
if (height == null || height == 0)
height = MediaQuery.of(context).size.height;
return Scaffold(
appBar: MyAppBar(
title: "",
titleColor: Colors.black,
background: Color(0xFFF7F7F7),
leadingColor: Colors.black,
action: Container(
alignment: Alignment.center,
margin: EdgeInsets.only(right: 16.w),
child: InkWell(
onTap: () {
SmartDialog.show(
widget: QrShareImagePage("15827991714"),);
},
child: Text(
"分享",
style: TextStyle(
color: Colors.black,
fontSize: 18.sp,
fontWeight: FontWeight.bold,
),
),
),
),
),
body: SingleChildScrollView(
child: Container(
height: height,
child: Stack(
children: [
// if (image != null)
Positioned(
child: Image.asset(
"assets/image/qr_share_bg.png",
fit: BoxFit.fill,
),
top: 0,
left: 0,
bottom: 0,
right: 0,
),
Positioned(
child: Container(
width: MediaQuery.of(context).size.width,
height: height * 0.635,
padding:
EdgeInsets.symmetric(vertical: 28.h, horizontal: 19.w),
child: Stack(
children: [
Positioned(
child: Image.asset(
"assets/image/qr_share_info_bg.png",
fit: BoxFit.fill,
),
top: 0,
left: 0,
bottom: 0,
right: 0,
),
Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
shareTypeTitle("方式一"),
Container(
margin: EdgeInsets.only(left: 16.w, right: 24.w),
child: Text(
"截屏保存下方二维码,邀请他人微信扫一扫识别,长按关注后,完成小游戏,领取优惠券后,即邀请成功哦!",
textAlign: TextAlign.center,
style: TextStyle(
color: Color(0xFF2E3552),
fontSize: 16.sp,
fontWeight: MyFontWeight.regular,
),
),
),
Container(
width: 152.w,
height: 152.w,
decoration: BoxDecoration(
border: Border.all(
color: Color(0xFF2E3552), width: 1),
),
child: QrImage(
data: phone ?? "",
version: QrVersions.auto,
size: 200.w,
gapless: true,
),
),
shareTypeTitle("方式二"),
Container(
margin: EdgeInsets.only(left: 16.w, right: 24.w),
child: Text(
"也可以直接点击右上方的分享给到你想要邀请的人。",
textAlign: TextAlign.center,
style: TextStyle(
color: Color(0xFF2E3552),
fontSize: 16.sp,
fontWeight: MyFontWeight.regular,
),
),
),
SizedBox(
height: 1.h,
),
],
),
],
),
),
left: 0,
bottom: 0,
right: 0,
),
],
),
),
),
);
}
Widget shareTypeTitle(typeText) {
return Container(
width: 90.w,
height: 30.h,
child: Text(
typeText,
style: TextStyle(
fontWeight: MyFontWeight.semi_bold,
fontSize: 18.sp,
color: Color(0xFF2E3552),
),
),
alignment: Alignment.center,
decoration: BoxDecoration(
color: Color(0xFFFFC93B),
border: Border.all(color: Color(0xFF2E3552), width: 1),
),
);
}
Image image;
double height;
buildImageInfo() async {
image = Image.asset("assets/image/qr_share_bg.png");
image.image
.resolve(ImageConfiguration())
.addListener(ImageStreamListener((ImageInfo info, bool _) {
height = info.image.height.toDouble();
setState(() {});
}));
}
}

45
lib/qr/qr_share_image.dart

@ -0,0 +1,45 @@
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart';
import 'dart:ui' as ui;
class QrShareImagePage extends StatefulWidget {
String mobile;
QrShareImagePage(this.mobile);
@override
State<StatefulWidget> createState() {
return _QrShareImagePage();
}
}
class _QrShareImagePage extends State<QrShareImagePage> {
@override
Widget build(BuildContext context) {
widgetToImage();
return Container(
width: 200,
height: 300,
color: Colors.white.withAlpha(123),
child: Text(widget.mobile),
);
}
GlobalKey globalKey = GlobalKey();
widgetToImage() async {
BuildContext buildContext = globalKey.currentContext;
if (null != buildContext) {
RenderRepaintBoundary boundary = buildContext.findRenderObject();
ui.Image image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
// byteData.buffer.asUint16List()
}
}
}

5
lib/union/union_details_page.dart

@ -7,7 +7,6 @@ import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart'; import 'package:flutter/rendering.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:flutter_swiper/flutter_swiper.dart';
import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/generated/l10n.dart';
import 'package:huixiang/retrofit/data/activity.dart'; import 'package:huixiang/retrofit/data/activity.dart';
import 'package:huixiang/retrofit/data/base_data.dart'; import 'package:huixiang/retrofit/data/base_data.dart';
@ -22,12 +21,8 @@ import 'package:huixiang/union/union_view/vip.dart';
import 'package:huixiang/utils/font_weight.dart'; import 'package:huixiang/utils/font_weight.dart';
import 'package:huixiang/utils/min.dart'; import 'package:huixiang/utils/min.dart';
import 'package:huixiang/view_widget/classic_header.dart'; import 'package:huixiang/view_widget/classic_header.dart';
import 'package:huixiang/view_widget/custom_image.dart';
import 'package:huixiang/view_widget/item_title.dart';
import 'package:huixiang/view_widget/my_appbar.dart'; import 'package:huixiang/view_widget/my_appbar.dart';
import 'package:huixiang/view_widget/receive_success.dart'; import 'package:huixiang/view_widget/receive_success.dart';
import 'package:huixiang/view_widget/round_button.dart';
import 'package:huixiang/view_widget/separator.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';

1
lib/view_widget/tips_dialog.dart

@ -34,6 +34,7 @@ class _Tips extends State<Tips> {
width: double.infinity, width: double.infinity,
height: 90.h, height: 90.h,
alignment: Alignment.center, alignment: Alignment.center,
padding: EdgeInsets.all(10),
child: Text( child: Text(
widget.text ?? S.of(context).querenyaoshanchudangqianpinglunma, widget.text ?? S.of(context).querenyaoshanchudangqianpinglunma,
style: TextStyle( style: TextStyle(

1
lib/web/web_view/web_content.dart

@ -26,6 +26,7 @@ class WebContent extends StatefulWidget {
} }
class _WebContent extends State<WebContent> { class _WebContent extends State<WebContent> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Html( return Html(

7
pubspec.lock

@ -368,6 +368,13 @@ packages:
url: "https://pub.flutter-io.cn" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.11" version: "1.0.11"
flutter_qr_reader:
dependency: "direct main"
description:
name: flutter_qr_reader
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.5"
flutter_screenutil: flutter_screenutil:
dependency: "direct main" dependency: "direct main"
description: description:

4
pubspec.yaml

@ -24,7 +24,6 @@ dependencies:
# tpns_flutter_plugin: ^1.1.0 # tpns_flutter_plugin: ^1.1.0
like_button: ^2.0.2 like_button: ^2.0.2
barcode_widget: ^2.0.1
cupertino_icons: ^1.0.2 cupertino_icons: ^1.0.2
# flutter_swiper_null_safety: ^1.0.2 # flutter_swiper_null_safety: ^1.0.2
flutter_swiper: ^1.1.6 flutter_swiper: ^1.1.6
@ -54,6 +53,8 @@ dependencies:
shared_preferences: ^2.0.6 shared_preferences: ^2.0.6
flutter_smart_dialog: ^2.1.6 flutter_smart_dialog: ^2.1.6
barcode_widget: ^2.0.1
flutter_qr_reader: ^1.0.5
qr_flutter: ^4.0.0 qr_flutter: ^4.0.0
url_launcher: ^6.0.5 url_launcher: ^6.0.5
@ -67,6 +68,7 @@ dependencies:
webview_flutter: ^1.0.7 webview_flutter: ^1.0.7
chewie_audio: ^1.1.2 chewie_audio: ^1.1.2
# camera: ^0.5.8+17
photo_view: ^0.11.1 photo_view: ^0.11.1
video_player: ^1.0.1 video_player: ^1.0.1

Loading…
Cancel
Save