import 'package:flutter/material.dart'; import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; import '../theme.dart'; /// 添加同事:输入对方工号(userID)发送好友申请 class AddFriendScreen extends StatefulWidget { const AddFriendScreen({super.key}); @override State createState() => _AddFriendScreenState(); } class _AddFriendScreenState extends State { final TextEditingController _idCtrl = TextEditingController(); bool _sending = false; @override void dispose() { _idCtrl.dispose(); super.dispose(); } Future _send() async { final userID = _idCtrl.text.trim(); if (userID.isEmpty) { _toast('请输入对方工号'); return; } setState(() => _sending = true); try { await OpenIM.iMManager.friendshipManager.addFriend(userID: userID, reason: '你好,我想加你为同事'); if (!mounted) return; _toast('申请已发送,等对方通过'); Navigator.of(context).pop(); } catch (_) { _toast('发送失败,请确认工号正确、网络正常'); } finally { if (mounted) setState(() => _sending = false); } } void _toast(String text) { ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(text), duration: const Duration(seconds: 2))); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('添加同事')), body: Padding( padding: const EdgeInsets.all(AppGap.x4), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ TextField( controller: _idCtrl, decoration: InputDecoration( hintText: '请输入对方工号', hintStyle: const TextStyle(color: AppColors.textSecondary), filled: true, fillColor: AppColors.searchBg, border: OutlineInputBorder( borderRadius: BorderRadius.circular(8), borderSide: BorderSide.none, ), ), ), const SizedBox(height: AppGap.x6), SizedBox( height: 48, child: FilledButton( onPressed: _sending ? null : _send, style: FilledButton.styleFrom( backgroundColor: AppColors.primary, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), ), child: _sending ? const SizedBox(width: 20, height: 20, child: CircularProgressIndicator(strokeWidth: 2, color: Colors.white)) : const Text('发送申请', style: TextStyle(fontSize: AppFont.body)), ), ), ], ), ), ); } }