Esempio n. 1
0
File: 404.cs Progetto: U3DC/DocCN
        public override Widget build(BuildContext context)
        {
            var         pageHeight = MediaQuery.of(context).size.height;
            const float minHeight  = Header.Height + SearchBar.Height + Footer.Height;

            return(new Container(
                       height: pageHeight,
                       child: new SingleChildScrollView(
                           child: new ScrollableOverlay(
                               child: new Column(
                                   children: new List <Widget>
            {
                new Header(),
                new SearchBar(),
                new Container(
                    constraints: new BoxConstraints(
                        minHeight: minHeight < pageHeight ? pageHeight - minHeight : 0
                        ),
                    padding: EdgeInsets.symmetric(vertical: 48f),
                    color: new Color(0xffffffff),
                    child: new Center(
                        child: new Column(
                            mainAxisAlignment: MainAxisAlignment.center,
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: new List <Widget>
                {
                    new Container(
                        width: 512,
                        height: 205,
                        margin: EdgeInsets.only(bottom: 24f),
                        child: new Image(
                            image: new AssetImage("Images/404@3x")
                            )
                        ),
                    new RichText(
                        text: new TextSpan(
                            children: new List <TextSpan>
                    {
                        new TextSpan("抱歉,您所访问的页面已被"),
                        new TextSpan("移除", style: EmStyle),
                        new TextSpan("或"),
                        new TextSpan("不存在", style: EmStyle),
                        new TextSpan("。")
                    },
                            style: new TextStyle(
                                fontSize: 24f,
                                color: new Color(0xffd8d8d8),
                                height: 1.33333333333f.LineHeight(),
                                fontWeight: FontWeight.w500
                                )
                            )
                        ),
                    new Container(
                        margin: EdgeInsets.only(top: 32f),
                        child: new Button(
                            onTap: () => LocationUtil.Go("/"),
                            text: "返回主页"
                            )
                        )
                }
                            )
                        )
                    ),
                new Footer(),
            }
                                   )
                               )
                           )
                       ));
        }
Esempio n. 2
0
        public override Widget build(BuildContext context)
        {
            var children = new List <Widget>
            {
                new Clickable(
                    onTap: () => LocationUtil.Go($"/{_item.type.FirstCharToUpper()}/{_item.name}"),
                    child: new Container(
                        margin: EdgeInsets.only(top: 24f, left: 24f, right: 24f, bottom: 8f),
                        child: new Text(
                            _item.name,
                            style: TitleTextStyle
                            )
                        )
                    )
            };

            if (_highlight != null)
            {
                children.Add(
                    new Clickable(
                        onTap: () => LocationUtil.Go($"/{_item.type.FirstCharToUpper()}/{_item.name}"),
                        child: new Container(
                            child: new RichText(
                                text: new TextSpan(
                                    children: _highlight
                                    )
                                ),
                            margin: EdgeInsets.only(bottom: 24f, left: 24f, right: 24f)
                            )
                        )
                    );
            }

            if (_item.breadcrumbs != null && _item.breadcrumbs.Count != 0)
            {
                children.Add(Splitter);
                children.Add(
                    new Container(
                        height: 44f,
                        padding: EdgeInsets.symmetric(horizontal: 24f),
                        child: new Align(
                            alignment: Alignment.centerLeft,
                            child: new Breadcrumbs(
                                _item.breadcrumbs,
                                splitterStyle: BreadcrumbSplitterStyle,
                                normalBreadcrumbStyle: BreadcrumbStyle,
                                hoverBreadCrumbStyle: BreadcrumbHoverStyle
                                )
                            )
                        )
                    );
            }
            else
            {
                children.Add(
                    new Container(
                        height: 24f
                        )
                    );
            }

            return(new Container(
                       decoration: ContainerDecoration,
                       margin: EdgeInsets.only(bottom: 12f),
                       child: new Column(
                           crossAxisAlignment: CrossAxisAlignment.stretch,
                           children: children
                           )
                       ));
        }
