【flutter学习】基础知识(一)

今天开始学习一下flutter

学习思路:首先由一个简单的例子引出每次学习的对象,一点一点加入元素,针对于代码去了解学习详细知识。
看完本篇博客能够快速的读懂flutter简单代码。

flutter Hello Word

这是一个简单的Hello Word

首先引入了material库material是什么,是一个拥有基本样式的库。

runApp(runApp是什么)是程序的开始,这个函数需要一个Widget(Widget是什么),习惯叫他组件

这里传入了一个嵌套的Widget,Center() 是一个居中的widget,Text() 是一个文本的widget,style顾名思义样式

import 'package:flutter/material.dart';

void main() {
  runApp(Center(
    child: Text(
      "Hello World",
      style: TextStyle(fontSize: 36),
    ),
  ));
}

添加脚手架

我们加入引入的 material,最外层用MaterialApp()
home是该应用启动时显示的页面,随后使用了Scaffold(什么是Scaffold),传入的Scaffold座位启动时显示的widget

import 'package:flutter/material.dart';

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(
        title: Text("flutter"),
      ),
      body: Center(
        child: Text(
          "Hello World",
          style: TextStyle(fontSize: 36),
        ),
      ),
    ),
  ));
}

案例

首先需要了解什么是StatelessWidget和StatefulWidget,从名字上看,都是widget的实现(了解即可)

  • StatelessWidget: 没有状态改变的Widget,通常这种Widget仅仅是做一些展示工作而已;
  • StatefulWidget: 需要保存状态,并且可能出现状态改变的Widget;

以下这个例子,把各个部分拆开。main函数独立成MyApp两部分,HomeContent是我们页面展示的内容。

build函数,flutter会把build函数中的widget进行渲染。

开始写自己的widget

目标样子,由主标题,副标题和图片组成。


class ProductItem extends StatelessWidget {
  final String title;
  final String desc;
  final String imageURL;
  // 构造方法
  ProductItem(this.title, this.desc, this.imageURL);

  @override
  Widget build(BuildContext context) {
    return Container(
      // 整理的边距
      padding: EdgeInsets.all(20),
      // 周围线
      decoration: BoxDecoration(border: Border.all()),
      child: Column(
        children: <Widget>[
          Text(title, style: TextStyle(fontSize: 24)),
          Text(desc, style: TextStyle(fontSize: 18)),
          // 副标题与图片间距
          SizedBox(height: 10),
          Image.network(imageURL)
        ],
      ),
    );
  }
}

组装在一起

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(primaryColor: Colors.blueAccent),
      home: Scaffold(
        appBar: AppBar(
          title: Text("flutter"),
        ),
        body: HomeContent(),
      ),
    );
  }
}
// 以上只是把代码分开
// 以下是页面的内容
class HomeContent extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: ListView(
        children: <Widget>[
          ProductItem("Apple1", "Macbook Product1",
              "https://tva1.sinaimg.cn/large/006y8mN6gy1g72j6nk1d4j30u00k0n0j.jpg"),
          ProductItem("Apple2", "Macbook Product2",
              "https://tva1.sinaimg.cn/large/006y8mN6gy1g72imm9u5zj30u00k0adf.jpg"),
          ProductItem("Apple3", "Macbook Product3",
              "https://tva1.sinaimg.cn/large/006y8mN6gy1g72imqlouhj30u00k00v0.jpg"),
        ],
      ),
    );
  }
}

class ProductItem extends StatelessWidget {
  final String title;
  final String desc;
  final String imageURL;

  ProductItem(this.title, this.desc, this.imageURL);

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.all(20),
      decoration: BoxDecoration(border: Border.all()),
      child: Column(
        children: <Widget>[
          Text(title, style: TextStyle(fontSize: 24)),
          Text(desc, style: TextStyle(fontSize: 18)),
          SizedBox(
            height: 10,
          ),
          Image.network(imageURL)
        ],
      ),
    );
  }
}

解释

什么是runApp

Flutter应用程序是从调用这个函数开始的

什么是Widget

它就好像Vue中的组件,在Flutter中,万物皆Widget。

什么是Material

material是Google公司推行的一套设计风格,是一套规范。例如过场动画的样子已经定义了。
这里引用的material库,是已经实现了Material的Widget。

什么是Scaffold

翻译过来是脚手架的意思,他有appBar,body等属性,代表着导航栏跟页面内容

引用

原文地址:https://www.cnblogs.com/somliy/p/12258092.html

时间: 2024-10-03 20:48:13

【flutter学习】基础知识(一)的相关文章

(八)从零开始学人工智能--统计学习:统计学习基础知识

