Flutter高仿微信-第28篇-好友详情-查看个人头像

Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。

详情请查看

效果图:

实现代码:

/**
 * Author : wangning
 * Email : maoning20080809@163.com
 * Date : 2022/9/26 13:22
 * Description : 查看联系人详情
 */
class ContactsDetails extends StatefulWidget {
  String toChatId;

  ContactsDetails({required this.toChatId});

  @override
  _ContactsDetailState createState() => _ContactsDetailState(this.toChatId);
}

class _ContactsDetailState extends State<ContactsDetails> {
  String _toChatId;

  _ContactsDetailState(this._toChatId);

  UserBean? _userBean;

  @override
  void initState() {
    super.initState();
    loadUserBean();
  }

  void loadUserBean() async {
    UserRepository.getInstance().findUserByAccount(_toChatId).then((userBean) => {
      setState(() {
        _userBean = userBean;
      })
    });
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {

    Widget buildMainRow() {
      return Row(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[

          Container(
            padding: EdgeInsets.only(left: 12, top: 26, right: 12, bottom: 12),
            child: GestureDetector(
              onTap: (){
                Navigator.push(context, MaterialPageRoute(builder: (context) => CommonImagePreview(fileName : CommonUtils.getReallyImage(_userBean?.avatar), isNetwork: true,)));
              },
              child: CommonAvatarView.showBaseImage(_userBean?.avatar??"", 80, 80),
            ),
          ),
          
          Expanded(
              child: Container(
              padding: EdgeInsets.only(top: 10.0),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Text(_userBean?.nickName??"",style: TextStyle(fontSize: 26, fontWeight: FontWeight.bold),),
                  Container(height: 2.0,),
                  GestureDetector(
                    onLongPress: (){
                      Clipboard.setData(ClipboardData(text: "${_userBean?.account??""}"));
                      CommonToast.show(context, "${AppManager.getInstance().appName}:已复制");
                    },
                    child: Text('账号:${_userBean?.account??""}',maxLines: 1,style: TextStyle(color: Colors.black87, fontSize: 16.0),),
                  ),
                  /*Container(height: 2.0,),
                  Text('地区:广东 湛江',maxLines: 1,style: TextStyle(color: Colors.grey, fontSize: 13.0),)*/
                ],
              ),
          )),
        ],
      );
    }

    return Scaffold(
      appBar: WnAppBar.getAppBar(context, Text("好友详情")),
      body: Container(
          color: Color(Style.primaryValue),
          child: Column(
            children: <Widget>[
              Container(
                decoration: BoxDecoration(color: Colors.white,border: Border(bottom:BorderSide(color: Color(0xffd9d9d9), width: .3))),
                padding: EdgeInsets.only(bottom: 28.0),
                child: buildMainRow(),
              ),
              Container(
                decoration: BoxDecoration(
                    color: Colors.white,
                    border: Border(
                        bottom:
                            BorderSide(color: Color(0xffd9d9d9), width: .3))),
                child: Column(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    Container(
                      color: Color(0xffEDEDED),
                      height: 10.0,
                    ),
                    RawMaterialButton(
                      onPressed: () {
                        Navigator.popUntil(context, (route) {return route.isFirst;});
                        Navigator.push(context, MaterialPageRoute(builder: (c) {return HomeChatPage(toChatId: _toChatId);}));
                      },
                      child: Container(
                        decoration: BoxDecoration(
                            color: Colors.white,
                            border: Border(
                                bottom: BorderSide(
                                    color: Color(0xffd9d9d9), width: .3))),
                        alignment: Alignment.center,
                        height: 54.0,
                        child: Text(
                          '发消息',
                          style: TextStyle(color: Colors.blue, fontSize: 18),
                        ),
                      ),
                    ),
                  ],
                ),
              ),
            ],
          )),
    );
  }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

六毛六66

你的鼓励是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值