Esempio n. 3
0
            public override Widget build(BuildContext buildContext)
            {
                if (_loading)
                {
                    return(new Container(
                               child: new Center(
                                   child: new Loading(
                                       size: 48f
                                       )
                                   )
                               ));
                }

                var markdownBuildCtx = new BuilderContext(_imageMetas, buildContext);

                _spanRecognizers?.ForEach(recognizer => recognizer.dispose());

                var widgets = new List <Widget>();

                widgets.AddRange(_tokens
                                 .Where(token => Mappings.ContainsKey(token.type))
                                 .Select(token => Mappings[token.type].Invoke(token, markdownBuildCtx))
                                 .Where(w => !(w is null))
                                 .Select(w => new RepaintBoundary(child: w)));
                _spanRecognizers = markdownBuildCtx.SpanRecognizers;

                widgets.Insert(0,
                               new Container(
                                   height: 64f,
                                   padding: EdgeInsets.only(bottom: 8f),
                                   decoration: new BoxDecoration(
                                       border: new Border(
                                           bottom: new BorderSide(
                                               color: new Color(0xffd8d8d8),
                                               width: 1f
                                               )
                                           )
                                       ),
                                   child: new Align(
                                       alignment: Alignment.bottomLeft,
                                       child: new Breadcrumbs(
                                           _breadcrumbs,
                                           normalBreadcrumbStyle: new TextStyle(
                                               fontSize: 16f,
                                               color: new Color(0xff979797)
                                               ),
                                           hoverBreadCrumbStyle: new TextStyle(
                                               fontSize: 16f,
                                               color: new Color(0xff979797),
                                               decoration: TextDecoration.underline
                                               ),
                                           splitterStyle: new TextStyle(
                                               fontSize: 16f,
                                               color: new Color(0xff979797)
                                               )
                                           )
                                       )
                                   )
                               );

                var linkButtons = new List <Widget>();

                if (_prevLink != null)
                {
                    linkButtons.Add(
                        new Expanded(
                            child: new Container(
                                margin: EdgeInsets.only(right: 20),
                                child: new Button(
                                    text: _prevLink.content ?? "",
                                    onTap: () =>
                    {
                        if (!string.IsNullOrEmpty(_prevLink?.link))
                        {
                            LocationUtil.Go(
                                $"/Manual/{_prevLink?.link}");
                        }
                    },
                                    prefix: Icons.MaterialArrowBack
                                    )
                                )
                            )
                        );
                }
                else
                {
                    linkButtons.Add(
                        new Expanded(
                            flex: 1,
                            child: new Container()
                            )
                        ); // placeholder to use spaceBetween
                }

                if (_nextLink != null)
                {
                    linkButtons.Add(
                        new Expanded(
                            child: new Container(
                                margin: EdgeInsets.only(left: 20),
                                child: new Button(
                                    text: _nextLink.content ?? "",
                                    onTap: () =>
                    {
                        if (!string.IsNullOrEmpty(_nextLink.link))
                        {
                            LocationUtil.Go(
                                $"/Manual/{_nextLink.link}");
                        }
                    },
                                    suffix: Icons.MaterialArrowForward
                                    )
                                )
                            )
                        );
                }
                else
                {
                    linkButtons.Add(
                        new Expanded(
                            flex: 1,
                            child: new Container()
                            )
                        ); // placeholder to use spaceBetween
                }


                widgets.Add(
                    new Container(
                        margin: EdgeInsets.only(top: 32, bottom: 64),
                        child: new Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,
                            children: linkButtons
                            )
                        )
                    );

                var version = DocApp.of(buildContext).version;

                return(new Row(
                           crossAxisAlignment: CrossAxisAlignment.start,
                           children: new List <Widget>
                {
                    new Expanded(
                        child: new Stack(
                            children: new List <Widget>
                    {
                        new Scroller(
                            child: new SingleChildScrollView(
                                controller: _scrollController,
                                child: new ScrollableOverlay(
                                    child: new Column(
                                        children: new List <Widget>
                        {
                            new Container(
                                constraints: new BoxConstraints(
                                    minHeight: MediaQuery.of(buildContext).size.height -
                                    Header.Height -
                                    SearchBar.Height -
                                    Footer.Height
                                    ),
                                child: new Column(
                                    mainAxisAlignment: MainAxisAlignment.start,
                                    crossAxisAlignment: CrossAxisAlignment.start,
                                    children: widgets)
                                ),
                            new Footer(style: Footer.Light, showSocials: false)
                        }
                                        )
                                    )
                                )
                            ),
                        new ToTop(_scrollController, displayThreshold: 128f)
                    }
                            )
                        ),
                    new MetaFields(
                        markdownBuildCtx.PositionRecords,
                        _scrollController,
                        $"https://github.com/UnityTech/documentation-cn/blob/{version.unity_version}/Manual/md/{widget._title}.md"
                        )
                }
                           ));
            }
