From bba0d4e52ccea6ef7aadf1455f7a7c3f4bec5c55 Mon Sep 17 00:00:00 2001 From: zhang <494089941@qq.com> Date: Sun, 7 Feb 2021 10:59:02 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E7=A7=BB=E9=99=A4**=E6=96=87=E4=BB=B6?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E9=97=AE=E5=8D=B7=E8=B0=83=E6=9F=A5?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../questionnaire_details_page.dart | 282 ------------------ .../questionnaire_detail_page.dart | 72 +++++ .../questionnaire}/questionnaire_page.dart | 5 +- 3 files changed, 76 insertions(+), 283 deletions(-) delete mode 100644 lib/pages/questionnaire_page/questionnaire_details_page/questionnaire_details_page.dart create mode 100644 lib/ui/manager/questionnaire/questionnaire_detail_page.dart rename lib/{pages/questionnaire_page => ui/manager/questionnaire}/questionnaire_page.dart (96%) diff --git a/lib/pages/questionnaire_page/questionnaire_details_page/questionnaire_details_page.dart b/lib/pages/questionnaire_page/questionnaire_details_page/questionnaire_details_page.dart deleted file mode 100644 index 723e4505..00000000 --- a/lib/pages/questionnaire_page/questionnaire_details_page/questionnaire_details_page.dart +++ /dev/null @@ -1,282 +0,0 @@ -// Flutter imports: -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - -// Package imports: -import 'package:flutter_html/flutter_html.dart'; - -// Project imports: -import 'package:akuCommunity/base/base_style.dart'; -import 'package:akuCommunity/routers/page_routers.dart'; -import 'package:akuCommunity/utils/headers.dart'; -import 'package:akuCommunity/widget/bee_scaffold.dart'; -import 'package:akuCommunity/widget/cached_image_wrapper.dart'; - -class QuestionnaireDetailsPage extends StatefulWidget { - final Bundle bundle; - QuestionnaireDetailsPage({Key key, this.bundle}) : super(key: key); - - @override - _QuestionnaireDetailsPageState createState() => - _QuestionnaireDetailsPageState(); -} - -const htmlData = ''' -

亲爱的家长朋友,您好!很高兴您为孩子选择了狮子画 - 室的课程。
- 为了能够在上课中,更好的了解咱们孩子的学习情况和 - 上课感受,更针对性的给孩子们提供更好的学习服务, - 现诚邀请您填写我们的课程满意度调查问卷。所有问卷 - 信息严格保密,请放心填写。 -

