IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 2021-07-16 -> 正文阅读

[移动开发]2021-07-16

flutter页面入门项目

一 flutter特点与核心概念

1.1 一切皆为组件

组件( Widget )是 Flutter 应用程序用户界面的基本构建块 。 不仅按钮、输入框、卡片、
列表这些内容可作为 Widget ,甚至将布局方式、动画处理都视为 Widget 。 所以 Flutter 具有一致的统一对象模型: Widget 。

1.2 Widget 可以定义为 :

一个界面组件(如按钮或输入框) 。
一个文本样式(如字体或颜色) 。
一种布局(如填充或滚动) 。
一种动画处理(如缓动) 。
一种手势处理。
Widget 具有丰富的属 性及 方法 ,属性通常用来改变组件的状态(颜色、大小等)及回
调方法的处理(单击 事 件回调、手势 事件 回调 等) 。 方法主要是提供一 些组件的功能扩展 。
比如: TextBox 是一个矩形的文本组件,其属 性及方法如下:
bottom : 底部间距属性 。
directio n : 文本排列方向属性 。
left : 左侧间 距属性 。
right :右侧间距属性 。
top : 上部间距属性 。
toRect : 导出矩形方法 。
toString :转换成字符串方法 。

1.3构建 Widget

可以 重写 Widget 的 build 方法来构建一个组件,如下代码所示 :
@protected Widget build(BuildContext context);
build 即为创建一 个 Widget 的 意 思,返回值也是 一个 Widget 对象,不管 返回的 是单个
组件还是返回通过嵌套 的方式组合 的组件,都是 Widget 的实例 。

二 个人APP

2.1 listtitle在这里插入图片描述

1-1 新闻咨询
ListView 是 Flutter App 中使用非常多的滚动列表组件,页面大多数情况都是可滚动的,列表聚合图文场景下使用 ListView 的情况非常多。
ListView 除了本身这个 Widget 之外,一般会和 ListTile 配合使用,其中 ListTile 是使用非常多的子项 Widget
基本的结构就是:
|- ListView
|- ListTile
|- ListTile
|- ListTile

 ListTile(
  leading: Image.network(data[index]['shareImageUrl'],width: 100,height: 60,fit: BoxFit.fill,),
  title: Text(data[index]['title']),
  subtitle: Text(data[index]['heatValue'].toString() + " 热度"),
    onTap: () {
      var nav = Navigator.of(context)
          .push(MaterialPageRoute(builder: (BuildContext ctx) {
        var param =  data[index]["content"];
        // 页面跳转时传入参数
        return homepage_deatail(param);
      }));

      // 在Navigator的异步函数中获取返回值
      nav.then((val) => {print(val)});
    },

);

2.2 http网络请求(原生方式)

使用到的库:
库dart:io
库dart:convert
async 和 await 表示异步
pubspec.yaml 文件不需要修改
Dart 语言出来的时间比较晚,吸收了前辈语言们的经验,Java 的原生网络请求代码可是一大截,Dart 语言的简简单单的几行,非常现代化。
HttpClient httpClient = new HttpClient();
// 发起请求
HttpClientRequest request = await httpClient.getUrl(
Uri.parse(“http://api.qiuduoduo.cn/posts?t=rm”)
// 等待服务器返回数据
HttpClientResponse response = await request.close();

2.3 json解析

// 使用utf-8.decoder从response解析数据
var result = await response.transform(utf8.decoder).join();
var mydata = json.decode(result);
/取值/
posts = mydata[‘data’][‘posts’];

2.4 listview.builder

   child: ListView.builder(
            //列表数量
            itemCount: 50,
            //列表高度
            itemExtent: 50.0,
            //动态生成
            itemBuilder: (BuildContext context, int index){
              return _getListData(index);

            },
          )

这是我用list.builder自定义的列表,水平布局是一种常用的布局方式,我们主要使用 Row 组件来 完 成子组件在水平方向的排列 。 Row 组件常见属性如下所示 :
mainAxisAli gnment MainAxisAlignment 主轴 的 排列 方式 。
crossAxisAlignment CrossAxisAlignment 次轴的排列 方式 。
mainAxisSize MainAxisSize 主轴应该 占 据多少空 间 。 取值 max 为最大, min 为最小 。
ch ildren List 组件子元素, 它的本质是一个 List 列 表 。
在这里插入图片描述
1-2赛事

Column(children: <Widget>[Row(
    mainAxisSize: MainAxisSize.min,
    children: <Widget>[
      Text("00:00"),
      new Container(child: Text(data[index]["competitionShortName"]), margin: const EdgeInsets.all(5.0),),
      Text("已结束"),
      Text("专家", style: TextStyle(
        color: Colors.red, // 文字颜色

      ),
      ),

    ]
),
  new Row(

    // mainAxisAlignment: MainAxisAlignment.center,
    mainAxisSize: MainAxisSize.min,
    children: [
      Container(child: Text(data[index]["homeShortName"]),),
      Image.network(
          data[index]["homeLogo"], width: 32,
          height: 32)
      ,
      Align(alignment: Alignment.center,
          child: Container(
              child:Text(data[index]["homeScore"].toString()+"-"+data[index]["awayScore"].toString())))
      ,
      Image.network(
          data[index]["awayLogo"],
          width: 32, height: 32)
      ,
      Container(child: Text(data[index]["awayShortName"]),)

    ],),
  Container(
      decoration: BoxDecoration(
          border: Border(bottom: BorderSide(width: 1, color: Color(0xffe5e5e5)))
      )
  )

]

);

2.6 其它页面效果展示

在这里插入图片描述 1-3新闻咨询详情
在这里插入图片描述
1-4课堂教学
个人App gitee地址:https://gitee.com/faymong/flutter_app.git

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 12:03:47  更:2021-07-17 12:05:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 14:45:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码