Esempio n. 4
0
            public override Widget build(BuildContext buildContext)
            {
                var size               = MediaQuery.of(context).size;
                var children           = new List <Widget>();
                var emptyKeyword       = string.IsNullOrEmpty(_keyword);
                var mainAxisAlignment  = _searching || emptyKeyword ? MainAxisAlignment.center : MainAxisAlignment.start;
                var crossAxisAlignment = emptyKeyword ? CrossAxisAlignment.center : CrossAxisAlignment.start;

                if (emptyKeyword)
                {
                    children.Add(
                        new Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: new List <Widget>
                    {
                        new Container(
                            width: 253,
                            height: 334,
                            margin: EdgeInsets.only(bottom: 24f),
                            decoration: new BoxDecoration(
                                image: new DecorationImage(
                                    image: new AssetImage(
                                        "Images/search@3x"
                                        ),
                                    fit: BoxFit.cover
                                    )
                                )
                            ),
                        new Text(
                            "请输入关键词搜索",
                            style: new TextStyle(
                                fontSize: 24f,
                                fontWeight: FontWeight.w500,
                                color: new Color(0xff979797),
                                height: 1.33333333f.LineHeight()
                                )
                            )
                    }
                            )
                        );
                }
                else if (_searching)
                {
                    children.Add(
                        new Container(
                            child: new Center(
                                child: new Loading(
                                    size: 48f
                                    )
                                )
                            )
                        );
                }
                else
                {
                    if (_results != null)
                    {
                        children.Add(
                            new Container(
                                height: 24f,
                                child: new Align(
                                    alignment: Alignment.centerLeft,
                                    child: new Text(
                                        _results.total == 0
                                            ? $"您搜索的 “{_keyword}” 暂无匹配的结果"
                                            : $"您搜索的“{_keyword}”共有{_results.total}个匹配的结果",
                                        style: new TextStyle(
                                            fontSize: 16f,
                                            fontWeight: FontWeight.w500
                                            )
                                        )
                                    ),
                                margin: EdgeInsets.only(bottom: 16f)
                                )
                            );
                        if (_results.items != null)
                        {
                            children.AddRange(_results.items
                                              .Select(searchResultItem => new SearchResultCard(searchResultItem))
                                              .Cast <Widget>());
                        }

                        if (_results.pages != null)
                        {
                            children.Add(
                                new Container(
                                    margin: EdgeInsets.only(top: 16f),
                                    child: new Pager(
                                        pages: _results.pages,
                                        currentPage: _results.currentPage,
                                        totalPages: _results.totalPages,
                                        onPageChanged: page =>
                                        LocationUtil.Go(
                                            $"/Search/{_filterType}/{HttpUtility.UrlEncode(_keyword)}/{page}")
                                        )
                                    )
                                );
                        }
                    }
                }


                var         pageHeight = MediaQuery.of(context).size.height;
                const float minHeight  = Header.Height + SearchBar.Height + Footer.Height;

                return(new Container(
                           constraints: new BoxConstraints(
                               minHeight: size.height
                               ),
                           width: size.width,
                           child: new SingleChildScrollView(
                               child: new ScrollableOverlay(
                                   child: new Column(
                                       crossAxisAlignment: CrossAxisAlignment.stretch,
                                       children: new List <Widget>
                {
                    new Header(),
                    new SearchBar(),
                    new Container(
                        constraints: new BoxConstraints(
                            minHeight: minHeight < pageHeight ? pageHeight - minHeight : 0
                            ),
                        padding: EdgeInsets.only(top: 16f, right: 48f, bottom: 48f, left: 48f),
                        color: new Color(0xfff2f1f2),
                        child: new Column(
                            crossAxisAlignment: crossAxisAlignment,
                            mainAxisAlignment: mainAxisAlignment,
                            children: children
                            )
                        ),
                    new Footer(),
                }
                                       )
                                   )
                               )
                           ));
            }
Esempio n. 5
0
 public override Widget build(BuildContext context)
 {
     return(new Expanded(
                child: new Clickable(
                    onTap: () => LocationUtil.Go(_link),
                    child: new Container(
                        height: Height,
                        margin: EdgeInsets.only(left: 12.0f, right: 12.0f),
                        child: new Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: new List <Widget>
     {
         new Container(
             height: 32.0f,
             margin: EdgeInsets.only(bottom: 16.0f),
             child: new Align(
                 alignment: Alignment.centerLeft,
                 child: new Text(
                     _title,
                     style: new TextStyle(
                         fontSize: 24.0f,
                         fontWeight: FontWeight.w500,
                         color: TitleTextColor
                         )
                     )
                 )
             ),
         new Expanded(
             child: new Container(
                 padding: EdgeInsets.all(24.0f),
                 decoration: new BoxDecoration(
                     image: new DecorationImage(
                         image: new AssetImage(_imageLocation),
                         fit: BoxFit.cover
                         )
                     ),
                 child: new Column(
                     crossAxisAlignment: CrossAxisAlignment.start,
                     children: new List <Widget>
         {
             new Container(
                 margin: EdgeInsets.only(top: 16.0f),
                 child: new Text(
                     _latestVersion,
                     style: new TextStyle(
                         fontSize: 14.0f,
                         fontWeight: FontWeight.w500,
                         height: 1.42857142857f.LineHeight(),
                         color: new Color(0xffffffff)
                         )
                     )
                 ),
             new Container(
                 margin: EdgeInsets.only(top: 4.0f),
                 child: new Text(
                     _description,
                     style: new TextStyle(
                         fontSize: 24.0f,
                         height: 1.33333333333f.LineHeight(),
                         fontWeight: FontWeight.w500,
                         color: new Color(0xffffffff)
                         )
                     )
                 ),
             new Container(
                 margin: EdgeInsets.only(top: 56.0f),
                 child: new Text(
                     _description,
                     style: new TextStyle(
                         fontSize: 16.0f,
                         height: 1.5f.LineHeight(),
                         fontWeight: FontWeight.w400,
                         color: new Color(0xffffffff)
                         )
                     )
                 )
         }
                     )
                 )
             ),
     }
                            )
                        )
                    )
                ));
 }