Flutter快学快用24讲--15 红点组件:如何将红点设计做成 Flutter 组件

本课时在实现 App 个人页面的过程中,着重介绍了红点组件的设计和应用,同时介绍到了 Provider 多状态管理的方法。学习完本课时后,你要熟练应用红点组件,并且掌握其业务组件设计的方法,其次需要掌握 Provider 的多状态管理方法。在本课时之前,所有的 API 接口都是一个假接口数据,下一课时我们将介绍如何进行网络请求,来完善 API 部分功能。点击此链接查看本课时源码。
摘要由CSDN通过智能技术生成

上一课时我们完善了首页推荐功能,本课时将完善个人页面。个人页面涉及红点组件的知识点,因此本课时在完善个人页面的同时,会着重介绍下该功能的实现。

实现效果

我们先来看下本课时要完成的一个界面效果,如图 1 动画所示。

20200712_160246.gif

图 1 本课时目标效果

首先在最底部导航栏增加了消息未读数提示,当有新的未读消息时候,会有红点提示。个人界面展示了个人信息以及个人相关的操作栏(我的好友、我的消息和系统设置)。

接下来我们来看下实现该效果需要做哪些前期准备工作。

前期准备

基于图 1 的效果,我们首先要实现个人页面。个人页面是一个新页面,对于新页面我们按照第 7 课时的知识去设计页面。由于新增了红点功能,首先在 App 启动时 ,需要一个新的接口拉取服务器未读消息数,然后新增 API 来拉取该数据。其次这个数据状态,需要在多个组件中共享,因此要新增 Model 来管理该状态 。

组件设计

根据图 2 的界面效果,我们将页面拆分图 3 组件树。

image (9).png

图 2 个人页面效果

image (10).png

图 3 个人页面组件树设计

图 3 组件树中, 左侧为最上面的头像和昵称,右侧为功能列表 。由于是一个有限的列表,因此可以使用 ListView 来封装组件。具体代码编写部分和之前所介绍的没有太大区别,详细代码可 前往 github 参考

个人页面开发完成后,我们再来看下红点功能所涉及的 API 和 Model 功能部分。由于用户信息和红点未读消息,都需要状态共享,因此需要创建两个 Model 类 。 这两个 Model 类的代码逻辑基本一致,下面只介绍与红点未读消息有关的部分。

API

在 App 启动时就需要拉取未读消息数,因此需要一个接口来获取未读消息内容 。在 api/user_info 目录下创建 message.dart 来管理消息接口 ,实现该 ApiUserInfoMessage 类,代码如下:

/// 获取用户消息相关 
class ApiUserInfoMessage { 
  /// 获取自己的个人信息 
  static int getUnReadMessageNum() { 
    return 18; 
  } 
}

上面就是这个 API 的功能,里面包含一个 getUnReadMessageNum 方法,这里模拟返回一个假数据 18 个未读消息。

Model

由于未读消息会被应用在底部导航栏和个人页面两个组件页面,因此需要使用 Provider 来做状态管理,在 model 下创建 new_message_model.dart ,并实现下面代码:

import 'package:flutter/material.dart'; 
/// name状态管理模块 
class NewMessageModel with ChangeNotifier { 
  /// 系统未读新消息数 
  int newMessageNum; 
  /// 构造函数 
  NewMessageModel({this.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值