Exemple #1
0
        Widget _buildSubmitButton()
        {
            Widget right = new Container();

            if (this.widget.viewModel.loading)
            {
                right = new CustomActivityIndicator(
                    loadingColor: LoadingColor.white,
                    size: LoadingSize.small
                    );
            }

            return(new Container(
                       padding: EdgeInsets.symmetric(horizontal: 16),
                       margin: EdgeInsets.only(top: 32),
                       child: new CustomButton(
                           onPressed: () => {
                if (this.widget.viewModel.loading || !this._isCompleted)
                {
                    return;
                }

                this.widget.actionModel.startFeedback();
                this.widget.actionModel.sendFeedbak(this._contentController.text, this._nameController.text,
                                                    this._contactController.text
                                                    );
            },
                           padding: EdgeInsets.zero,
                           child: new Container(
                               height: 40,
                               decoration: new BoxDecoration(
                                   this._isCompleted
                                ? this.widget.viewModel.loading
                                    ? CColors.ButtonActive
                                    : CColors.PrimaryBlue
                                : CColors.Disable,
                                   borderRadius: BorderRadius.all(4)
                                   ),
                               child: new Stack(
                                   children: new List <Widget> {
                new Align(
                    alignment: Alignment.center,
                    child: new Text(
                        "提交",
                        style: CTextStyle.PLargeMediumWhite
                        )
                    ),
                new Positioned(
                    right: 24,
                    height: 40,
                    child: right
                    )
            }
                                   )
                               )
                           )
                       ));
        }
Exemple #2
0
        Widget _buildReportButton()
        {
            Widget right;

            if (this.widget.viewModel.loading)
            {
                right = new CustomActivityIndicator(
                    loadingColor: LoadingColor.white,
                    size: LoadingSize.small
                    );
            }
            else
            {
                right = new Container();
            }

            return(new Container(
                       padding: EdgeInsets.symmetric(horizontal: 16),
                       margin: EdgeInsets.only(top: 16),
                       child: new CustomButton(
                           onPressed: () => {
                if (this.widget.viewModel.loading)
                {
                    return;
                }

                this.widget.actionModel.startReportItem();
                this.widget.actionModel.reportItem(this._reportItems[this._selectedIndex]);
            },
                           padding: EdgeInsets.zero,
                           child: new Container(
                               height: 40,
                               decoration: new BoxDecoration(this.widget.viewModel.loading
                                ? CColors.ButtonActive
                                : CColors.PrimaryBlue,
                                                             borderRadius: BorderRadius.all(4)
                                                             ),
                               child: new Stack(
                                   children: new List <Widget> {
                new Align(
                    alignment: Alignment.center,
                    child: new Text(
                        "举报",
                        style: CTextStyle.PLargeMediumWhite
                        )
                    ),
                new Positioned(
                    right: 24,
                    height: 40,
                    child: right
                    )
            }
                                   )
                               )
                           )
                       ));
        }
