Flutter GridView显示随机单词效果

本文实例为大家分享了Flutter GridView显示随机单词的具体代码,供大家参考,具体内容如下

一.Flutter GridView属性及构建方法介绍

1.SliverGridDelegateWithFixedCrossAxisCount构建固定数量的Widget

gridDelegate = SliverGridDelegateWithFixedCrossAxisCount(
         crossAxisCount: crossAxisCount, //设置每行个数
         mainAxisSpacing: mainAxisSpacing, //设置上下间隙
         crossAxisSpacing: crossAxisSpacing, //设置水平间隙
         childAspectRatio: childAspectRatio, //来设置宽高比例
       ),

1).GridView.custom构建

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构建

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属性及构建

GridView.count({
    Key? key,
    Axis scrollDirection = Axis.vertical, //设置滚动方向
    bool reverse = false,
    ScrollController? controller,
    bool? primary,
    ScrollPhysics? physics,
    bool shrinkWrap = false,
    EdgeInsetsGeometry? padding,
    required int crossAxisCount, //设置每行个数
    double mainAxisSpacing = 0.0,//设置上下间隙
    double crossAxisSpacing = 0.0, //设置水平间隙
    double childAspectRatio = 1.0, //来设置宽高比例
    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内边距
        crossAxisCount: 2,//行的Widget数量
        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内边距
        crossAxisCount: 2,//行的Widget数量
        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,
    );
  }
 
}

