예제 #1
0
        public Widget BulidTopSwiper(List <string> urls)
        {
            List <Widget> children = new List <Widget>();

            foreach (var item in urls)
            {
                Widget it = Image.network(item, fit: BoxFit.fill);
                children.Add(it);
            }
            TransformerPageController controller = new TransformerPageController(initialPage: 0, itemCount: urls.Count);

            return(new Container(
                       height: 270,
                       width: 375,
                       child: new Stack(

                           children: new List <Widget> {
                TransformerPageView.children(index: 0,
                                             children: children, pageController: controller
                                             ),
                new Align(
                    alignment: Alignment.bottomCenter,
                    child: new Padding(
                        padding: EdgeInsets.only(bottom: 20),
                        child: new PageIndicator(layout: PageIndicatorLayout.WARM, size: 7, activeSize: 7, controller: controller, space: 5.0f, count: urls.Count
                                                 , color: new Unity.UIWidgets.ui.Color(0xFFEAEAEA), activeColor: new Unity.UIWidgets.ui.Color(0xFF404759))

                        )
                    )
            }
                           )
                       ));
        }
예제 #2
0
    public override void initState()
    {
        _transformer = widget.transformer;
        //  int index = widget.index ?? 0;
        _pageController = widget.pageController;
        if (_pageController == null)
        {
            _pageController = new TransformerPageController(
                initialPage: widget.index,
                itemCount: widget.itemCount,
                loop: widget.loop,
                reverse:
                widget.transformer == null ? false : widget.transformer.reverse);
        }
        // int initPage = _getRealIndexFromRenderIndex(index);
        // _pageController = new PageController(initialPage: initPage,viewportFraction: widget.viewportFraction);
        _fromIndex = _activeIndex = _pageController.initialPage;

        _controller = getNotifier();
        if (_controller != null)
        {
            _controller.addListener(onChangeNotifier);
        }
        base.initState();
    }
예제 #3
0
    public override void didUpdateWidget(StatefulWidget oldWidget)
    {
        _transformer = widget.transformer;
        int  index   = widget.index;
        bool created = false;

        if (_pageController != widget.pageController)
        {
            if (widget.pageController != null)
            {
                _pageController = widget.pageController;
            }
            else
            {
                created         = true;
                _pageController = new TransformerPageController(
                    initialPage: widget.index,
                    itemCount: widget.itemCount,
                    loop: widget.loop,
                    reverse: widget.transformer == null
                        ? false
                        : widget.transformer.reverse);
            }
        }

        if (_pageController.getRenderIndexFromRealIndex(_activeIndex) != index)
        {
            _fromIndex = _activeIndex = _pageController.initialPage;
            if (!created)
            {
                int initPage = _pageController.getRealIndexFromRenderIndex(index);
                _pageController.animateToPage(initPage,
                                              duration: widget.duration, curve: widget.curve);
            }
        }
        if (_transformer != null)
        {
            WidgetsBinding.instance.addPostFrameCallback(_onGetSize);
        }

        if (_controller != getNotifier())
        {
            if (_controller != null)
            {
                _controller.removeListener(onChangeNotifier);
            }
            _controller = getNotifier();
            if (_controller != null)
            {
                _controller.addListener(onChangeNotifier);
            }
        }
        base.didUpdateWidget(oldWidget);
    }
예제 #4
0
 public override void initState()
 {
     _activeIndex = widget.index;
     if (_isPageViewLayout())
     {
         _pageController = new TransformerPageController(
             initialPage: widget.index,
             loop: widget.loop,
             itemCount: widget.itemCount,
             reverse:
             widget.transformer == null ? false : widget.transformer.reverse,
             viewportFraction: widget.viewportFraction);
     }
     base.initState();
 }
