最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

flutter PageView實現(xiàn)左右滑動切換視圖

 更新時間:2019年07月17日 11:24:40   作者:早起的年輕人  
這篇文章主要為大家詳細(xì)介紹了flutter PageView實現(xiàn)左右滑動切換視圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了flutter PageView左右滑動切換視圖的具體代碼,供大家參考,具體內(nèi)容如下

import 'dart:math';

import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_x/base/base_appbar_page.dart';

class LeftPageViewPage extends StatefulWidget {
 @override
 State<StatefulWidget> createState() {
  return new LeftPageViewPageState();
 }
}

class LeftPageViewPageState extends BaseAppBarPageState<LeftPageViewPage> {
 @override
 String buildInitState() {
  buildBackBar("pageView", backIcon: Icons.arrow_back_ios);
  return null;
 }

 final _controller = new PageController();
 static const _kDuration = const Duration(milliseconds: 300);
 static const _kCurve = Curves.ease;
 final List<Widget> _pages = <Widget>[
  new ConstrainedBox(
   constraints: const BoxConstraints.expand(),
   child: new CachedNetworkImage(
    width: double.infinity,
    height: double.infinity,
    fit: BoxFit.fill,
    imageUrl:
      "http://b-ssl.duitang.com/uploads/item/201311/02/20131102150044_YGB5u.jpeg",
    placeholder: (context, url) => new SizedBox(
     width: 24.0,
     height: 24.0,
     child: new CircularProgressIndicator(
      strokeWidth: 2.0,
     ),
    ),
    errorWidget: (context, url, error) => new Icon(Icons.error),
   ),
  ),
  new ConstrainedBox(
   constraints: const BoxConstraints.expand(),
   child: new CachedNetworkImage(
    width: double.infinity,
    height: double.infinity,
    fit: BoxFit.fill,
    imageUrl:
      "http://b-ssl.duitang.com/uploads/item/201311/02/20131102150044_YGB5u.jpeg",
    placeholder: (context, url) => new SizedBox(
     width: 24.0,
     height: 24.0,
     child: new CircularProgressIndicator(
      strokeWidth: 2.0,
     ),
    ),
    errorWidget: (context, url, error) => new Icon(Icons.error),
   ),
  ),
  new ConstrainedBox(
    constraints: const BoxConstraints.expand(),
    child: new Stack(
     //Stack即層疊布局控件,能夠?qū)⒆涌丶盈B排列
     //alignment:此參數(shù)決定如何去對齊沒有定位(沒有使用Positioned)或部分定位的子widget。所謂部分定位,在這里特指沒有在某一個軸上定位:left、right為橫軸,top、bottom為縱軸,只要包含某個軸上的一個定位屬性就算在該軸上有定位。
     alignment: AlignmentDirectional.topStart,
     children: <Widget>[
      new CachedNetworkImage(
       width: double.infinity,
       height: double.infinity,
       fit: BoxFit.fill,
       imageUrl: "http://b-ssl.duitang.com/uploads/item/201311/02/20131102150044_YGB5u.jpeg",
       placeholder: (context, url) => SizedBox(width: 24,height: 25,child: CircularProgressIndicator(strokeWidth: 2.0,),),
       errorWidget: (context, url, error) => new Icon(Icons.error),
      ),
      new Align(
       alignment: Alignment.bottomCenter,
       child: new Container(
        margin: EdgeInsets.only(bottom: 80.0),
        child: FlatButton(onPressed: (){}, child: Text("立即體驗")) ,
       ),
      ),
     ],
    )),
 ];

 @override
 Widget buildWidget(BuildContext context) {
  // TODO: implement buildWidget
  return new Stack(
   children: <Widget>[
    //pageViw
    PageView.builder(
     physics: new AlwaysScrollableScrollPhysics(),
     controller: _controller,
     itemBuilder: (BuildContext context, int index) {
      return _pages[index];
     },
     //條目個數(shù)
     itemCount: _pages.length,
    ),
    //圓點指示器
    new Positioned(
     bottom: 0.0,
     left: 0.0,
     right: 0.0,
     child: new Container(
      color: Colors.white,
      padding: const EdgeInsets.all(20.0),
      child: new Center(
       child: new DotsIndicator(
         controller: _controller,
         itemCount: _pages.length,
         onPageSelected: (int page) {
          _controller.animateToPage(
           page,
           duration: _kDuration,
           curve: _kCurve,
          );
         }),
      ),
     ),
    ),
   ],
  );
 }
}

class DotsIndicator extends AnimatedWidget {
 DotsIndicator({
  this.controller,
  this.itemCount,
  this.onPageSelected,
  this.color: Colors.red,
 }) : super(listenable: controller);