Exemple #3
0
        Widget _buildNavigationBar()
        {
            var    favoriteTag = this.widget.viewModel.favoriteTag;
            string title;
            var    rightWidget = (Widget) new Container(width: 56);

            if (favoriteTag == null)
            {
                title = "";
            }
            else
            {
                if (favoriteTag.type == "default")
                {
                    title = "默认";
                }
                else
                {
                    title = favoriteTag.name;
                }
            }

            Widget titleWidget = new Container();

            Widget buttonChild;


            Color buttonColor = CColors.PrimaryBlue;

            if (this.widget.viewModel.collectLoading)
            {
                buttonColor = CColors.Disable2;
                buttonChild = new CustomActivityIndicator(
                    size: LoadingSize.xSmall
                    );
            }
            else
            {
                string buttonText = "收藏";
                Color  textColor  = CColors.PrimaryBlue;
                if (this.widget.viewModel.isCollect)
                {
                    buttonText  = $"已收藏";
                    buttonColor = CColors.Disable2;
                    textColor   = new Color(0xFF959595);
                }

                buttonChild = new Text(
                    data: buttonText,
                    style: new TextStyle(
                        fontSize: 14,
                        fontFamily: "Roboto-Medium",
                        color: textColor
                        )
                    );
            }

            var child = new CustomButton(
                onPressed: this._onPressed,
                padding: EdgeInsets.zero,
                child: new Container(
                    width: 60,
                    height: 28,
                    alignment: Alignment.center,
                    decoration: new BoxDecoration(
                        color: CColors.White,
                        borderRadius: BorderRadius.circular(14),
                        border: Border.all(color: buttonColor)
                        ),
                    child: buttonChild
                    )
                );


            if (this._isHaveTitle)
            {
                titleWidget = new Text(
                    data: title,
                    style: CTextStyle.PXLargeMedium,
                    maxLines: 1,
                    overflow: TextOverflow.ellipsis,
                    textAlign: TextAlign.center
                    );
                rightWidget = new Padding(
                    padding: EdgeInsets.symmetric(horizontal: 16),
                    child: child);
            }


            if (this.widget.viewModel.favoriteTag.type != "default" && this.widget.viewModel.isLoggedIn &&
                this.widget.viewModel.currentUserId.Equals(this.widget.viewModel.userId) &&
                this.widget.viewModel.type == FavoriteType.my)
            {
                rightWidget = new CustomButton(
                    padding: EdgeInsets.symmetric(8, 16),
                    onPressed: () => this.widget.actionModel.pushToEditFavorite(this.widget.viewModel.favoriteTag.id),
                    child: new Text(
                        "编辑",
                        style: CTextStyle.PLargeMediumBlue.merge(new TextStyle(height: 1))
                        )
                    );
            }

            if (favoriteTag.type == "default" || (this.widget.viewModel.type == FavoriteType.userDetail &&
                                                  UserInfoManager.isLogin() &&
                                                  this.widget.viewModel.myFavoriteIds.Contains(this.widget.viewModel
                                                                                               .favoriteTag.quoteTagId)))
            {
                rightWidget = new Padding(
                    padding: EdgeInsets.symmetric(horizontal: 16),
                    child: new Container());
            }


            return(new CustomAppBar(
                       () => this.widget.actionModel.mainRouterPop(),
                       new Expanded(
                           child: new Stack(
                               fit: StackFit.expand,
                               children: new List <Widget> {
                new PositionedTransition(
                    rect: this._animation,
                    child: titleWidget
                    )
            }
                               )
                           ),
                       rightWidget: rightWidget,
                       backgroundColor: this._isHaveTitle || this.widget.viewModel.type == FavoriteType.my
                    ? CColors.White
                    : CColors.Background,
                       bottomSeparatorColor: this._isHaveTitle || this.widget.viewModel.type == FavoriteType.my
                    ? CColors.Separator2
                    : CColors.Transparent
                       ));
        }
        Widget _buildFollowButton(bool isTop = false)
        {
            if (this.widget.viewModel.isLoggedIn &&
                this.widget.viewModel.currentUserId == this.widget.viewModel.team.id)
            {
                return(new Container());
            }

            bool               isFollow      = false;
            string             followText    = "关注";
            Color              followBgColor = CColors.PrimaryBlue;
            GestureTapCallback onTap         = () => {
                this.widget.actionModel.startFollowTeam();
                this.widget.actionModel.followTeam(arg: this.widget.viewModel.team.id);
            };

            if (this.widget.viewModel.isLoggedIn &&
                this.widget.viewModel.followMap.ContainsKey(key: this.widget.viewModel.team.id))
            {
                isFollow      = true;
                followText    = "已关注";
                followBgColor = CColors.Transparent;
                onTap         = () => {
                    ActionSheetUtils.showModalActionSheet(
                        new ActionSheet(
                            title: "确定不再关注?",
                            items: new List <ActionSheetItem> {
                        new ActionSheetItem("确定", type: ActionType.normal, () => {
                            this.widget.actionModel.startUnFollowTeam();
                            this.widget.actionModel.unFollowTeam(arg: this.widget.viewModel.team.id);
                        }),
                        new ActionSheetItem("取消", type: ActionType.cancel)
                    }
                            )
                        );
                };
            }

            Widget buttonChild;
            bool   isEnable;

            if (this.widget.viewModel.team.followTeamLoading ?? false)
            {
                buttonChild = new CustomActivityIndicator(
                    loadingColor: isTop ? LoadingColor.black : LoadingColor.white,
                    size: LoadingSize.small
                    );
                isEnable = false;
            }
            else
            {
                buttonChild = new Text(
                    data: followText,
                    style: isTop
                        ? new TextStyle(
                        fontSize: 14,
                        fontFamily: "Roboto-Medium",
                        color: isFollow ? new Color(0xFF959595) : CColors.PrimaryBlue
                        )
                        : CTextStyle.PMediumWhite
                    );
                isEnable = true;
            }

            if (isTop)
            {
                return(new CustomButton(
                           padding: EdgeInsets.zero,
                           child: new Container(
                               width: 60,
                               height: 28,
                               alignment: Alignment.center,
                               decoration: new BoxDecoration(
                                   color: CColors.Transparent,
                                   borderRadius: BorderRadius.circular(14),
                                   border: isFollow
                                ? Border.all(color: CColors.Disable2)
                                : Border.all(color: CColors.PrimaryBlue)
                                   ),
                               child: buttonChild
                               ),
                           onPressed: () => {
                    if (!isEnable)
                    {
                        return;
                    }

                    if (this.widget.viewModel.isLoggedIn)
                    {
                        onTap();
                    }
                    else
                    {
                        this.widget.actionModel.pushToLogin();
                    }
                }
                           ));
            }

            return(new CustomButton(
                       padding: EdgeInsets.zero,
                       child: new Container(
                           width: 100,
                           height: 32,
                           alignment: Alignment.center,
                           decoration: new BoxDecoration(
                               color: followBgColor,
                               borderRadius: BorderRadius.all(4),
                               border: isFollow ? Border.all(CColors.White) : null
                               ),
                           child: buttonChild
                           ),
                       onPressed: () => {
                if (!isEnable)
                {
                    return;
                }

                if (this.widget.viewModel.isLoggedIn)
                {
                    onTap();
                }
                else
                {
                    this.widget.actionModel.pushToLogin();
                }
            }
                       ));
        }
        Widget _buildEventBottom(IEvent eventObj, EventType eventType, EventStatus eventStatus,
                                 bool isLoggedIn)
        {
            if (eventStatus != EventStatus.future && eventType == EventType.online && isLoggedIn)
            {
                return(new Container());
            }

            var onlineCount      = eventObj.onlineMemberCount;
            var recordWatchCount = eventObj.recordWatchCount;
            var userIsCheckedIn  = eventObj.userIsCheckedIn;
            var title            = "";
            var subTitle         = "";

            if (eventStatus == EventStatus.live)
            {
                title    = "正在直播";
                subTitle = $"{onlineCount}人正在观看";
            }

            if (eventStatus == EventStatus.past)
            {
                title    = "回放";
                subTitle = $"{recordWatchCount}次观看";
            }

            if (eventStatus == EventStatus.future || eventStatus == EventStatus.countDown)
            {
                var begin     = eventObj.begin != null ? eventObj.begin : new TimeMap();
                var startTime = begin.startTime;
                if (startTime.isNotEmpty())
                {
                    subTitle = DateConvert.GetFutureTimeFromNow(startTime);
                }

                title = "距离开始还有";
            }

            var backgroundColor = CColors.PrimaryBlue;
            var joinInText      = "立即加入";
            var textStyle       = CTextStyle.PLargeMediumWhite;

            if (userIsCheckedIn && isLoggedIn)
            {
                backgroundColor = CColors.Disable;
                joinInText      = "已加入";
                textStyle       = CTextStyle.PLargeMediumWhite;
            }

            Widget child = new Text(
                joinInText,
                style: textStyle
                );

            if (this.widget.viewModel.joinEventLoading)
            {
                child = new CustomActivityIndicator(
                    loadingColor: LoadingColor.white
                    );
            }

            return(new Container(
                       height: 64,
                       padding: EdgeInsets.symmetric(horizontal: 16),
                       decoration: new BoxDecoration(
                           CColors.White,
                           border: new Border(new BorderSide(CColors.Separator))
                           ),
                       child: new Row(
                           mainAxisAlignment: MainAxisAlignment.spaceBetween,
                           children: new List <Widget> {
                new Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: new List <Widget> {
                    new Text(
                        title,
                        style: CTextStyle.PSmallBody4
                        ),
                    new Container(height: 2),
                    new Text(
                        subTitle,
                        style: CTextStyle.H5Body
                        )
                }
                    ),
                new CustomButton(
                    onPressed: () => {
                    if (this.widget.viewModel.joinEventLoading)
                    {
                        return;
                    }

                    if (!this.widget.viewModel.isLoggedIn)
                    {
                        this.widget.actionModel.pushToLogin();
                    }
                    else
                    {
                        if (!userIsCheckedIn)
                        {
                            this.widget.actionModel.startJoinEvent();
                            this.widget.actionModel.joinEvent(this.widget.viewModel.eventId);
                        }
                    }
                },
                    child: new Container(
                        width: 96,
                        height: 40,
                        decoration: new BoxDecoration(
                            backgroundColor,
                            borderRadius: BorderRadius.all(4)
                            ),
                        alignment: Alignment.center,
                        child: new Row(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: new List <Widget> {
                    child
                }
                            )
                        )
                    )
            }
                           )
                       ));
        }
        Widget _buildNavigationBar()
        {
            Widget titleWidget;

            if (this._isHaveTitle)
            {
                var name = "";
                if (this.widget.viewModel.type == LeaderBoardType.collection)
                {
                    if (this.widget.viewModel.favoriteTagDict.isNotEmpty() &&
                        this.widget.viewModel.rankData != null &&
                        this.widget.viewModel.favoriteTagDict.ContainsKey(this.widget.viewModel.rankData.itemId))
                    {
                        var favoriteTag = this.widget.viewModel.favoriteTagDict[this.widget.viewModel.rankData.itemId];
                        name = this.widget.viewModel.rankData.resetTitle.isNotEmpty()
                            ? this.widget.viewModel.rankData.resetTitle
                            : favoriteTag?.name;
                    }
                }
                else
                {
                    if (this.widget.viewModel.userDict.isNotEmpty() &&
                        this.widget.viewModel.rankData != null &&
                        this.widget.viewModel.userDict.ContainsKey(this.widget.viewModel.rankData.itemId))
                    {
                        var user = this.widget.viewModel.userDict[this.widget.viewModel.rankData.itemId];
                        name = this.widget.viewModel.rankData.resetTitle.isNotEmpty()
                            ? this.widget.viewModel.rankData.resetTitle
                            : $"{user.fullName}的专栏";
                    }
                }


                titleWidget = new Text(
                    name,
                    style: CTextStyle.PXLargeMedium,
                    maxLines: 1,
                    overflow: TextOverflow.ellipsis,
                    textAlign: TextAlign.center
                    );
            }
            else
            {
                titleWidget = new Container();
            }

            Widget buttonChild;


            Color buttonColor = CColors.PrimaryBlue;

            if (this.widget.viewModel.collectLoading)
            {
                buttonColor = CColors.Disable2;
                buttonChild = new CustomActivityIndicator(
                    size: LoadingSize.xSmall
                    );
            }
            else
            {
                string buttonText = "收藏";
                Color  textColor  = CColors.PrimaryBlue;
                if (this._fetchButtonState())
                {
                    buttonText  = $"已收藏";
                    buttonColor = CColors.Disable2;
                    textColor   = new Color(0xFF959595);
                }

                buttonChild = new Text(
                    data: buttonText,
                    style: new TextStyle(
                        fontSize: 14,
                        fontFamily: "Roboto-Medium",
                        color: textColor
                        )
                    );
            }

            var child = this.widget.viewModel.type == LeaderBoardType.column
                ? this._buildFollowButton()
                : this.widget.viewModel.isHost
                    ? (Widget) new Container()
                    : new CustomButton(
                onPressed: this._onPressed,
                padding: EdgeInsets.zero,
                child: new Container(
                    width: 60,
                    height: 28,
                    alignment: Alignment.center,
                    decoration: new BoxDecoration(
                        color: CColors.White,
                        borderRadius: BorderRadius.circular(14),
                        border: Border.all(color: buttonColor)
                        ),
                    child: buttonChild
                    )
                );
            Widget rightWidget = new Container();

            if (this._isHaveTitle)
            {
                rightWidget = new Padding(
                    padding: EdgeInsets.symmetric(horizontal: 16),
                    child: child);
            }


            return(new CustomAppBar(
                       () => this.widget.actionModel.mainRouterPop(),
                       new Expanded(
                           child: new Stack(
                               fit: StackFit.expand,
                               children: new List <Widget> {
                new PositionedTransition(
                    rect: this._animation,
                    child: titleWidget
                    )
            }
                               )
                           ),
                       rightWidget: rightWidget,
                       backgroundColor: this._isHaveTitle ? CColors.White : CColors.Background,
                       bottomSeparatorColor: this._isHaveTitle ? CColors.Separator2 : CColors.Transparent
                       ));
        }
