123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- import 'package:flutter/material.dart';
- import '../base/YSBase.dart';
- import '../base/YSNetWorking.dart';
- class YSMineQuestionnaireDetail extends StatefulWidget {
- final questionId;
- const YSMineQuestionnaireDetail({Key key, this.questionId}) : super(key: key);
- @override
- _YSMineQuestionnaireDetailState createState() => _YSMineQuestionnaireDetailState();
- }
- class _YSMineQuestionnaireDetailState extends State<YSMineQuestionnaireDetail> {
- bool _isEnable = false;
- List _dataArray = [];
- MaterialColor _selectedColor = Colors.blue;
- @override
- void initState() {
- Future.delayed(Duration(seconds: 0)).then((value) {
- _getQuestionData();
- });
- super.initState();
- }
- @override
- Widget build(BuildContext context) {
- return YSBase(
- ystitle: '调查问卷详情',
- yschild: Stack(
- children: [
- Container(
- height: MediaQuery.of(context).size.height,
- width: MediaQuery.of(context).size.width,
- child: ListView.separated(
- itemBuilder: (context,index){
- Map item = _dataArray[index];
- List array = item['options'];
- return Container(
- padding: EdgeInsets.all(15),
- child: LayoutBuilder(
- builder: (context,conSize){
- return Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- Text('$index.${item['title']}',style: TextStyle(fontSize: 16,color: Color(0xFF606266)),),
- Container(
- padding: EdgeInsets.only(top: 10,bottom: 10),
- child: Text(item['description'],style: TextStyle(fontSize: 12,color: Color(0xFF989898)),),
- ),
- ListView.separated(
- itemBuilder: (context,index){
- Map itemSub = array[index];
- bool isChoose = itemSub['select']??false;
- return GestureDetector(
- onTap: (){
- if(_isEnable==false)return;
- if(item['type']=='choice_single'){
- array.forEach((element) {
- element['select'] = false;
- });
- itemSub['select'] = true;
- }else{
- if(itemSub['select']==true){
- itemSub['select'] = false;
- }else{
- itemSub['select'] = true;
- }
- }
- setState(() {});
- },
- child: Container(
- child: Row(
- children: [
- Icon(
- isChoose?Icons.check_circle:Icons.radio_button_unchecked,
- size: 20,
- color: isChoose?_selectedColor:Color(0xFFD5D8DE),
- ),
- Container(
- width: conSize.maxWidth-20,
- padding: EdgeInsets.only(left: 5),
- child: Text(itemSub['name'],style: TextStyle(fontSize: 14,color: Color(0xFF989898)),),
- )
- ],
- ),
- ),
- );
- },
- separatorBuilder: (context,index){
- return Container(height: 10,);
- },
- itemCount: array.length,
- shrinkWrap: true,
- physics: NeverScrollableScrollPhysics(),
- padding: EdgeInsets.all(0),
- )
- ],
- );
- },
- ),
- );
- },
- separatorBuilder: (context,index){
- return Container(height: 5,color: Color(0xFFF5F3F0),);
- },
- itemCount: _dataArray.length,
- padding: EdgeInsets.only(top: 20),
- ),
- ),
- if(_isEnable)Positioned(child: GestureDetector(
- onTap: () async{
- Map request = {'id':widget.questionId};
- List list = [];
- bool isSubmit = true;
- _dataArray.forEach((element) {
- if(isSubmit==false)return;
- Map item = {};
- item['random'] = element['random'];
- item['type'] = element['type'];
- List options = element['options'];
- List listSub = [];
- options.forEach((elementSub) {
- if(elementSub['select']==true){
- listSub.add(elementSub['name']);
- }
- });
- if(listSub.isEmpty){
- ysFlutterToast(context, '${element['title']}的选项不能为空');
- isSubmit = false;
- return;
- }
- item['answers'] = listSub;
- list.add(item);
- });
- if(isSubmit==false)return;
- request['list'] = list;
- // LogUtil.d(request);
- // return;
- Map dict = await ysRequestHttp(context, requestType.post, 'naire/submit', request);
- if(dict!=null){
- showGeneralDialog(context: context, pageBuilder: (_,__,___){
- return Center(
- child: Container(
- width: MediaQuery.of(context).size.width-100,
- height: 150,
- decoration: BoxDecoration(
- color: Colors.white,
- borderRadius: BorderRadius.all(Radius.circular(10))
- ),
- child: Column(
- children: [
- Container(
- height: 100,
- decoration: BoxDecoration(
- border: Border(bottom: BorderSide(color: Colors.grey,width: 0.1))
- ),
- alignment: Alignment.center,
- child: Text('感谢您的答卷',style: TextStyle(fontSize: 14,color: Color(0xFF4A4A4A),decoration: TextDecoration.none,fontWeight: FontWeight.normal),),
- ),
- GestureDetector(
- onTap: (){
- Navigator.pop(context);
- Navigator.pop(context);
- },
- behavior: HitTestBehavior.opaque,
- child: Container(
- height: 50,
- alignment: Alignment.center,
- child: Text('确认',style: TextStyle(fontSize: 16,color: Color(0xFFEE0A24),decoration: TextDecoration.none,fontWeight: FontWeight.normal),),
- ),
- )
- ],
- ),
- ),
- );
- });
- }
- },
- child: Container(
- decoration: BoxDecoration(
- color: Colors.pinkAccent,
- borderRadius: BorderRadius.all(Radius.circular(50))
- ),
- alignment: Alignment.center,
- child: Text('提交',style: TextStyle(fontSize: 14,color: Colors.white),),
- ),
- ),bottom: 30,left: MediaQuery.of(context).size.width/2-50,width: 100,height: 40,)
- ],
- ),
- );
- }
- _getQuestionData() async{
- Map dict = await ysRequestHttp(context, requestType.get, 'naire/info',{'naire_id':widget.questionId});
- if(dict!=null){
- _dataArray = dict['data']['questions']??'';
- _isEnable = dict['data']['is_can_submit']??false;
- if(_isEnable==false){
- _selectedColor = Colors.grey;
- }
- setState(() {});
- }
- }
- }
|