Commit b1b58d2a8706cd3c9d791469ec04ede3bd3cbe5a

Authored by wdn127929
1 parent 7197d1c8

可变模版

@@ -43,6 +43,8 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { @@ -43,6 +43,8 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
43 43
44 String smsSelectValue = ''; 44 String smsSelectValue = '';
45 45
  46 + int _cursorPosition = 0;
  47 +
46 @override 48 @override
47 void initState() { 49 void initState() {
48 // TODO: implement initState 50 // TODO: implement initState
@@ -146,7 +148,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { @@ -146,7 +148,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
146 Map<String, String> params = { 148 Map<String, String> params = {
147 'sid': Provider.of<UserModel>(context, listen: false).user.sellerid, 149 'sid': Provider.of<UserModel>(context, listen: false).user.sellerid,
148 'sms_code': smsSelectValue, 150 'sms_code': smsSelectValue,
149 - 'bookinginfo': text, 151 + 'bookinginfo': text.startsWith('\n') ? text : '\n' + text,
150 }; 152 };
151 153
152 bool success = await marketingCenterProvider 154 bool success = await marketingCenterProvider
@@ -221,6 +223,10 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { @@ -221,6 +223,10 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
221 List<Widget> data = []; 223 List<Widget> data = [];
222 for (var i = 0; i < temData.length; i++) { 224 for (var i = 0; i < temData.length; i++) {
223 data.add(btnItem(temData[i].temp, temData[i].select, onTap: () { 225 data.add(btnItem(temData[i].temp, temData[i].select, onTap: () {
  226 + if (!canChange) {
  227 + //从固定模版变更过来的,清空文本框内容
  228 + controller.text = '';
  229 + }
224 canChange = true; 230 canChange = true;
225 marketingCenterProvider.saiYouYunchangedData.forEach((element) { 231 marketingCenterProvider.saiYouYunchangedData.forEach((element) {
226 element.select = false; 232 element.select = false;
@@ -229,7 +235,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { @@ -229,7 +235,7 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
229 contentChangeStart = temData[i].content.templateParam; 235 contentChangeStart = temData[i].content.templateParam;
230 temData[i].select = true; 236 temData[i].select = true;
231 smsSelectValue = temData[i].temp; 237 smsSelectValue = temData[i].temp;
232 - controller.text = ''; 238 +
233 // controller.text = temData[i].content.templateCode; 239 // controller.text = temData[i].content.templateCode;
234 marketingCenterProvider.saiYouYunFixedData.forEach((element) { 240 marketingCenterProvider.saiYouYunFixedData.forEach((element) {
235 element.select = false; 241 element.select = false;
@@ -250,13 +256,26 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { @@ -250,13 +256,26 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
250 onTap: () { 256 onTap: () {
251 marketingCenterProvider.smsChangeFieldData[i].times++; 257 marketingCenterProvider.smsChangeFieldData[i].times++;
252 print(controller.text); 258 print(controller.text);
253 - controller.text += marketingCenterProvider.smsChangeFieldData[i].show;  
254 - // setState(() {  
255 - // contentChangeStart +=  
256 - // marketingCenterProvider.smsChangeFieldData[i].name + '\n';  
257 - // });  
258 259
259 - // 在光标出插入内容 260 + // 获取当前光标位置
  261 + int cursorPosition = _cursorPosition;
  262 +
  263 + // 插入文本
  264 + controller.text = controller.text.substring(0, cursorPosition) +
  265 + marketingCenterProvider.smsChangeFieldData[i].show +
  266 + controller.text.substring(cursorPosition);
  267 +
  268 + print(controller.text);
  269 +
  270 + // 设置新的光标位置
  271 + controller.selection = TextSelection.fromPosition(TextPosition(
  272 + offset: cursorPosition +
  273 + marketingCenterProvider.smsChangeFieldData[i].show.length,
  274 + affinity: TextAffinity.downstream));
  275 + setState(() {
  276 + _cursorPosition = controller.selection.baseOffset;
  277 + // cursorPosition = _cursorPosition;
  278 + });
260 })); 279 }));
261 } 280 }
262 return data; 281 return data;
@@ -380,13 +399,16 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { @@ -380,13 +399,16 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
380 ), 399 ),
381 onChanged: (value) { 400 onChanged: (value) {
382 //添加的代码:光标一直在文本框后面 401 //添加的代码:光标一直在文本框后面
383 - controller.value = TextEditingValue(  
384 - text: controller.text,  
385 - selection:  
386 - TextSelection.fromPosition(TextPosition(  
387 - affinity: TextAffinity.downstream,  
388 - offset: controller.text.length,  
389 - ))); 402 + // controller.value = TextEditingValue(
  403 + // text: controller.text,
  404 + // selection:
  405 + // TextSelection.fromPosition(TextPosition(
  406 + // affinity: TextAffinity.downstream,
  407 + // offset: controller.text.length,
  408 + // )));
  409 + setState(() {
  410 + _cursorPosition = controller.selection.baseOffset;
  411 + });
390 }, 412 },
391 onEditingComplete: () { 413 onEditingComplete: () {
392 FocusScope.of(context) 414 FocusScope.of(context)
@@ -474,11 +496,9 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { @@ -474,11 +496,9 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
474 return; 496 return;
475 } 497 }
476 498
477 - bool canRequest = true;  
478 - outerloop:  
479 - marketingCenterProvider.smsChangeFieldData  
480 - .forEach((element) {  
481 - innerloop: 499 + bool canRequest = marketingCenterProvider
  500 + .smsChangeFieldData
  501 + .every((element) {
482 if (element.times > 0) { 502 if (element.times > 0) {
483 int count = 503 int count =
484 controller.text.split(element.show).length - 504 controller.text.split(element.show).length -
@@ -486,23 +506,24 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> { @@ -486,23 +506,24 @@ class _SmsTemplateSettingPageState extends State<SmsTemplateSettingPage> {
486 506
487 if (count != element.times) { 507 if (count != element.times) {
488 Utils.showToast('${element.show}不符合规范,请检查'); 508 Utils.showToast('${element.show}不符合规范,请检查');
489 - canRequest = false;  
490 - break innerloop; 509 +
  510 + return false;
491 } 511 }
492 } 512 }
  513 + return true;
493 }); 514 });
494 - print(controller.text);  
495 - String str = controller.text;  
496 - marketingCenterProvider.smsChangeFieldData  
497 - .forEach((element) {  
498 - if (str.contains(element.show)) {  
499 - str = str.replaceAll(element.show, element.code);  
500 - }  
501 - }); 515 +
502 if (canRequest) { 516 if (canRequest) {
503 - print(controller.text);  
504 - //  
505 - _saveSaiYouYunChange(str); 517 + String tempStr = controller.text;
  518 + marketingCenterProvider.smsChangeFieldData
  519 + .forEach((element) {
  520 + if (tempStr.contains(element.show)) {
  521 + tempStr = tempStr.replaceAll(
  522 + element.show, element.code);
  523 + }
  524 + });
  525 +
  526 + _saveSaiYouYunChange(tempStr);
506 } 527 }
507 print('fffff'); 528 print('fffff');
508 } else { 529 } else {