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 ) } ) ) ) )); }
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 ) } ) ) ) )); }
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 )); }
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 ) ) } ) )); }