Commit 85a4efde0ef1e56a35080526f3c9b3453f906cd2
1 parent
c272c662
feat: 修改客服电话2个展示
Showing
1 changed file
with
125 additions
and
2 deletions
lib/pages/user/user_page.dart
... | ... | @@ -232,8 +232,7 @@ class _UserView extends StatelessWidget { |
232 | 232 | 12.verticalSpace, |
233 | 233 | OutlinedButton( |
234 | 234 | onPressed: () { |
235 | - String phone = 'tel:+8618827093087'; | |
236 | - _launchPhone(phone); | |
235 | + _showTeacherSelectionDialog(context); | |
237 | 236 | }, |
238 | 237 | style: normalButtonStyle, |
239 | 238 | child: Text( |
... | ... | @@ -309,6 +308,130 @@ class _UserView extends StatelessWidget { |
309 | 308 | }, |
310 | 309 | ); |
311 | 310 | |
311 | + void _showTeacherSelectionDialog(BuildContext context) { | |
312 | + showModalBottomSheet( | |
313 | + context: context, | |
314 | + backgroundColor: Colors.white, | |
315 | + shape: const RoundedRectangleBorder( | |
316 | + borderRadius: BorderRadius.vertical(top: Radius.circular(20)), | |
317 | + ), | |
318 | + isScrollControlled: true, | |
319 | + builder: (BuildContext context) { | |
320 | + return SafeArea( | |
321 | + child: Container( | |
322 | + padding: const EdgeInsets.fromLTRB(16, 8, 16, 12), | |
323 | + child: Column( | |
324 | + mainAxisSize: MainAxisSize.min, | |
325 | + children: [ | |
326 | + // 拖拽指示器 | |
327 | + Container( | |
328 | + width: 40, | |
329 | + height: 4, | |
330 | + margin: const EdgeInsets.only(bottom: 6), | |
331 | + decoration: BoxDecoration( | |
332 | + color: Colors.grey[300], | |
333 | + borderRadius: BorderRadius.circular(2), | |
334 | + ), | |
335 | + ), | |
336 | + // 老师选项列表 | |
337 | + Flexible( | |
338 | + child: SingleChildScrollView( | |
339 | + child: Column( | |
340 | + mainAxisSize: MainAxisSize.min, | |
341 | + children: [ | |
342 | + // 恐龙老师选项 | |
343 | + ListTile( | |
344 | + contentPadding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), | |
345 | + title: Text( | |
346 | + '恐龙老师', | |
347 | + style: TextStyle( | |
348 | + fontSize: 14.sp, | |
349 | + fontWeight: FontWeight.w600, | |
350 | + color: Colors.black87, | |
351 | + ), | |
352 | + ), | |
353 | + subtitle: Text( | |
354 | + '19357119913', | |
355 | + style: TextStyle( | |
356 | + fontSize: 12.sp, | |
357 | + color: Colors.grey[600], | |
358 | + ), | |
359 | + ), | |
360 | + trailing: Icon( | |
361 | + Icons.phone, | |
362 | + color: Colors.green[600], | |
363 | + size: 18, | |
364 | + ), | |
365 | + onTap: () { | |
366 | + Navigator.pop(context); | |
367 | + _launchPhone('tel:+8619357119913'); | |
368 | + }, | |
369 | + ), | |
370 | + const Divider(height: 1), | |
371 | + // Rose老师选项 | |
372 | + ListTile( | |
373 | + contentPadding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), | |
374 | + title: Text( | |
375 | + 'Rose老师', | |
376 | + style: TextStyle( | |
377 | + fontSize: 14.sp, | |
378 | + fontWeight: FontWeight.w600, | |
379 | + color: Colors.black87, | |
380 | + ), | |
381 | + ), | |
382 | + subtitle: Text( | |
383 | + '19033986279', | |
384 | + style: TextStyle( | |
385 | + fontSize: 12.sp, | |
386 | + color: Colors.grey[600], | |
387 | + ), | |
388 | + ), | |
389 | + trailing: Icon( | |
390 | + Icons.phone, | |
391 | + color: Colors.green[600], | |
392 | + size: 18, | |
393 | + ), | |
394 | + onTap: () { | |
395 | + Navigator.pop(context); | |
396 | + _launchPhone('tel:+8619033986279'); | |
397 | + }, | |
398 | + ), | |
399 | + ], | |
400 | + ), | |
401 | + ), | |
402 | + ), | |
403 | + const SizedBox(height: 6), | |
404 | + // 取消按钮 | |
405 | + SizedBox( | |
406 | + width: double.infinity, | |
407 | + child: OutlinedButton( | |
408 | + onPressed: () { | |
409 | + Navigator.pop(context); | |
410 | + }, | |
411 | + style: OutlinedButton.styleFrom( | |
412 | + padding: const EdgeInsets.symmetric(vertical: 6), | |
413 | + side: BorderSide(color: Colors.grey[300]!), | |
414 | + shape: RoundedRectangleBorder( | |
415 | + borderRadius: BorderRadius.circular(8), | |
416 | + ), | |
417 | + ), | |
418 | + child: Text( | |
419 | + '取消', | |
420 | + style: TextStyle( | |
421 | + fontSize: 14.sp, | |
422 | + color: Colors.grey[600], | |
423 | + ), | |
424 | + ), | |
425 | + ), | |
426 | + ), | |
427 | + ], | |
428 | + ), | |
429 | + ), | |
430 | + ); | |
431 | + }, | |
432 | + ); | |
433 | + } | |
434 | + | |
312 | 435 | void _launchPhone(String phone) async { |
313 | 436 | if (await canLaunchUrl(Uri.parse(phone))) { |
314 | 437 | await launchUrl(Uri.parse(phone)); | ... | ... |