-'''; - -class _QuestionnaireDetailsPageState extends State { - TextEditingController _ideaContent = new TextEditingController(); - - String hintText = '您的宝贵意见是我们前进的明灯'; - - List> _listQuestion = [ - { - 'title': '您的身份是?', - 'option': >[ - {'title': '学员', 'isCheck': false}, - {'title': '家长', 'isCheck': false} - ] - }, - { - 'title': '您所学习的课程是?', - 'option': >[ - {'title': '儿童美术', 'isCheck': false}, - {'title': '素描', 'isCheck': false}, - {'title': '国画', 'isCheck': false}, - {'title': '漫画', 'isCheck': false}, - {'title': '书法', 'isCheck': false}, - {'title': '陶艺', 'isCheck': false} - ] - }, - { - 'title': '您选择我们的原因是?', - 'option': >[ - {'title': '师资力量', 'isCheck': false}, - {'title': '教学口碑', 'isCheck': false}, - {'title': '地理位置', 'isCheck': false}, - {'title': '其他人介绍', 'isCheck': false} - ] - }, - { - 'title': '学习后孩子的成绩是否有所提升?', - 'option': >[ - {'title': '有很大变化有很大变化有很大变化有很大变化有很大变化有很大变化', 'isCheck': false}, - {'title': '变化一般', 'isCheck': false}, - {'title': '没变化', 'isCheck': false} - ] - } - ]; - - Widget _questionCard(String title, List> optionList) { - return Container( - margin: EdgeInsets.only(top: 64.w), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - title, - style: TextStyle( - fontWeight: FontWeight.w600, - fontSize: BaseStyle.fontSize32, - color: BaseStyle.color4a4b51, - ), - ), - Container( - margin: EdgeInsets.only(top: 64.w), - child: Wrap( - runSpacing: 48.w, - children: optionList - .map((item) => InkWell( - onTap: () { - setState(() { - item['isCheck'] = !item['isCheck']; - }); - }, - child: Container( - margin: EdgeInsets.only(left: 15.w), - width: MediaQuery.of(context).size.width / 2.35, - child: Row( - children: [ - Icon( - item['isCheck'] - ? Icons.radio_button_checked - : Icons.radio_button_unchecked, - color: item['isCheck'] - ? BaseStyle.colorffc40c - : BaseStyle.color979797, - size: 32.w, - ), - Container( - margin: EdgeInsets.only(left: 16.w), - width: MediaQuery.of(context).size.width / 3.2, - child: Text( - item['title'], - maxLines: 2, - style: TextStyle( - fontWeight: item['isCheck'] - ? FontWeight.w600 - : FontWeight.normal, - fontSize: BaseStyle.fontSize28, - color: BaseStyle.color4a4b51, - ), - ), - ), - ], - ), - ), - )) - .toList(), - ), - ), - ], - ), - ); - } - - Widget _containerTextField() { - return Container( - padding: EdgeInsets.only(top: 24.w, left: 24.w, right: 32.w), - decoration: BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(6)), - border: Border.all(color: Color(0xffd4cfbe), width: 1.0), - ), - child: TextFormField( - cursorColor: Color(0xffffc40c), - style: TextStyle( - fontSize: BaseStyle.fontSize28, - fontWeight: FontWeight.w600, - ), - controller: _ideaContent, - onChanged: (String value) {}, - maxLines: 10, - decoration: InputDecoration( - isDense: true, - contentPadding: EdgeInsets.only( - top: 0, - bottom: 0, - ), - hintText: hintText, - border: InputBorder.none, //去掉输入框的下滑线 - fillColor: Colors.white, - filled: true, - hintStyle: TextStyle( - color: BaseStyle.color999999, - fontSize: BaseStyle.fontSize28, - fontWeight: FontWeight.normal, - ), - ), - ), - ); - } - - Widget _positionedBottomBar() { - return Positioned( - bottom: 0, - child: Container( - alignment: Alignment.center, - height: 98.w, - width: MediaQuery.of(context).size.width, - child: InkWell( - onTap: () {}, - child: Container( - alignment: Alignment.center, - color: BaseStyle.colorffc40c, - padding: EdgeInsets.symmetric( - vertical: 26.5.w, - ), - child: Text( - '确认提交', - style: TextStyle( - fontWeight: FontWeight.w600, - fontSize: BaseStyle.fontSize32, - color: ktextPrimary, - ), - ), - ), - ), - ), - ); - } - - @override - Widget build(BuildContext context) { - return BeeScaffold( - title: '问卷调查', - body: Container( - color: Colors.white, - child: Stack( - children: [ - Container( - padding: EdgeInsets.only( - left: 32.w, - right: 32.w, - bottom: 155.w, - ), - child: ListView( - children: [ - Container( - margin: EdgeInsets.only(top: 24.w), - child: ClipRRect( - borderRadius: BorderRadius.all(Radius.circular(4.w)), - child: CachedImageWrapper( - url: widget.bundle.getMap('details')['imagePath'], - width: 686.w, - height: 228.w, - ), - ), - ), - Container( - margin: EdgeInsets.only(top: 40.w), - alignment: Alignment.center, - child: Text( - widget.bundle.getMap('details')['title'], - style: TextStyle( - fontSize: BaseStyle.fontSize32, - color: BaseStyle.color4a4b51, - fontWeight: FontWeight.w600, - ), - ), - ), - Container( - margin: EdgeInsets.only(top: 35.w), - alignment: Alignment.center, - width: 672.w, - child: Html(data: htmlData), - ), - Container( - margin: EdgeInsets.only(top: 129.w), - child: Column( - children: _listQuestion - .map((item) => _questionCard( - item['title'], - item['option'], - )) - .toList(), - ), - ), - Container( - margin: EdgeInsets.only(top: 80.w, bottom: 24.w), - child: Text( - '您的觉得我们需要改进的地方', - style: TextStyle( - fontSize: BaseStyle.fontSize28, color: ktextPrimary), - ), - ), - _containerTextField(), - ], - ), - ), - _positionedBottomBar(), - ], - ), - ), - ); - } -} diff --git a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart new file mode 100644 index 00000000..dd90ed6b --- /dev/null +++ b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart @@ -0,0 +1,72 @@ +import 'package:akuCommunity/base/base_style.dart'; +import 'package:akuCommunity/constants/api.dart'; +import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; +import 'package:akuCommunity/pages/manager_func.dart'; +import 'package:akuCommunity/widget/bee_scaffold.dart'; +import 'package:akuCommunity/widget/buttons/bottom_button.dart'; +import 'package:flutter/material.dart'; +import 'package:akuCommunity/utils/headers.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; + +class QuestionnaireDetailPage extends StatefulWidget { + final int id; + QuestionnaireDetailPage({Key key, this.id}) : super(key: key); + + @override + _QuestionnaireDetailPageState createState() => + _QuestionnaireDetailPageState(); +} + +class _QuestionnaireDetailPageState extends State { + QuestionnaireDetialModel _model; + bool _onload = true; + + Widget _emptyWidget() { + return Container(); + } + + @override + Widget build(BuildContext context) { + return BeeScaffold( + title: '问卷调查', + body: EasyRefresh( + firstRefresh: true, + header: MaterialHeader(), + onRefresh: () async { + _model = await ManagerFunc.questionnairefindById(widget.id); + _onload = false; + }, + child: _onload + ? _emptyWidget() + : ListView( + padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 24.w), + children: [ + Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(4.w), + ), + width: double.infinity, + height: 228.w, + clipBehavior: Clip.antiAlias, + child: FadeInImage.assetNetwork( + placeholder: R.ASSETS_IMAGES_LOGO_PNG, + image: API.image(_model.voResourcesImgList.first.url)), + ), + 40.w.heightBox, + _model.title.text.color(ktextPrimary).size(32.sp).bold.make(), + 36.w.heightBox, + _model.description.text + .color(ktextPrimary) + .size(28.sp) + .make(), + 130.w.heightBox, + ], + ), + ), + bottomNavi: BottomButton( + child: '确认提交'.text.black.size(32.sp).bold.make(), + onPressed: () {}, + ), + ); + } +} diff --git a/lib/pages/questionnaire_page/questionnaire_page.dart b/lib/ui/manager/questionnaire/questionnaire_page.dart similarity index 96% rename from lib/pages/questionnaire_page/questionnaire_page.dart rename to lib/ui/manager/questionnaire/questionnaire_page.dart index a52baec7..c2533e74 100644 --- a/lib/pages/questionnaire_page/questionnaire_page.dart +++ b/lib/ui/manager/questionnaire/questionnaire_page.dart @@ -2,6 +2,7 @@ import 'package:akuCommunity/base/base_style.dart'; import 'package:akuCommunity/constants/api.dart'; import 'package:akuCommunity/model/manager/questinnaire_model.dart'; import 'package:akuCommunity/pages/things_page/widget/bee_list_view.dart'; +import 'package:akuCommunity/ui/manager/questionnaire/questionnaire_detail_page.dart'; import 'package:akuCommunity/widget/bee_scaffold.dart'; import 'package:akuCommunity/widget/others/stack_avatar.dart'; import 'package:flutter/material.dart'; @@ -111,7 +112,9 @@ class _QuestionnairePageState extends State { // padding: // EdgeInsets.symmetric(horizontal: 30.w, vertical: 8.w), elevation: 0, - onPressed: () {}, + onPressed: () { + QuestionnaireDetailPage(id: model.id,).to(); + }, child: (_getButtonText(model.status)) .text .black From e208d398df50a315fc2ce01a6d177d6f680a038f Mon Sep 17 00:00:00 2001 From: zhang <494089941@qq.com> Date: Sun, 7 Feb 2021 15:15:56 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=9A=E6=A0=B9=E6=8D=AE=E9=97=AE=E5=8D=B7id=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E9=97=AE=E5=8D=B7=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/constants/api.dart | 3 + lib/constants/application_objects.dart | 3 +- lib/extensions/widget_list_ext.dart | 24 +++ .../manager/questionnaire_detail_model.dart | 142 ++++++++++++++++++ lib/pages/manager_func.dart | 12 ++ .../things_page/widget/bee_list_view.dart | 2 +- .../questionnaire_detail_page.dart | 51 ++++++- 7 files changed, 233 insertions(+), 4 deletions(-) create mode 100644 lib/model/manager/questionnaire_detail_model.dart diff --git a/lib/constants/api.dart b/lib/constants/api.dart index e84fca38..a0c6854e 100644 --- a/lib/constants/api.dart +++ b/lib/constants/api.dart @@ -157,6 +157,9 @@ class _Manager { ///问卷调查:app查询所有的问卷调查list String get questionnaireList => '/user/questionnaire/list'; + + ///问卷调查:根据问卷id查询问卷详情 + String get questionnairefindById => '/user/questionnaire/findById'; } class _Community { diff --git a/lib/constants/application_objects.dart b/lib/constants/application_objects.dart index 811ca7f1..28f882e8 100644 --- a/lib/constants/application_objects.dart +++ b/lib/constants/application_objects.dart @@ -1,5 +1,5 @@ // Flutter imports: -import 'package:akuCommunity/pages/questionnaire_page/questionnaire_page.dart'; +import 'package:akuCommunity/ui/manager/questionnaire/questionnaire_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; @@ -15,7 +15,6 @@ import 'package:akuCommunity/pages/life_pay/life_pay_page.dart'; import 'package:akuCommunity/pages/one_alarm/widget/alarm_page.dart'; import 'package:akuCommunity/pages/open_door_page/open_door_page.dart'; import 'package:akuCommunity/pages/opening_code_page/opening_code_page.dart'; -import 'package:akuCommunity/pages/questionnaire_page/questionnaire_details_page/questionnaire_details_page.dart'; import 'package:akuCommunity/pages/things_page/fixed_submit_page.dart'; import 'package:akuCommunity/pages/visitor_access_page/visitor_access_page.dart'; import 'package:akuCommunity/ui/home/application/all_application.dart'; diff --git a/lib/extensions/widget_list_ext.dart b/lib/extensions/widget_list_ext.dart index 03daa608..cbb1e8d6 100644 --- a/lib/extensions/widget_list_ext.dart +++ b/lib/extensions/widget_list_ext.dart @@ -14,3 +14,27 @@ extension WidgetListExt on List { }); } } + +extension OddListExt on List { + List oddList() { + List _newList = []; + this.forEach((element) { + if (this.indexOf(element).isEven) { + _newList.add(element); + } + }); + return _newList; + } +} + +extension EvenListExt on List { + List evenList() { + List _newList = []; + this.forEach((element) { + if (this.indexOf(element).isOdd) { + _newList.add(element); + } + }); + return _newList; + } +} diff --git a/lib/model/manager/questionnaire_detail_model.dart b/lib/model/manager/questionnaire_detail_model.dart new file mode 100644 index 00000000..0c9c17d2 --- /dev/null +++ b/lib/model/manager/questionnaire_detail_model.dart @@ -0,0 +1,142 @@ +class QuestionnaireDetialModel { + int id; + String title; + String description; + String beginDate; + String endDate; + List questionnaireTopicVoList; + List voResourcesImgList; + + QuestionnaireDetialModel( + {this.id, + this.title, + this.description, + this.beginDate, + this.endDate, + this.questionnaireTopicVoList, + this.voResourcesImgList}); + + QuestionnaireDetialModel.fromJson(Map json) { + id = json['id']; + title = json['title']; + description = json['description']; + beginDate = json['beginDate']; + endDate = json['endDate']; + if (json['questionnaireTopicVoList'] != null) { + questionnaireTopicVoList = new List(); + json['questionnaireTopicVoList'].forEach((v) { + questionnaireTopicVoList.add(new QuestionnaireTopicVoList.fromJson(v)); + }); + } + if (json['voResourcesImgList'] != null) { + voResourcesImgList = new List(); + json['voResourcesImgList'].forEach((v) { + voResourcesImgList.add(new VoResourcesImgList.fromJson(v)); + }); + }else voResourcesImgList=[]; + } + + Map toJson() { + final Map data = new Map(); + data['id'] = this.id; + data['title'] = this.title; + data['description'] = this.description; + data['beginDate'] = this.beginDate; + data['endDate'] = this.endDate; + if (this.questionnaireTopicVoList != null) { + data['questionnaireTopicVoList'] = + this.questionnaireTopicVoList.map((v) => v.toJson()).toList(); + } + if (this.voResourcesImgList != null) { + data['voResourcesImgList'] = + this.voResourcesImgList.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class QuestionnaireTopicVoList { + int id; + int type; + String topic; + List questionnaireChoiceVoList; + + QuestionnaireTopicVoList( + {this.id, this.type, this.topic, this.questionnaireChoiceVoList}); + + QuestionnaireTopicVoList.fromJson(Map json) { + id = json['id']; + type = json['type']; + topic = json['topic']; + if (json['questionnaireChoiceVoList'] != null) { + questionnaireChoiceVoList = new List(); + json['questionnaireChoiceVoList'].forEach((v) { + questionnaireChoiceVoList + .add(new QuestionnaireChoiceVoList.fromJson(v)); + }); + }else questionnaireChoiceVoList=[]; + } + + Map toJson() { + final Map data = new Map(); + data['id'] = this.id; + data['type'] = this.type; + data['topic'] = this.topic; + if (this.questionnaireChoiceVoList != null) { + data['questionnaireChoiceVoList'] = + this.questionnaireChoiceVoList.map((v) => v.toJson()).toList(); + }else questionnaireChoiceVoList=[]; + return data; + } +} + +class QuestionnaireChoiceVoList { + int id; + String options; + String answer; + + QuestionnaireChoiceVoList({this.id, this.options, this.answer}); + + QuestionnaireChoiceVoList.fromJson(Map json) { + id = json['id']; + options = json['options']; + answer = json['answer']; + } + + Map toJson() { + final Map data = new Map(); + data['id'] = this.id; + data['options'] = this.options; + data['answer'] = this.answer; + return data; + } +} + +class VoResourcesImgList { + String url; + String size; + int longs; + int paragraph; + int sort; + + VoResourcesImgList( + {this.url, this.size, this.longs, this.paragraph, this.sort}); + + VoResourcesImgList.fromJson(Map json) { + url = json['url']; + size = json['size']; + longs = json['longs']; + paragraph = json['paragraph']; + sort = json['sort']; + } + + Map toJson() { + final Map data = new Map(); + data['url'] = this.url; + data['size'] = this.size; + data['longs'] = this.longs; + data['paragraph'] = this.paragraph; + data['sort'] = this.sort; + return data; + } +} diff --git a/lib/pages/manager_func.dart b/lib/pages/manager_func.dart index 1e79cee7..f281175f 100644 --- a/lib/pages/manager_func.dart +++ b/lib/pages/manager_func.dart @@ -1,6 +1,7 @@ // Package imports: import 'package:akuCommunity/model/manager/article_QR_code_model.dart'; import 'package:akuCommunity/model/manager/moving_company_model.dart'; +import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; import 'package:akuCommunity/model/manager/voting_detail_model.dart'; import 'package:dio/dio.dart'; import 'package:flustars/flustars.dart'; @@ -182,4 +183,15 @@ class ManagerFunc { }); return baseModel; } + + static Future questionnairefindById(int id) async { + BaseModel baseModel = await NetUtil().get( + API.manager.questionnairefindById, + params: { + 'questionnaireId': id, + }, + showMessage: false, + ); + return QuestionnaireDetialModel.fromJson(baseModel.data); + } } diff --git a/lib/pages/things_page/widget/bee_list_view.dart b/lib/pages/things_page/widget/bee_list_view.dart index 12a878c7..8dfed6ca 100644 --- a/lib/pages/things_page/widget/bee_list_view.dart +++ b/lib/pages/things_page/widget/bee_list_view.dart @@ -100,7 +100,7 @@ class _BeeListViewState extends State { params: _params, ); _models = widget.convert(_model); - widget.controller.resetLoadState(); + // widget.controller.resetLoadState(); TODO:待解决 setState(() {}); }, firstRefresh: true, diff --git a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart index dd90ed6b..3ae5731f 100644 --- a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart +++ b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart @@ -3,6 +3,7 @@ import 'package:akuCommunity/constants/api.dart'; import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; import 'package:akuCommunity/pages/manager_func.dart'; import 'package:akuCommunity/widget/bee_scaffold.dart'; +import 'package:akuCommunity/widget/buttons/bee_single_check.dart'; import 'package:akuCommunity/widget/buttons/bottom_button.dart'; import 'package:flutter/material.dart'; import 'package:akuCommunity/utils/headers.dart'; @@ -25,6 +26,42 @@ class _QuestionnaireDetailPageState extends State { return Container(); } + Widget _singleCheck(String title, List answers) { + return Container( + width: double.infinity, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + title.text.black.size(32.sp).bold.make(), + 64.w.heightBox, + Flex( + direction: Axis.horizontal, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ...answers.oddList().map((e){ + return Row( + children: [ + BeeSingleCheck( + value: e.id, + groupValue: , + ), + ], + ); + }).toList(), + ].sepWidget(separate: 48.w.heightBox), + ).expand(flex: 1), + Column( + children: [], + ).expand(flex: 1), + ], + ) + ], + ), + ); + } + @override Widget build(BuildContext context) { return BeeScaffold( @@ -35,6 +72,7 @@ class _QuestionnaireDetailPageState extends State { onRefresh: () async { _model = await ManagerFunc.questionnairefindById(widget.id); _onload = false; + setState(() {}); }, child: _onload ? _emptyWidget() @@ -53,13 +91,24 @@ class _QuestionnaireDetailPageState extends State { image: API.image(_model.voResourcesImgList.first.url)), ), 40.w.heightBox, - _model.title.text.color(ktextPrimary).size(32.sp).bold.make(), + Container( + width: double.infinity, + alignment: Alignment.center, + child: _model.title.text + .color(ktextPrimary) + .size(32.sp) + .bold + .make()), 36.w.heightBox, _model.description.text .color(ktextPrimary) .size(28.sp) .make(), 130.w.heightBox, + _singleCheck( + 'title', + _model.questionnaireTopicVoList.first + .questionnaireChoiceVoList) ], ), ), From c0e98280a7e0491fb4b099ffe2d6da2cceee3697 Mon Sep 17 00:00:00 2001 From: zhang <494089941@qq.com> Date: Sun, 7 Feb 2021 15:36:53 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=97=AE=E5=8D=B7?= =?UTF-8?q?=E8=B0=83=E6=9F=A5=E5=8D=95=E9=80=89=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../questionnaire_detail_page.dart | 86 ++++++++++--------- .../questionnaire_siglecheck.dart | 86 +++++++++++++++++++ 2 files changed, 133 insertions(+), 39 deletions(-) create mode 100644 lib/ui/manager/questionnaire/questionnaire_siglecheck.dart diff --git a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart index 3ae5731f..d6d5825b 100644 --- a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart +++ b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart @@ -2,6 +2,7 @@ import 'package:akuCommunity/base/base_style.dart'; import 'package:akuCommunity/constants/api.dart'; import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; import 'package:akuCommunity/pages/manager_func.dart'; +import 'package:akuCommunity/ui/manager/questionnaire/questionnaire_siglecheck.dart'; import 'package:akuCommunity/widget/bee_scaffold.dart'; import 'package:akuCommunity/widget/buttons/bee_single_check.dart'; import 'package:akuCommunity/widget/buttons/bottom_button.dart'; @@ -21,46 +22,46 @@ class QuestionnaireDetailPage extends StatefulWidget { class _QuestionnaireDetailPageState extends State { QuestionnaireDetialModel _model; bool _onload = true; - + int _select; Widget _emptyWidget() { return Container(); } - Widget _singleCheck(String title, List answers) { - return Container( - width: double.infinity, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - title.text.black.size(32.sp).bold.make(), - 64.w.heightBox, - Flex( - direction: Axis.horizontal, - children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ...answers.oddList().map((e){ - return Row( - children: [ - BeeSingleCheck( - value: e.id, - groupValue: , - ), - ], - ); - }).toList(), - ].sepWidget(separate: 48.w.heightBox), - ).expand(flex: 1), - Column( - children: [], - ).expand(flex: 1), - ], - ) - ], - ), - ); - } + // Widget _singleCheck(String title, List answers) { + // return Container( + // width: double.infinity, + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // title.text.black.size(32.sp).bold.make(), + // 64.w.heightBox, + // Flex( + // direction: Axis.horizontal, + // children: [ + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ...answers.oddList().map((e){ + // return Row( + // children: [ + // BeeSingleCheck( + // value: e.id, + // groupValue: , + // ), + // ], + // ); + // }).toList(), + // ].sepWidget(separate: 48.w.heightBox), + // ).expand(flex: 1), + // Column( + // children: [], + // ).expand(flex: 1), + // ], + // ) + // ], + // ), + // ); + // } @override Widget build(BuildContext context) { @@ -105,9 +106,16 @@ class _QuestionnaireDetailPageState extends State { .size(28.sp) .make(), 130.w.heightBox, - _singleCheck( - 'title', - _model.questionnaireTopicVoList.first + QuestionnaireSingleCheck( + title: 'title', + selected: _select, + onPressed: (id) { + _select = id; + setState(() { + + }); + }, + answers: _model.questionnaireTopicVoList.first .questionnaireChoiceVoList) ], ), diff --git a/lib/ui/manager/questionnaire/questionnaire_siglecheck.dart b/lib/ui/manager/questionnaire/questionnaire_siglecheck.dart new file mode 100644 index 00000000..1970e827 --- /dev/null +++ b/lib/ui/manager/questionnaire/questionnaire_siglecheck.dart @@ -0,0 +1,86 @@ +import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; +import 'package:akuCommunity/widget/buttons/bee_single_check.dart'; +import 'package:flutter/material.dart'; +import 'package:akuCommunity/utils/headers.dart'; + +class QuestionnaireSingleCheck extends StatefulWidget { + final String title; + final List answers; + final int selected; + final Function(int) onPressed; + QuestionnaireSingleCheck( + {Key key, this.title, this.answers, this.selected, this.onPressed}) + : super(key: key); + + @override + _QuestionnaireSingleCheckState createState() => + _QuestionnaireSingleCheckState(); +} + +class _QuestionnaireSingleCheckState extends State { + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + widget.title.text.black.size(32.sp).bold.make(), + 64.w.heightBox, + Padding( + padding: EdgeInsets.symmetric(horizontal: 96.w), + child: Flex( + direction: Axis.horizontal, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ...widget.answers.oddList().map((e) { + return Row( + children: [ + GestureDetector( + onTap: () { + widget.onPressed(e.id); + }, + child: BeeSingleCheck( + value: e.id, + groupValue: widget.selected, + ), + ), + 16.w.widthBox, + e.answer.text.black.size(28.sp).make(), + ], + ); + }).toList(), + ].sepWidget(separate: 48.w.heightBox), + ).expand(flex: 1), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ...widget.answers.evenList().map((e) { + return Row( + children: [ + GestureDetector( + onTap: () { + widget.onPressed(e.id); + }, + child: BeeSingleCheck( + value: e.id, + groupValue: widget.selected, + ), + ), + 16.w.widthBox, + e.answer.text.black.size(28.sp).make(), + ], + ); + }).toList(), + ].sepWidget(separate: 48.w.heightBox), + ).expand(flex: 1), + ], + ), + ) + ], + ), + ); + } +} From b2384d772dd7d87f4d745a58e062878a3a7b0197 Mon Sep 17 00:00:00 2001 From: zhang <494089941@qq.com> Date: Sun, 7 Feb 2021 16:08:10 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=97=AE=E5=8D=B7?= =?UTF-8?q?=E8=B0=83=E6=9F=A5=E5=A4=9A=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../questionnaire_detail_page.dart | 58 ++++-------- .../questionnaire_siglecheck.dart | 10 ++- .../questionnarie_raido_check.dart | 90 +++++++++++++++++++ lib/widget/buttons/bee_check_radio.dart | 6 +- 4 files changed, 119 insertions(+), 45 deletions(-) create mode 100644 lib/ui/manager/questionnaire/questionnarie_raido_check.dart diff --git a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart index d6d5825b..4b1ba498 100644 --- a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart +++ b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart @@ -3,6 +3,7 @@ import 'package:akuCommunity/constants/api.dart'; import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; import 'package:akuCommunity/pages/manager_func.dart'; import 'package:akuCommunity/ui/manager/questionnaire/questionnaire_siglecheck.dart'; +import 'package:akuCommunity/ui/manager/questionnaire/questionnarie_raido_check.dart'; import 'package:akuCommunity/widget/bee_scaffold.dart'; import 'package:akuCommunity/widget/buttons/bee_single_check.dart'; import 'package:akuCommunity/widget/buttons/bottom_button.dart'; @@ -23,46 +24,11 @@ class _QuestionnaireDetailPageState extends State { QuestionnaireDetialModel _model; bool _onload = true; int _select; + List _radio = []; Widget _emptyWidget() { return Container(); } - // Widget _singleCheck(String title, List answers) { - // return Container( - // width: double.infinity, - // child: Column( - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // title.text.black.size(32.sp).bold.make(), - // 64.w.heightBox, - // Flex( - // direction: Axis.horizontal, - // children: [ - // Column( - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // ...answers.oddList().map((e){ - // return Row( - // children: [ - // BeeSingleCheck( - // value: e.id, - // groupValue: , - // ), - // ], - // ); - // }).toList(), - // ].sepWidget(separate: 48.w.heightBox), - // ).expand(flex: 1), - // Column( - // children: [], - // ).expand(flex: 1), - // ], - // ) - // ], - // ), - // ); - // } - @override Widget build(BuildContext context) { return BeeScaffold( @@ -111,12 +77,24 @@ class _QuestionnaireDetailPageState extends State { selected: _select, onPressed: (id) { _select = id; - setState(() { - - }); + setState(() {}); }, answers: _model.questionnaireTopicVoList.first - .questionnaireChoiceVoList) + .questionnaireChoiceVoList), + QuestionnaireRadioCheck( + title: 'title', + selected: _radio, + answers: _model.questionnaireTopicVoList.first + .questionnaireChoiceVoList, + onPressed: (id) { + if (_radio.contains(id)) { + _radio.remove(id); + } else { + _radio.add(id); + } + setState(() {}); + }, + ), ], ), ), diff --git a/lib/ui/manager/questionnaire/questionnaire_siglecheck.dart b/lib/ui/manager/questionnaire/questionnaire_siglecheck.dart index 1970e827..e86e4663 100644 --- a/lib/ui/manager/questionnaire/questionnaire_siglecheck.dart +++ b/lib/ui/manager/questionnaire/questionnaire_siglecheck.dart @@ -7,9 +7,13 @@ class QuestionnaireSingleCheck extends StatefulWidget { final String title; final List answers; final int selected; - final Function(int) onPressed; + final Function(int id) onPressed; QuestionnaireSingleCheck( - {Key key, this.title, this.answers, this.selected, this.onPressed}) + {Key key, + @required this.title, + @required this.answers, + @required this.selected, + @required this.onPressed}) : super(key: key); @override @@ -54,7 +58,7 @@ class _QuestionnaireSingleCheckState extends State { }).toList(), ].sepWidget(separate: 48.w.heightBox), ).expand(flex: 1), - Column( + Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ ...widget.answers.evenList().map((e) { diff --git a/lib/ui/manager/questionnaire/questionnarie_raido_check.dart b/lib/ui/manager/questionnaire/questionnarie_raido_check.dart new file mode 100644 index 00000000..17252f82 --- /dev/null +++ b/lib/ui/manager/questionnaire/questionnarie_raido_check.dart @@ -0,0 +1,90 @@ +import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; +import 'package:akuCommunity/widget/buttons/bee_check_radio.dart'; +import 'package:flutter/material.dart'; +import 'package:akuCommunity/utils/headers.dart'; + +class QuestionnaireRadioCheck extends StatefulWidget { + final String title; + final List answers; + final List selected; + final Function(int id) onPressed; + QuestionnaireRadioCheck( + {Key key, + @required this.title, + @required this.answers, + @required this.selected, + @required this.onPressed}) + : super(key: key); + + @override + _QuestionnaireRadioCheckState createState() => + _QuestionnaireRadioCheckState(); +} + +class _QuestionnaireRadioCheckState extends State { + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + widget.title.text.black.size(32.sp).bold.make(), + 64.w.heightBox, + Padding( + padding: EdgeInsets.symmetric(horizontal: 96.w), + child: Flex( + direction: Axis.horizontal, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ...widget.answers.oddList().map((e) { + return Row( + children: [ + GestureDetector( + onTap: () { + widget.onPressed(e.id); + }, + child: BeeCheckRadio( + value: e.id, + groupValue: widget.selected, + ), + ), + 16.w.widthBox, + e.answer.text.black.size(28.sp).make(), + ], + ); + }).toList(), + ].sepWidget(separate: 48.w.heightBox), + ).expand(flex: 1), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ...widget.answers.evenList().map((e) { + return Row( + children: [ + GestureDetector( + onTap: () { + widget.onPressed(e.id); + }, + child: BeeCheckRadio( + value: e.id, + groupValue: widget.selected, + ), + ), + 16.w.widthBox, + e.answer.text.black.size(28.sp).make(), + ], + ); + }).toList(), + ].sepWidget(separate: 48.w.heightBox), + ).expand(flex: 1), + ], + ), + ) + ], + ), + ); + } +} diff --git a/lib/widget/buttons/bee_check_radio.dart b/lib/widget/buttons/bee_check_radio.dart index 8e611811..2400c283 100644 --- a/lib/widget/buttons/bee_check_radio.dart +++ b/lib/widget/buttons/bee_check_radio.dart @@ -27,6 +27,7 @@ class _BeeCheckRadioState extends State { height: 40.w, width: 40.w, decoration: BoxDecoration( + color: kPrimaryColor.withOpacity(_selected ? 1 : 0), border: Border.all( color: _selected ? kPrimaryColor : Color(0xFF979797), width: 3.w, @@ -41,8 +42,9 @@ class _BeeCheckRadioState extends State { curve: Curves.easeInOutCubic, opacity: _selected ? 1 : 0, child: Icon( - CupertinoIcons.chevron_forward, - size: 24.w, + CupertinoIcons.checkmark, + color: Colors.white, + size: 28.w, ), ), ); From 9c3c3078b1ce5be851da0e574abd7124c1fbb68a Mon Sep 17 00:00:00 2001 From: zhang <494089941@qq.com> Date: Sun, 7 Feb 2021 18:14:30 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=8B=E6=8B=89?= =?UTF-8?q?=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../questionnaire_detail_page.dart | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart index 4b1ba498..82abd6b7 100644 --- a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart +++ b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart @@ -4,12 +4,15 @@ import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; import 'package:akuCommunity/pages/manager_func.dart'; import 'package:akuCommunity/ui/manager/questionnaire/questionnaire_siglecheck.dart'; import 'package:akuCommunity/ui/manager/questionnaire/questionnarie_raido_check.dart'; +import 'package:akuCommunity/widget/bee_divider.dart'; import 'package:akuCommunity/widget/bee_scaffold.dart'; import 'package:akuCommunity/widget/buttons/bee_single_check.dart'; import 'package:akuCommunity/widget/buttons/bottom_button.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:akuCommunity/utils/headers.dart'; import 'package:flutter_easyrefresh/easy_refresh.dart'; +import 'package:get/get.dart'; class QuestionnaireDetailPage extends StatefulWidget { final int id; @@ -25,10 +28,78 @@ class _QuestionnaireDetailPageState extends State { bool _onload = true; int _select; List _radio = []; + int _expanded; + String _expand; Widget _emptyWidget() { return Container(); } + Widget _expandedCheck(String title, List answers) { + return Container( + width: double.infinity, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + title.text.black.size(32.sp).bold.make(), + 64.w.heightBox, + GestureDetector( + onTap: () { + Get.bottomSheet( + CupertinoActionSheet( + // title: , + cancelButton: CupertinoActionSheetAction( + child: '取消'.text.black.size(28.sp).make(), + onPressed: () { + Get.back(); + }, + ), + actions: answers + .map((e) => CupertinoActionSheetAction( + onPressed: () { + _expanded = e.id; + _expand = e.answer; + Get.back(); + setState(() {}); + }, + child: e.answer.text.black + .size(28.sp) + .isIntrinsic + .make())) + .toList(), + ), + ); + }, + child: Row( + children: [ + Container( + // decoration: BoxDecoration( + // border: Border( + // bottom: BorderSide( + // width: 1.w, color: Color(0xFFE8E8E8)))), + height: 96.w, + width: double.infinity, + padding: + EdgeInsets.symmetric(horizontal: 32.w, vertical: 28.w), + child: (_expand ?? '请选择') + .text + .color(ktextSubColor) + .size(28.sp) + .make(), + ).expand(), + Icon( + CupertinoIcons.chevron_forward, + color: Color(0xFFD8D8D8), + size: 40.w, + ), + ], + ), + ), + BeeDivider.horizontal() + ], + ), + ); + } + @override Widget build(BuildContext context) { return BeeScaffold( @@ -95,6 +166,10 @@ class _QuestionnaireDetailPageState extends State { setState(() {}); }, ), + _expandedCheck( + 'title', + _model.questionnaireTopicVoList.first + .questionnaireChoiceVoList) ], ), ), From e52b7049728097687691ce60e08bb43436c329ce Mon Sep 17 00:00:00 2001 From: zhang <494089941@qq.com> Date: Sun, 7 Feb 2021 18:36:13 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AE=80=E7=AD=94?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../questionnaire_detail_page.dart | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart index 82abd6b7..e09bcdda 100644 --- a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart +++ b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart @@ -30,6 +30,7 @@ class _QuestionnaireDetailPageState extends State { List _radio = []; int _expanded; String _expand; + String _short; Widget _emptyWidget() { return Container(); } @@ -100,6 +101,42 @@ class _QuestionnaireDetailPageState extends State { ); } + Widget _shortAnswer(String title) { + return Container( + width: double.infinity, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + title.text.color(ktextPrimary).size(28.sp).make(), + 24.w.heightBox, + Container( + decoration: BoxDecoration( + border: Border.all( + width: 1.w, + color: Color(0xFFD4CFBE), + ), + borderRadius: BorderRadius.circular(8.w), + ), + child: TextField( + minLines: 5, + maxLines: 10, + scrollPadding: EdgeInsets.zero, + decoration: InputDecoration( + border: InputBorder.none, + contentPadding: + EdgeInsets.symmetric(horizontal: 32.w, vertical: 28.w), + isDense: true), + onChanged: (value) { + _short = value; + setState(() {}); + }, + ), + ) + ], + ), + ); + } + @override Widget build(BuildContext context) { return BeeScaffold( @@ -169,7 +206,8 @@ class _QuestionnaireDetailPageState extends State { _expandedCheck( 'title', _model.questionnaireTopicVoList.first - .questionnaireChoiceVoList) + .questionnaireChoiceVoList), + _shortAnswer('title') ], ), ), From 14a5fda4623feaec2302ad31c3c0b0f85025fd01 Mon Sep 17 00:00:00 2001 From: zhang <494089941@qq.com> Date: Mon, 8 Feb 2021 11:10:42 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=A2=98=EF=BC=8C=E5=AE=8C=E6=88=90=E9=97=AE=E5=8D=B7=E8=B0=83?= =?UTF-8?q?=E6=9F=A5=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/quetionnaire_submit_model.dart | 50 ++++++++ .../questionnaire_detail_page.dart | 113 +++++++++++------- .../questionnaire_truefalse.dart | 69 +++++++++++ 3 files changed, 192 insertions(+), 40 deletions(-) create mode 100644 lib/model/manager/quetionnaire_submit_model.dart create mode 100644 lib/ui/manager/questionnaire/questionnaire_truefalse.dart diff --git a/lib/model/manager/quetionnaire_submit_model.dart b/lib/model/manager/quetionnaire_submit_model.dart new file mode 100644 index 00000000..8219ac8c --- /dev/null +++ b/lib/model/manager/quetionnaire_submit_model.dart @@ -0,0 +1,50 @@ +// class QuestionnaireSubmitModel { +// int id; +// List appQuestionnaireAnswerSubmits; + +// QuestionnaireSubmitModel({this.id, this.appQuestionnaireAnswerSubmits}); + +// QuestionnaireSubmitModel.fromJson(Map json) { +// id = json['id']; +// if (json['appQuestionnaireAnswerSubmits'] != null) { +// appQuestionnaireAnswerSubmits = new List(); +// json['appQuestionnaireAnswerSubmits'].forEach((v) { +// appQuestionnaireAnswerSubmits +// .add(new AppQuestionnaireAnswerSubmits.fromJson(v)); +// }); +// } +// } + +// Map toJson() { +// final Map data = new Map(); +// data['id'] = this.id; +// if (this.appQuestionnaireAnswerSubmits != null) { +// data['appQuestionnaireAnswerSubmits'] = +// this.appQuestionnaireAnswerSubmits.map((v) => v.toJson()).toList(); +// } +// return data; +// } +// } + +class AppQuestionnaireAnswerSubmits { + int topicId; + List choiceAnswer; + String shortAnswer; + + AppQuestionnaireAnswerSubmits( + {this.topicId, this.choiceAnswer, this.shortAnswer}); + + AppQuestionnaireAnswerSubmits.fromJson(Map json) { + topicId = json['topicId']; + choiceAnswer = json['choiceAnswer'].cast(); + shortAnswer = json['shortAnswer']; + } + + Map toJson() { + final Map data = new Map(); + data['topicId'] = this.topicId; + data['choiceAnswer'] = this.choiceAnswer; + data['shortAnswer'] = this.shortAnswer; + return data; + } +} diff --git a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart index e09bcdda..fb733295 100644 --- a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart +++ b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart @@ -1,12 +1,13 @@ import 'package:akuCommunity/base/base_style.dart'; import 'package:akuCommunity/constants/api.dart'; import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; +import 'package:akuCommunity/model/manager/quetionnaire_submit_model.dart'; import 'package:akuCommunity/pages/manager_func.dart'; import 'package:akuCommunity/ui/manager/questionnaire/questionnaire_siglecheck.dart'; +import 'package:akuCommunity/ui/manager/questionnaire/questionnaire_truefalse.dart'; import 'package:akuCommunity/ui/manager/questionnaire/questionnarie_raido_check.dart'; import 'package:akuCommunity/widget/bee_divider.dart'; import 'package:akuCommunity/widget/bee_scaffold.dart'; -import 'package:akuCommunity/widget/buttons/bee_single_check.dart'; import 'package:akuCommunity/widget/buttons/bottom_button.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -26,16 +27,14 @@ class QuestionnaireDetailPage extends StatefulWidget { class _QuestionnaireDetailPageState extends State { QuestionnaireDetialModel _model; bool _onload = true; - int _select; - List _radio = []; - int _expanded; - String _expand; - String _short; + + List _submitModels = []; Widget _emptyWidget() { return Container(); } - Widget _expandedCheck(String title, List answers) { + Widget _expandedCheck(String title, List answers, + List submitModels, int index) { return Container( width: double.infinity, child: Column( @@ -57,8 +56,8 @@ class _QuestionnaireDetailPageState extends State { actions: answers .map((e) => CupertinoActionSheetAction( onPressed: () { - _expanded = e.id; - _expand = e.answer; + submitModels[index].choiceAnswer.first = e.id; + submitModels[index].shortAnswer = e.answer; Get.back(); setState(() {}); }, @@ -81,7 +80,7 @@ class _QuestionnaireDetailPageState extends State { width: double.infinity, padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 28.w), - child: (_expand ?? '请选择') + child: (submitModels[index].shortAnswer ?? '请选择') .text .color(ktextSubColor) .size(28.sp) @@ -101,7 +100,8 @@ class _QuestionnaireDetailPageState extends State { ); } - Widget _shortAnswer(String title) { + Widget _shortAnswer(String title, + List submitModels, int index) { return Container( width: double.infinity, child: Column( @@ -127,7 +127,7 @@ class _QuestionnaireDetailPageState extends State { EdgeInsets.symmetric(horizontal: 32.w, vertical: 28.w), isDense: true), onChanged: (value) { - _short = value; + submitModels[index].shortAnswer = value; setState(() {}); }, ), @@ -137,6 +137,54 @@ class _QuestionnaireDetailPageState extends State { ); } + Widget _topicWidget(QuestionnaireTopicVoList questionModel, + List submitModels, int index) { + switch (questionModel.type) { + case 1: + return QuestionnaireSingleCheck( + title: questionModel.topic, + selected: submitModels[index].choiceAnswer.first, + onPressed: (id) { + submitModels[index].choiceAnswer.first = id; + setState(() {}); + }, + answers: questionModel.questionnaireChoiceVoList); + + case 2: + return QuestionnaireRadioCheck( + title: questionModel.topic, + selected: submitModels[index].choiceAnswer, + answers: questionModel.questionnaireChoiceVoList, + onPressed: (id) { + if (submitModels[index].choiceAnswer.contains(id)) { + submitModels[index].choiceAnswer.remove(id); + } else { + submitModels[index].choiceAnswer.add(id); + } + setState(() {}); + }, + ); + + case 3: + return _expandedCheck(questionModel.topic, + questionModel.questionnaireChoiceVoList, submitModels, index); + case 4: + return QuestionnaireTruefalse( + title: questionModel.topic, + selected: submitModels[index].choiceAnswer.first, + onPressed: (id) { + submitModels[index].choiceAnswer.first = id; + setState(() {}); + }, + ); + case 5: + return _shortAnswer(questionModel.topic, submitModels, index); + + default: + return Container(); + } + } + @override Widget build(BuildContext context) { return BeeScaffold( @@ -147,6 +195,13 @@ class _QuestionnaireDetailPageState extends State { onRefresh: () async { _model = await ManagerFunc.questionnairefindById(widget.id); _onload = false; + _submitModels = _model.questionnaireTopicVoList + .map((e) => AppQuestionnaireAnswerSubmits( + topicId: e.id, + choiceAnswer: [-1], + )) + .toList(); + print(_submitModels); setState(() {}); }, child: _onload @@ -180,34 +235,12 @@ class _QuestionnaireDetailPageState extends State { .size(28.sp) .make(), 130.w.heightBox, - QuestionnaireSingleCheck( - title: 'title', - selected: _select, - onPressed: (id) { - _select = id; - setState(() {}); - }, - answers: _model.questionnaireTopicVoList.first - .questionnaireChoiceVoList), - QuestionnaireRadioCheck( - title: 'title', - selected: _radio, - answers: _model.questionnaireTopicVoList.first - .questionnaireChoiceVoList, - onPressed: (id) { - if (_radio.contains(id)) { - _radio.remove(id); - } else { - _radio.add(id); - } - setState(() {}); - }, - ), - _expandedCheck( - 'title', - _model.questionnaireTopicVoList.first - .questionnaireChoiceVoList), - _shortAnswer('title') + ...List.generate( + _model.questionnaireTopicVoList.length, + (index) => _topicWidget( + _model.questionnaireTopicVoList[index], + _submitModels, + index)).sepWidget(separate: 80.w.heightBox), ], ), ), diff --git a/lib/ui/manager/questionnaire/questionnaire_truefalse.dart b/lib/ui/manager/questionnaire/questionnaire_truefalse.dart new file mode 100644 index 00000000..8fad657a --- /dev/null +++ b/lib/ui/manager/questionnaire/questionnaire_truefalse.dart @@ -0,0 +1,69 @@ +import 'package:akuCommunity/widget/buttons/bee_single_check.dart'; +import 'package:flutter/material.dart'; +import 'package:velocity_x/velocity_x.dart'; +import 'package:akuCommunity/utils/headers.dart'; + +class QuestionnaireTruefalse extends StatefulWidget { + final String title; + final int selected; + final Function(int id) onPressed; + QuestionnaireTruefalse({Key key, this.title, this.selected, this.onPressed}) + : super(key: key); + + @override + _QuestionnaireTruefalseState createState() => _QuestionnaireTruefalseState(); +} + +class _QuestionnaireTruefalseState extends State { + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + widget.title.text.black.size(32.sp).bold.make(), + 64.w.heightBox, + Padding( + padding: EdgeInsets.symmetric(horizontal: 96.w), + child: Flex( + direction: Axis.horizontal, + children: [ + Row( + children: [ + GestureDetector( + onTap: () { + widget.onPressed(1); + }, + child: BeeSingleCheck( + value: 1, + groupValue: widget.selected, + ), + ), + 16.w.widthBox, + '正确'.text.black.size(28.sp).make(), + ], + ).expand(flex: 1), + Row( + children: [ + GestureDetector( + onTap: () { + widget.onPressed(0); + }, + child: BeeSingleCheck( + value: 0, + groupValue: widget.selected, + ), + ), + 16.w.widthBox, + '错误'.text.black.size(28.sp).make(), + ], + ).expand(flex: 1), + ], + ), + ) + ], + ), + ); + } +} From acfb84c2c4f2ef1d3fed492b55fab3718493ecf3 Mon Sep 17 00:00:00 2001 From: zhang <494089941@qq.com> Date: Mon, 8 Feb 2021 11:41:01 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=9Aapp=E9=97=AE=E5=8D=B7=E8=B0=83=E6=9F=A5=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/constants/api.dart | 3 ++ .../manager/quetionnaire_submit_model.dart | 48 +++++++++---------- lib/pages/manager_func.dart | 16 +++++++ .../questionnaire_detail_page.dart | 7 ++- 4 files changed, 48 insertions(+), 26 deletions(-) diff --git a/lib/constants/api.dart b/lib/constants/api.dart index a0c6854e..8b62559c 100644 --- a/lib/constants/api.dart +++ b/lib/constants/api.dart @@ -160,6 +160,9 @@ class _Manager { ///问卷调查:根据问卷id查询问卷详情 String get questionnairefindById => '/user/questionnaire/findById'; + + ///问卷调查:app问卷调查提交 + String get questionnaireSubmit => '/user/questionnaire/submit'; } class _Community { diff --git a/lib/model/manager/quetionnaire_submit_model.dart b/lib/model/manager/quetionnaire_submit_model.dart index 8219ac8c..d02a097c 100644 --- a/lib/model/manager/quetionnaire_submit_model.dart +++ b/lib/model/manager/quetionnaire_submit_model.dart @@ -1,30 +1,30 @@ -// class QuestionnaireSubmitModel { -// int id; -// List appQuestionnaireAnswerSubmits; +class QuestionnaireSubmitModel { + int id; + List appQuestionnaireAnswerSubmits; -// QuestionnaireSubmitModel({this.id, this.appQuestionnaireAnswerSubmits}); + QuestionnaireSubmitModel({this.id, this.appQuestionnaireAnswerSubmits}); -// QuestionnaireSubmitModel.fromJson(Map json) { -// id = json['id']; -// if (json['appQuestionnaireAnswerSubmits'] != null) { -// appQuestionnaireAnswerSubmits = new List(); -// json['appQuestionnaireAnswerSubmits'].forEach((v) { -// appQuestionnaireAnswerSubmits -// .add(new AppQuestionnaireAnswerSubmits.fromJson(v)); -// }); -// } -// } + QuestionnaireSubmitModel.fromJson(Map json) { + id = json['id']; + if (json['appQuestionnaireAnswerSubmits'] != null) { + appQuestionnaireAnswerSubmits = new List(); + json['appQuestionnaireAnswerSubmits'].forEach((v) { + appQuestionnaireAnswerSubmits + .add(new AppQuestionnaireAnswerSubmits.fromJson(v)); + }); + } + } -// Map toJson() { -// final Map data = new Map(); -// data['id'] = this.id; -// if (this.appQuestionnaireAnswerSubmits != null) { -// data['appQuestionnaireAnswerSubmits'] = -// this.appQuestionnaireAnswerSubmits.map((v) => v.toJson()).toList(); -// } -// return data; -// } -// } + Map toJson() { + final Map data = new Map(); + data['id'] = this.id; + if (this.appQuestionnaireAnswerSubmits != null) { + data['appQuestionnaireAnswerSubmits'] = + this.appQuestionnaireAnswerSubmits.map((v) => v.toJson()).toList(); + } + return data; + } +} class AppQuestionnaireAnswerSubmits { int topicId; diff --git a/lib/pages/manager_func.dart b/lib/pages/manager_func.dart index f281175f..01483fa9 100644 --- a/lib/pages/manager_func.dart +++ b/lib/pages/manager_func.dart @@ -1,7 +1,10 @@ // Package imports: +import 'dart:convert'; + import 'package:akuCommunity/model/manager/article_QR_code_model.dart'; import 'package:akuCommunity/model/manager/moving_company_model.dart'; import 'package:akuCommunity/model/manager/questionnaire_detail_model.dart'; +import 'package:akuCommunity/model/manager/quetionnaire_submit_model.dart'; import 'package:akuCommunity/model/manager/voting_detail_model.dart'; import 'package:dio/dio.dart'; import 'package:flustars/flustars.dart'; @@ -194,4 +197,17 @@ class ManagerFunc { ); return QuestionnaireDetialModel.fromJson(baseModel.data); } + + static Future questionnaireSubmit( + int id, List model) async { + BaseModel baseModel = await NetUtil().post( + API.manager.questionnaireSubmit, + params: { + 'id': id, + 'appQuestionnaireAnswerSubmits': jsonEncode(model), + }, + showMessage: true, + ); + return baseModel; + } } diff --git a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart index fb733295..5f57a65f 100644 --- a/lib/ui/manager/questionnaire/questionnaire_detail_page.dart +++ b/lib/ui/manager/questionnaire/questionnaire_detail_page.dart @@ -151,6 +151,7 @@ class _QuestionnaireDetailPageState extends State { answers: questionModel.questionnaireChoiceVoList); case 2: + submitModels[index].choiceAnswer.remove(-1); return QuestionnaireRadioCheck( title: questionModel.topic, selected: submitModels[index].choiceAnswer, @@ -169,7 +170,7 @@ class _QuestionnaireDetailPageState extends State { return _expandedCheck(questionModel.topic, questionModel.questionnaireChoiceVoList, submitModels, index); case 4: - return QuestionnaireTruefalse( + return QuestionnaireTruefalse( title: questionModel.topic, selected: submitModels[index].choiceAnswer.first, onPressed: (id) { @@ -246,7 +247,9 @@ class _QuestionnaireDetailPageState extends State { ), bottomNavi: BottomButton( child: '确认提交'.text.black.size(32.sp).bold.make(), - onPressed: () {}, + onPressed: () async { + await ManagerFunc.questionnaireSubmit(widget.id, _submitModels); + }, ), ); } From 97cd6c908930bf790473888e31afaa3c4f87a1f2 Mon Sep 17 00:00:00 2001 From: zhang <494089941@qq.com> Date: Mon, 8 Feb 2021 13:26:42 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BD=91=E7=BB=9C?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/manager_func.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pages/manager_func.dart b/lib/pages/manager_func.dart index 01483fa9..accb71d1 100644 --- a/lib/pages/manager_func.dart +++ b/lib/pages/manager_func.dart @@ -204,7 +204,7 @@ class ManagerFunc { API.manager.questionnaireSubmit, params: { 'id': id, - 'appQuestionnaireAnswerSubmits': jsonEncode(model), + 'appQuestionnaireAnswerSubmits':model, }, showMessage: true, );