Flutter?GridView顯示隨機單詞效果
本文實例為大家分享了Flutter GridView顯示隨機單詞的具體代碼,供大家參考,具體內(nèi)容如下
一.Flutter GridView屬性及構(gòu)建方法介紹
1.SliverGridDelegateWithFixedCrossAxisCount構(gòu)建固定數(shù)量的Widget
gridDelegate = SliverGridDelegateWithFixedCrossAxisCount( ? ? ? ? ?crossAxisCount: crossAxisCount, //設(shè)置每行個數(shù) ? ? ? ? ?mainAxisSpacing: mainAxisSpacing, //設(shè)置上下間隙 ? ? ? ? ?crossAxisSpacing: crossAxisSpacing, //設(shè)置水平間隙 ? ? ? ? ?childAspectRatio: childAspectRatio, //來設(shè)置寬高比例 ? ? ? ?),
1).GridView.custom構(gòu)建
GridView.custom( ? ? ? ? ? gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( ? ? ? ? ? ? crossAxisCount: 2, mainAxisSpacing: 10.0, crossAxisSpacing: 20.0, ), ? ? ? ? ? childrenDelegate: SliverChildBuilderDelegate((context, position) { ? ? ? ? ? ? return getItemContainer(datas[position].asPascalCase); ? ? ? ? ? }, childCount: datas.length))
2).GridView.builder構(gòu)建
GridView.builder( ? ? ? ? ? itemCount: datas.length, ? ? ? ? ? gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( ? ? ? ? ? ? ? crossAxisCount: 2, ? ? ? ? ? ? ? mainAxisSpacing: 20.0, ? ? ? ? ? ? ? crossAxisSpacing: 10.0, ? ? ? ? ? ? ? childAspectRatio: 1.0), ? ? ? ? ? ? ? itemBuilder: (BuildContext context, int index) { ? ? ? ? ? ? ? ? return getItemContainer(datas[index]); ? ? ? ? ? }),
2. GridView.count屬性及構(gòu)建
GridView.count({ ? ? Key? key, ? ? Axis scrollDirection = Axis.vertical, //設(shè)置滾動方向 ? ? bool reverse = false, ? ? ScrollController? controller, ? ? bool? primary, ? ? ScrollPhysics? physics, ? ? bool shrinkWrap = false, ? ? EdgeInsetsGeometry? padding, ? ? required int crossAxisCount, //設(shè)置每行個數(shù) ? ? double mainAxisSpacing = 0.0,//設(shè)置上下間隙 ? ? double crossAxisSpacing = 0.0, //設(shè)置水平間隙 ? ? double childAspectRatio = 1.0, //來設(shè)置寬高比例 ? ? bool addAutomaticKeepAlives = true, ? ? bool addRepaintBoundaries = true, ? ? bool addSemanticIndexes = true, ? ? double? cacheExtent, ? ? List<Widget> children = const <Widget>[], ? ? int? semanticChildCount, ? ? DragStartBehavior dragStartBehavior = DragStartBehavior.start, ? ? ScrollViewKeyboardDismissBehavior keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, ? ? String? restorationId, ? ? Clip clipBehavior = Clip.hardEdge, ? })
GridView.count( ? ? ? ? crossAxisSpacing: 10.0,//水平子Widget之間間距 ? ? ? ? mainAxisSpacing: 20.0,//垂直子Widget之間間距 ? ? ? ? padding: const EdgeInsets.all(10.0),//GridView內(nèi)邊距 ? ? ? ? crossAxisCount: 2,//行的Widget數(shù)量 ? ? ? ? childAspectRatio: 2.0,//子Widget寬高比例 ? ? ? ? children: getWidgetList()//子Widget列表 ? ? ? ),
二.demo展示
import 'package:english_words/english_words.dart'; import 'package:flutter/material.dart'; ? class GridViewPage extends StatefulWidget{ ? const GridViewPage({Key? key}) : super(key: key); ? ? @override ? State<StatefulWidget> createState()=>GridViewPageStae(); ? } ? class GridViewPageStae extends State<GridViewPage>{ ? @override ? Widget build(BuildContext context) { ? ? //final _suggestions=<WordPair>[]; ? ? List<WordPair> datas =generateWordPairs().take(100).toList(); ? ? return Scaffold( ? ? ? appBar: AppBar( ? ? ? ? title: Text('Gridview test'), ? ? ? ), ? ? ? body:/*GridView.custom( ? ? ? ? ? gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( ? ? ? ? ? ? crossAxisCount: 2, mainAxisSpacing: 10.0, crossAxisSpacing: 20.0, ), ? ? ? ? ? childrenDelegate: SliverChildBuilderDelegate((context, position) { ? ? ? ? ? ? return getItemContainer(datas[position].asPascalCase); ? ? ? ? ? }, childCount: datas.length))*/ ? ? ?/* GridView.count( ? ? ? ? crossAxisSpacing: 10.0,//水平子Widget之間間距 ? ? ? ? mainAxisSpacing: 20.0,//垂直子Widget之間間距 ? ? ? ? padding: const EdgeInsets.all(10.0),//GridView內(nèi)邊距 ? ? ? ? crossAxisCount: 2,//行的Widget數(shù)量 ? ? ? ? childAspectRatio: 2.0,//子Widget寬高比例 ? ? ? ? children: getWidgetList()//子Widget列表 ? ? ? ),*/ ? ? ? GridView.builder( ? ? ? ? ? itemCount: datas.length, ? ? ? ? ? gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( ? ? ? ? ? ? ? crossAxisCount: 2, ? ? ? ? ? ? ? mainAxisSpacing: 20.0, ? ? ? ? ? ? ? crossAxisSpacing: 10.0, ? ? ? ? ? ? ? childAspectRatio: 1.0), ? ? ? ? ? ? ? itemBuilder: (BuildContext context, int index) { ? ? ? ? ? ? ? ? return getItemContainer(datas[index]); ? ? ? ? ? }), ? ? ); ? ? } ? ? List<WordPair> getDataList() { ? ? List<WordPair> datas =generateWordPairs().take(100).toList(); ? ? return datas; ? } ? ? List<Widget> getWidgetList() { ? ? return getDataList().map((item) => getItemContainer(item)).toList(); ? } ? ? Widget getItemContainer(WordPair item) { ? ? return Container( ? ? ? alignment: Alignment.center, ? ? ? //width: 50.0, ? ? ? //height: 50.0, ? ? ? child: Text( ? ? ? ? item.asPascalCase, ? ? ? ? style: const TextStyle(color: Colors.white, fontSize: 18), ? ? ? ), ? ? ? color: Colors.lightGreen, ? ? ); ? } ? }
三.實際效果
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
淺談Android Activity與Service的交互方式
下面小編就為大家?guī)硪黄獪\談Android Activity與Service的交互方式。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09Android自定義狀態(tài)欄顏色與應(yīng)用標題欄顏色一致
看IOS上的應(yīng)用,應(yīng)用中狀態(tài)欄的顏色總能與應(yīng)用標題欄顏色保持一致,用戶體驗很不錯,對于這種效果怎么實現(xiàn)的呢?下面小編給大家分享android自定義狀態(tài)欄顏色與應(yīng)用標題欄顏色一致的實現(xiàn)方法,一起看看吧2016-09-09Android中用onSaveInstanceState保存Fragment狀態(tài)的方法
這篇文章主要介紹了Android中用onSaveInstanceState保存Fragment狀態(tài)的方法,onSaveInstanceState可以將數(shù)據(jù)保存在Fragment或Activity中,需要的朋友可以參考下2016-04-04談?wù)凙ndroid開發(fā)之RecyclerView的使用全解
這篇文章主要介紹了談?wù)凙ndroid開發(fā)之RecyclerView的使用全解,非常具有實用價值,需要的朋友可以參考下。2016-12-12Android自定義View實現(xiàn)柱狀波形圖的繪制
柱狀波形圖是一種常見的圖形。一個個柱子按順序排列,構(gòu)成一個波形圖。本文將利用Android自定義View實現(xiàn)柱狀波形圖的繪制,需要的可以參考一下2022-08-08Kotlin協(xié)程開發(fā)之Flow的融合與Channel容量及溢出策略介紹
這篇文章主要介紹了Kotlin協(xié)程:Flow的融合、Channel容量、溢出策略,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-09-09