三.实际效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • GridView控件实现数据的显示和删除(第8节)

    本节的学习内容是新闻列表的实现,使用分页功能一个页面显示4条新闻.在新闻显示页面,添加一个字段"删除",运行时,单击该行的"删除按钮时",弹出"确认删除此信息?"的提示信息,当按确定按钮时删除该行的信息,按取消按钮时不执行删除操作. 首先我们先进行一个知识点归纳: 数据源控件:用于实现从不同数据源获取数据的功能,可以设置连接信息.查询信息.参数和行为,可以消除ASP.NET中要求的大量的重复性代码. 数据绑定控件:只负责管理与实际数据存储源的连接

  • Android GridView仿微信朋友圈显示图片

    最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样. 利用GridView再适合不过了,GridView可以动态加载图片的数量,而且还比较规律,下面说一下自己的思路: 1.获取网络图片 2.初始化gridview,自定义适配器 3.根据图片数量设置gridview的列数 4.更新适配器 下面贴上部分源码并给大家解析一下 一.首先是GridView的item <com.view.SquareLayout xmlns:android="http://schemas

  • Android中ScrollView嵌套GridView显示不全解决方法

    Android中ScrollView嵌套GridView显示不全解决方法 由于ScrollView和GridView这两款控件都自带滚动条,一起使用GridView会显示不全 解决方法:自定义gridview 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • gridview 显示图片的实例代码

    1.将图片以二进制存入数据库 2.读取二进制图片在页面显示 3.设置Image控件显示从数据库中读出的二进制图片 4.GridView中ImageField以URL方式显示图片 5.GridView显示读出的二进制图片 ==================== 1.将图片以二进制存入数据库 复制代码 代码如下: //保存图片到数据库 protected void Button1_Click(object sender, EventArgs e) { //图片路径 string strPath =

  • Flutter GridView显示随机单词效果

    本文实例为大家分享了Flutter GridView显示随机单词的具体代码,供大家参考,具体内容如下 一.Flutter GridView属性及构建方法介绍 1.SliverGridDelegateWithFixedCrossAxisCount构建固定数量的Widget gridDelegate = SliverGridDelegateWithFixedCrossAxisCount(          crossAxisCount: crossAxisCount, //设置每行个数      

  • Flutter实现抖音点赞效果

    效果图如下: 分析效果 1.整个控件可以点击,控件可以铺满屏幕,点赞效果在子部件之上. 2.可以实现单击 3.连击的情况下,呈现红心的动画效果,并且有红心叠加 4.动画的位置会随着手指的点击位置改变 思路 1.通过GestureDetector来监控手势,在手指抬起的时候记录时间毫秒值,手指再次按下时,通过获取到毫秒值与之前的时间毫秒值的差值,来判断是单击还是呈现红心动画效果. 2.使用Stack部件来确定视图层级,比如说如果要在视频视图上实现点赞效果的话,视频视图部件就作为子部件,置于下层.

  • Flutter 利用CustomScrollView实现滑动效果

    我们在之前的文章中//www.jb51.net/article/213709.htm 使用了 ListView 将几个 GridView 组合在一起实现滑动效果,今天利用CustomScrollView改造一下代码 CustomScrollView 简介 CustomScrollView的常用属性如下: slivers:最重要的属性,由多个SliverXX组件组成的数组,包括如 SliverList(对应 ListView),SliverGrid(对应 GridView)等,如果普通组件无法直接

  • Android使用GridView实现横向滚动效果

    本文实例为大家分享了Android使用GridView实现横向滚动效果的具体代码,供大家参考,具体内容如下 第一次做横向滑动,看了一些列子,基本就2总:HorizontalListView和GridView.考虑的了下选择用比较熟的GridView,并且在2种方案都使用过,根据本人实际情况,采用了更适合的GridView. 也希望看过这篇博客的大神们,能指点下HorizontalListView和GridView两个方案的优缺点. 思路: XML界面:用HorizontalScrollView

  • JavaGUI实现随机单词答题游戏

    本文实例为大家分享了JavaGUI实现随机单词答题游戏的具体代码,供大家参考,具体内容如下 案例描述:java-gui实现单词游戏,随机显示单词,键盘在文本框中输入想对应的单词,回答正确加5分,错误扣三分** 案例图片 回答正确 回答错误 重置答题 案例分析 1.定义三个面板存放各个组件JPanel 2.定义拆分窗格布局 3.创造三个文本域用来显示和输入 4.定义滚动窗格设置自动换行 5.定义"确定"重置""退出"按钮 6.给三个按钮添加事件处理 7.定义

  • Android Flutter实现图片滑动切换效果

    目录 前言 SlideTransition 介绍 示例效果实现 总结 前言 我们开始来介绍转换类的动画组件,实际上这类转换动画组件也可以自己通过 AnimatedBuilder 或 AnimatedWidget 完成, Flutter 为了简化开发,提供了不少转换动画组件,这类组件通常命名为 xxTransition.本篇要介绍的就是 SlideTransition,顾名思义,就知道是滑动转换动画.我们本篇来实现两张小姐姐图片的滑动切换,效果如下图所示. SlideTransition 介绍 S

  • jquery实现焦点图片随机切换效果的方法

    本文实例讲述了jquery实现焦点图片随机切换效果的方法.分享给大家供大家参考.具体如下: 1. 运行效果如下图所示: 2.完整实例代码点击此处本站下载. 3.完整代码如下: 复制代码 代码如下: <!DOCTYPE html> <html lang="en"> <head>     <meta charset="utf-8">     <title>Slides, A Slideshow Plugin f

  • Javascript仿新浪游戏频道鼠标悬停显示子菜单效果

    本文实例讲述了Javascript仿新浪游戏频道鼠标悬停显示子菜单效果,分享给大家供大家参考.具体如下: 这里演示使用JS实现的网页栏目分类菜单,从新浪游戏频道扣下来的,操作方式类似于滑动门的效果,鼠标无需点击,只需把鼠标放在一级主菜单上,就可显示出二级分类菜单,这弹出的这个二级菜单中,实际上又重新进行了分类,可以说整体上,这是一款支持三级分类的网站菜单,目前新浪游戏还在用的效果哦. 先来看运行效果截图: 在线演示地址如下: http://demo.jb51.net/js/2015/js-gam

  • Android开发仿QQ空间根据位置弹出PopupWindow显示更多操作效果

    我们打开QQ空间的时候有个箭头按钮点击之后弹出PopupWindow会根据位置的变化显示在箭头的上方还是下方,比普通的PopupWindow弹在屏幕中间显示好看的多. 先看QQ空间效果图: 这个要实现这个效果可以分几步进行 1.第一步自定义PopupWindow,实现如图的样式,这个继承PopupWindow自定义布局很容易实现 2.得到点击按钮的位置,根据位置是否在屏幕的中间的上方还是下方,将PopupWindow显示在控件的上方或者下方 3.适配问题,因为PopupWindow上面的操作列表

  • 用JavaScript显示随机图像或引用

    使用这一脚本的第一步是选择下面的文本中的代码,并将其复制到rand.js的文件夹.  复制代码 代码如下: var mess = new Array('code0','code1','code2'); var max = mess.length; var num = Math.floor((Math.random() * max)); document.writeln(mess[num]); 现在你需要更新这一代码,使其指定你需要的图像或引用.首先,你要按照需求重复代码code()行若干次,直到

随机推荐