目录 统计学习基础知识 1. 统计学习种类 1.1 监督学习 1.2 非监督学习 2. 统计学习中的基本概念 2.1 统计学习三要素:模型,策略,算法 2.2 欠拟合和过拟合 2.3 如何避免过拟合 2.4 过拟合产生的原因 2.5 最大似然估计和贝叶斯估计 3. 线性回归 3.1 经典线性回归 3.2 岭回归(ridge regression) 3.3 lasso回归和ElasticNet 4. 线性分类 4.1 感知机 4.2 逻辑回归(logistic regression) 4.3 So

基于Linux的USB子系统学习 --- &lt;基础知识与USB协议概述&gt; ing

一.参考资料 1.<USB基础知识概论>  http://www.crifan.com/files/doc/docbook/usb_basic/release/html/usb_basic.html 2.<USB in a NutShell> http://www.beyondlogic.org/usbnutshell/usb1.shtml 3.<USB开发大全(第四版)> http://download.csdn.net/download/qqqq419276485/

IOS科研IOS开发笔记学习基础知识

这篇文章是我的IOS学习笔记,他们是知识的基础,在这里,根据记录的查询后的条款. 1,UIScrollView能完毕滚动的功能. 示比例如以下: UIScrollView *tableScrollView; tableScrollView=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];//窗体大小 tableScrollView.contentSize=CGSizeMake(640, 480);//设置内容视图的大

java学习--基础知识第四天-- Random、数组

今日内容介绍 u Random u 数组 第1章 Random 1.1 产生整数随机数 1.1.1 Random的使用步骤 我们想产生1~100(包含1和100)的随机数该怎么办呢? 我们不需要自己去写算法,因为Java已经为我们提供好了产生随机数的类---Random: 作用: – 用于产生一个随机数 ? 使用步骤(和Scanner类似) – 导包 ? import java.util.Random; – 创建对象 ? Random r = new Random(); – 获取随机数 ? in

java学习--基础知识进阶第二天--继承、匿名对象&amp;final、抽象类

今日内容介绍 u 继承 u 抽象类 第1章 继承 1.1 继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系. 1.2 继承的格式&使用  在程序中,如果想声明一个类继承另一个类,需要使用extends关键字. 格式: class 子类 extends 父类 {} 1.2.1 案例代码一: package com.itheima_01; /* * 继承:多个类有共同的成员变量和成员方法,抽取到另外一个类

java学习--基础知识进阶第三天--接口、多态

今日内容介绍 u 接口 u 多态 第1章 接口 1.1 接口的概述 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的"类". 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成.这样将功能的定义与实现分离,优化了程序设计. 1.2 接口的格式&使用 1.2.1 接口的格式 与定义类的class不同,接口定义时需要使用interface关键字. 定义接口所在的仍为.java文件,虽然声明时使用的为interface关键字

java学习--基础知识阶段性总结--基础面试题

1. 静态变量和实例变量的区别 局部变量不能用静态的,如果用了静态的,则不会从静态区消失 * 静态变量也叫类变量  成员变量也叫对象变量 * A:所属不同 * 静态变量属于类,所以也称为为类变量 * 成员变量属于对象,所以也称为实例变量(对象变量) * B:内存中位置不同 * 静态变量存储于方法区的静态区 * 成员变量存储于堆内存 * C:内存出现时间不同 * 静态变量随着类的加载而加载,随着类的消失而消失 * 成员变量随着对象的创建而存在,随着对象的消失而消失 * D:调用不同 * 静态变量可

mysql 学习基础知识汇总

DBMS模型: 层次模型 网状模型 关系模型 以文件来存取数据的困难:数据冗余和不一致性,数据访问困难,数据孤立,数据完整性问题,原子性问题,并发访问问题,安全性问题 XML(扩展标机语言) 关系模型: 关系模型 E-R实体-关系模型 对象模型 半结构化数据模型 文件:对于文件来说可以从三个层次来分析 1.表示层 文件 2.逻辑层 文件系统:存储引擎 3.物理层 元数据 数据块 E-R图的表示方法 实体:  矩形表示 属性:   椭圆表示 联系:   菱形表示 各实体间的对应关心:1:1    

JavaScript学习----基础知识

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>JavaScript Study Basi

mongo学习-基础知识

文档文档就是键值对的一个有序集.每种编程语言表示文档的方法不太一样,但大多数编程语言都有一些想通的数据结构,比如映射.散列.字典.MongoDB不但区分类型,而且区分大小写.例:下面两个文档是不同的{"foo":3}{"foo":"3"} 下面两个文档是不同的{"foo":3}{"Foo":3} MongoDB的文档不能有重复的键.文档中的键/值对是有序的:{"x":1,"y&