예제 #5
0
    public override void didUpdateWidget(StatefulWidget oldWidget)
    {
        base.didUpdateWidget(oldWidget);
        Swiper sp = oldWidget as Swiper;

        if (_isPageViewLayout() && sp != null)
        {
            if (_pageController == null ||
                (widget.index != sp.index ||
                 widget.loop != sp.loop ||
                 widget.itemCount != sp.itemCount ||
                 widget.viewportFraction != sp.viewportFraction ||
                 _getReverse(widget) != _getReverse(sp)))
            {
                _pageController = new TransformerPageController(
                    initialPage: widget.index,
                    loop: widget.loop,
                    itemCount: widget.itemCount,
                    reverse: _getReverse(widget),
                    viewportFraction: widget.viewportFraction);
            }
        }
        else
        {
            //scheduleMicrotask(() =>
            //{
            //    // So that we have a chance to do `removeListener` in child widgets.
            //    if (_pageController != null)
            //    {
            //        _pageController.dispose();
            //        _pageController = null;
            //    }
            //});
        }
        //if (widget.index != null && widget.index != _activeIndex)
        //{
        //    _activeIndex = widget.index;
        //}
        //TODO:Check widget.index != null or widget.index != 0
        if (widget.index != _activeIndex)
        {
            _activeIndex = widget.index;
        }
    }
예제 #6
0
    public static TransformerPageView children(

        int index,
        TimeSpan?duration                        = null,
        Curve curve                              = null,
        Key key                                  = null,
        ScrollPhysics physics                    = null,
        ValueChanged <int> onPageChanged         = null,
        IndexController controller               = null,
        TransformerPageController pageController = null,
        PageTransformer transformer              = null,
        List <Widget> children                   = null,
        float viewportFraction                   = 1,
        bool pageSnapping                        = true,
        bool loop                                = false,
        Axis scrollDirection                     = Axis.horizontal
        )
    {
        return(new TransformerPageView(
                   itemCount: children.Count,
                   itemBuilder: (BuildContext context, int ind) =>
        {
            return children[ind];
        },
                   pageController: pageController,
                   transformer: transformer,
                   pageSnapping: pageSnapping,
                   key: key,
                   index: index,
                   duration: duration,
                   curve: curve ?? Curves.ease,
                   viewportFraction: viewportFraction,
                   scrollDirection: scrollDirection,
                   physics: physics,
                   onPageChanged: onPageChanged,
                   controller: controller
                   ));
    }
예제 #7
0
    /// Creates a scrollable list that works page by page using widgets that are
    /// created on demand.
    ///
    /// This constructor is appropriate for page views with a large (or infinite)
    /// number of children because the builder is called only for those children
    /// that are actually visible.
    ///
    /// Providing a non-null [itemCount] lets the [PageView] compute the maximum
    /// scroll extent.
    ///
    /// [itemBuilder] will be called only with indices greater than or equal to
    /// zero and less than [itemCount].
    public TransformerPageView(

        int index,
        Curve curve,
        ScrollPhysics physics,
        ValueChanged <int> onPageChanged,
        IndexController controller,
        PageTransformer transformer,
        IndexedWidgetBuilder itemBuilder,
        TransformerPageController pageController,
        int itemCount,
        TimeSpan?duration      = null,
        Key key                = null,
        float viewportFraction = 1,
        Axis scrollDirection   = Axis.horizontal,
        bool loop              = false,
        bool pageSnapping      = true
        ) : base(key: key)
    {
        this.index            = index;
        this.curve            = curve == null ? Curves.ease : curve;
        this.loop             = loop;
        this.scrollDirection  = scrollDirection;
        this.physics          = physics;
        this.onPageChanged    = onPageChanged;
        this.controller       = controller;
        this.transformer      = transformer;
        this.itemBuilder      = itemBuilder;
        this.pageController   = pageController;
        this.itemCount        = itemCount;
        this.viewportFraction = viewportFraction;
        this.scrollDirection  = scrollDirection;
        this.loop             = loop;
        this.pageSnapping     = pageSnapping;
        this.duration         = duration ?? TimeSpan.FromMilliseconds(kDefaultTransactionDuration);
    }
예제 #8
0
 public override void initState()
 {
     controller = new TransformerPageController(itemCount: 4, loop: false, reverse: false);
     base.initState();
 }