Flutter高仿微信-第57篇-添加好友
生活随笔
收集整理的這篇文章主要介紹了
Flutter高仿微信-第57篇-添加好友
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?Flutter高仿微信系列共59篇,從Flutter客戶端、Kotlin客戶端、Web服務(wù)器、數(shù)據(jù)庫表結(jié)構(gòu)、Xmpp即時(shí)通訊服務(wù)器、視頻通話服務(wù)器、騰訊云服務(wù)器全面講解。
?詳情請(qǐng)查看
效果圖:
實(shí)現(xiàn)代碼:
/*** Author : wangning* Email : maoning20080809@163.com* Date : 2022/8/11 12:16* Description : 添加好友*/ Color themeDef = Color(0xffEDEDED);class AddFriends extends StatelessWidget {UserBean userBean;AddFriends({required this.userBean});@overrideWidget build(BuildContext context) {return AddFriendsPage(title: '添加好友', userBean: userBean,);} }class AddFriendsPage extends StatefulWidget {UserBean userBean;AddFriendsPage({super.key, required this.title, required this.userBean});final String title;@overrideState<AddFriendsPage> createState() => _AddFriendsState(); }class _AddFriendsState extends State<AddFriendsPage> {@overridevoid initState() {super.initState();_checkAvailable();}//檢查狀態(tài), 如果不可以,先登錄void _checkAvailable() async{var isAvailable = await XmppManager.getInstance().isAvailable();if(!isAvailable){String account = SpUtils.getString(CommonUtils.LOGIN_ACCOUNT);String password = SpUtils.getString(CommonUtils.LOGIN_PASSWORD);XmppManager.getInstance().connect(account, password);}}bool bCanPress = true;//添加好友void _createRoster(String toAccount) async {if(!bCanPress){return;}bCanPress = false;bool isNetwork = await CommonNetwork.isNetwork();if(!isNetwork) {CommonUtils.showNetworkError(context);return;}var isAvailable = await XmppManager.getInstance().isAvailable();LogUtils.d("連接狀態(tài):${isAvailable} , ${toAccount}");if(!isAvailable){_checkAvailable();CommonToast.show(context, "添加失敗,請(qǐng)重試!");return;}CommonToast.show(context, "請(qǐng)稍后。。。");UserBean toUserBean = await UserRepository.getInstance().getUserServer(toAccount);if(toUserBean != null){UserRepository.getInstance().insertUserLocal(toUserBean);String account = SpUtils.getString(CommonUtils.LOGIN_ACCOUNT);String addTime = WnDateUtils.getCurrentTime();//添加好友之前, 先刪除await ContactsRepository.getInstance().deleteContactsByAccount(account, toAccount);ContactsBean contactsBean = ContactsBean();contactsBean.fromAccount = account;contactsBean.toAccount = toAccount;contactsBean.type = ContactsBean.typeRequest;contactsBean.addTime = addTime;ContactsRepository.getInstance().insertContactsLocal(contactsBean);ContactsRepository.getInstance().insertContactsServer(contactsBean);XmppManager.getInstance().createRoster(toAccount);//獲取對(duì)方賬號(hào)信息//String message = "${CommonUtils.CHAT_CONTENT_TYPE_ADD_FRIENDS}${CommonUtils.CHAT_MESSAGE_SPILE}${account}${CommonUtils.CHAT_MESSAGE_SPILE}${addTime}";ChatSendBean chatSendBean = ChatSendBean();chatSendBean.contentType = CommonUtils.TYPE_ADD_FRIENDS;chatSendBean.content = account;chatSendBean.addTime = addTime;String message = jsonEncode(chatSendBean);_sendMessage(toAccount, message);CommonToast.show(context, "添加成功!");Navigator.pop(context);} else {CommonToast.show(context, "添加失敗,請(qǐng)重試!");}//2秒后才可以繼續(xù)點(diǎn)擊Future.delayed(Duration(seconds: 2), (){bCanPress = true;});}_sendMessage(String toAccount, var message){int id = DateTime.now().millisecondsSinceEpoch;String account = SpUtils.getString(CommonUtils.LOGIN_ACCOUNT);String toJid = toAccount + "@wangning";LogUtils.d("添加好友發(fā)送消息:${toJid} , ${message}");XmppManager.getInstance().sendMessage(toJid, message, "$account", id);}String results = "";//原來的內(nèi)容是空的final TextEditingController controller = TextEditingController(text: "");@overrideWidget build(BuildContext context) {return Scaffold(appBar: WnAppBar.getAppBar(context, Text("${widget.title}")),body: Column(children: [_getAccountWidget(),_getAddFriendsWidget(),],),);}//顯示用戶信息控件Widget _getAccountWidget(){String avatarUrl = widget.userBean.avatar??"";return Container(height: 140,alignment: Alignment.bottomCenter,padding: const EdgeInsets.all(10.0),//上下左右都設(shè)置邊距child: Row(crossAxisAlignment: CrossAxisAlignment.center,children: [GestureDetector(onTap: (){Navigator.push(context, MaterialPageRoute(builder: (context) => CommonImagePreview(fileName : CommonUtils.getReallyImage(avatarUrl), isNetwork: true, defaultUrl: CommonUtils.getDefaultAvatar(),)));},child: CommonAvatarView.showBaseImage(avatarUrl, 80, 80),),SizedBox(width: 12),Column(crossAxisAlignment: CrossAxisAlignment.start,mainAxisAlignment: MainAxisAlignment.center,children: [Text("${widget.userBean.nickName}", style: TextStyle(fontSize: 20, color: Colors.black),),Text("賬號(hào):${widget.userBean.account}", style: TextStyle(fontSize: 16, color: Colors.black),),],),],),);}//添加控件Widget _getAddFriendsWidget(){return Container(padding: const EdgeInsets.all(10.0),//上下左右都設(shè)置邊距child: Row(mainAxisAlignment: MainAxisAlignment.center,children: [MaterialButton(color: Colors.blue,textColor: Colors.white,padding: EdgeInsets.only(left: 28, top: 8, right: 28, bottom: 8),child: Text('添加到通訊錄',style: TextStyle(fontSize: 16),),onPressed: () {LogUtils.d("點(diǎn)擊 添加到通訊錄 ");_createRoster(widget.userBean.account!);},)],),);} }總結(jié)
以上是生活随笔為你收集整理的Flutter高仿微信-第57篇-添加好友的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 带电粒子在匀强电场中的运动(忽略重力)
- 下一篇: ORACLE DATABASE LICE