Exemple #7
0
        Widget _buildBottomView()
        {
            Widget right = new Container();

            if (this.widget.viewModel.loginLoading)
            {
                right = new CustomActivityIndicator(
                    loadingColor: LoadingColor.white,
                    size: LoadingSize.small
                    );
            }

            return(new Container(
                       padding: EdgeInsets.symmetric(horizontal: 16),
                       child: new Column(
                           crossAxisAlignment: CrossAxisAlignment.start,
                           children: new List <Widget> {
                new Container(height: 32),
                new CustomButton(
                    onPressed: this._login,
                    padding: EdgeInsets.zero,
                    child: new Container(
                        height: 48,
                        decoration: new BoxDecoration(this.widget.viewModel.loginBtnEnable
                                        ? this.widget.viewModel.loginLoading
                                            ? CColors.ButtonActive
                                            : CColors.PrimaryBlue
                                        : CColors.Disable,
                                                      borderRadius: BorderRadius.all(24)
                                                      ),
                        child: new Stack(
                            children: new List <Widget> {
                    new Align(
                        alignment: Alignment.center,
                        child: new Text(
                            "确定",
                            maxLines: 1,
                            style: CTextStyle.PLargeWhite
                            )
                        ),
                    new Positioned(
                        right: 24,
                        height: 48,
                        child: right
                        )
                }
                            )
                        )
                    ),
                new Container(height: 8),
                new CustomButton(
                    onPressed: () => this.widget.actionModel.openUrl($"{Config.idBaseUrl}/password/new"),
                    child: new Text(
                        "忘记密码",
                        style: CTextStyle.PRegularBody3
                        )
                    )
            }
                           )
                       ));
        }