您好,登錄后才能下訂單哦!
這篇“Flutter怎么實現滾動選擇數字”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Flutter怎么實現滾動選擇數字”文章吧。
類似這樣的:
確定了樣式就開始寫吧。關于Dialog的選擇,我用的是SimpleDialog,有對細節上有要求的可以自己自定義一個。
showDialog( context: context, barrierDismissible: true, builder: (ctx){ return SimpleDialog( title: Text('頁碼選擇'), contentPadding: EdgeInsets.zero, children: [ PageChoose(changeBookIdCallBack: (pageNum2){ setState(() { pageNum = pageNum2; }); }), Divider(height: 1,), FlatButton( child: Text('取消'), onPressed: () { Navigator.of(context).pop(); }, ), Divider(height: 1,), FlatButton( child: Text('確認'), onPressed: () { })); }, ), ], ); } );
我將contentPadding設置為零,看著舒服點。目前已經完成一部分了,還差中間的滾動選擇數字。
新建文件,創建一個StatelessWidget組件,這里不需要用到StatefulWidget,用不到setState。滾動數字我首先想到的是PageView組件,將它的scrollDirection變為Axis.vertical,就可以實現上下的滑動,這里我需要預覽當前前后兩個數字,在設置PageController的時候就需要給viewportFraction值,這里我給了0.3,具體看你給組件的寬高。
class PageChoose extends StatelessWidget { PageChoose({this.changeBookIdCallBack}); final ValueChanged<int> changeBookIdCallBack; final PageController pagecontroller = new PageController(viewportFraction: 0.3,initialPage: 1); @override Widget build(BuildContext context) { return Center( child: Container( alignment: Alignment.center, height: 150, width: 60, child: Stack( children: [ Center( child: Container( height: 50, decoration: BoxDecoration( border: Border(top: BorderSide(width: 0.5),bottom: BorderSide(width: 0.5)) ), ), ), PageView.builder( itemCount: 50, controller: pagecontroller, scrollDirection: Axis.vertical, pageSnapping: true, physics: AlwaysScrollableScrollPhysics(), itemBuilder: (ctx ,index ){ return Center(child: Text('$index',style: TextStyle(fontSize: 20),)); }, onPageChanged: (int index) { changeBookIdCallBack(index); }, ), ], ), ), ); } }
以上就是關于“Flutter怎么實現滾動選擇數字”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。