 /// The PageController that this DotsIndicator is representing.
 final PageController controller;

 /// The number of items managed by the PageController
 final int itemCount;

 /// Called when a dot is tapped
 final ValueChanged<int> onPageSelected;

 /// The color of the dots.
 ///
 /// Defaults to `Colors.white`.
 final Color color;

 // The base size of the dots
 static const double _kDotSize = 8.0;

 // The increase in the size of the selected dot
 static const double _kMaxZoom = 2.0;

 // The distance between the center of each dot
 static const double _kDotSpacing = 25.0;

 Widget _buildDot(int index) {
  double selectedness = Curves.easeOut.transform(
   max(
    0.0,
    1.0 - ((controller.page ?? controller.initialPage) - index).abs(),
   ),
  );
  double zoom = 1.0 + (_kMaxZoom - 1.0) * selectedness;
  return new Container(
   width: _kDotSpacing,
   child: new Center(
    child: new Material(
     color: color,
     type: MaterialType.circle,
     child: new Container(
      width: _kDotSize * zoom,
      height: _kDotSize * zoom,
      child: new InkWell(
       onTap: () => onPageSelected(index),
      ),
     ),
    ),
   ),
  );
 }

 Widget build(BuildContext context) {
  return new Row(
   mainAxisAlignment: MainAxisAlignment.center,
   children: new List<Widget>.generate(itemCount, _buildDot),
  );
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android 加密解密字符串詳解

    Android 加密解密字符串詳解

    本篇文章是對Android的加密解密字符串進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android實現(xiàn)帶頭像的用戶注冊頁面

    Android實現(xiàn)帶頭像的用戶注冊頁面

    這篇文章主要介紹了Android實現(xiàn)帶頭像的用戶注冊頁面的相關(guān)資料,介紹的非常詳細(xì),具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • android錯誤 aapt.exe已停止工作的解決方法

    android錯誤 aapt.exe已停止工作的解決方法

    這篇文章主要介紹了android錯誤 aapt.exe已停止工作的解決方法,需要的朋友可以參考下
    2014-11-11
  • Android使用Matrix旋轉(zhuǎn)圖片模擬碟片加載過程

    Android使用Matrix旋轉(zhuǎn)圖片模擬碟片加載過程

    這篇文章主要為大家詳細(xì)介紹了Android使用Matrix旋轉(zhuǎn)圖片模擬碟片加載過程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • ListView通用泛型適配器

    ListView通用泛型適配器

    今天小編就為大家分享一篇關(guān)于ListView通用泛型適配器,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Android文本與視圖基本操作梳理介紹

    Android文本與視圖基本操作梳理介紹

    下面介紹一下android如何設(shè)置文本內(nèi)容、設(shè)置文本字體大小、文本顏色、視圖寬高、視圖間距、和視圖的對齊方式,只簡單說明一下如何操作,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • android 線性布局LinearLayout實例代碼

    android 線性布局LinearLayout實例代碼

    android 線性布局LinearLayout實例代碼,需要的朋友可以參考一下
    2013-05-05
  • Android EditText密碼的隱藏和顯示功能

    Android EditText密碼的隱藏和顯示功能

    這篇文章主要介紹了Android EditText密碼的隱藏和顯示功能的相關(guān)資料,主要是利用EditText和CheckBox 來實現(xiàn)該功能,需要的朋友可以參考下
    2017-07-07
  • 簡單實現(xiàn)Android彈出菜單效果

    簡單實現(xiàn)Android彈出菜單效果

    這篇文章主要為大家詳細(xì)介紹了簡單實現(xiàn)Android彈出菜單效果的相關(guān)代碼,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Android和iOS 測試五個最好的開源自動化工具

    Android和iOS 測試五個最好的開源自動化工具

    本文主要介紹Android和iOS 五個最好的開源自動化工具,這里整理了相關(guān)資料,希望能幫助測試軟件的朋友,有需要的看下
    2016-09-09

最新評論

文山县| 化隆| 台山市| 曲麻莱县| 金川县| 女性| 汤阴县| 成都市| 沁水县| 泰州市| 若尔盖县| 朔州市| 乾安县| 开封市| 平顶山市| 河池市| 普兰店市| 尼勒克县| 金昌市| 兴仁县| 泌阳县| 天柱县| 绥宁县| 吴江市| 岚皋县| 恭城| 芦溪县| 海丰县| 道真| 惠州市| 佛坪县| 昌乐县| 临澧县| 洛隆县| 如东县| 福安市| 崇文区| 濉溪县| 都匀市| 大埔县| 嘉鱼县|