Flutter循序渐进-StatelessWidget

背景知识:

为什么要初始化对象?一句话就是要做好准备!

  1. 设置初始状态:当一个对象被创建时,通常需要为其赋予一些初始值或状态,以便对象能够立即处于一种有效或预期的状态中。初始化操作通过构造函数(如Python中的__init__方法)完成,确保了对象的属性(成员变量)在对象生命期开始时就被赋予了合适的值。

  2. 保证对象的可用性未初始化的对象可能会导致程序错误或异常,比如尝试访问一个空值或未定义的属性。通过初始化,可以避免这种类型的问题,使得对象在创建后即可安全地使用。

  3. 促进代码复用:初始化过程可以设计得足够通用,使得基于相同类的不同对象可以通过传递不同的参数来创建,这样就无需为每种可能的初始状态编写新的类或大量重复代码。

代码分析:

程序初始化

一切靠代码说话吧,如果一个函数只有一行,就不用打{},直接用=>,不知哪位神人叫这语法糖。MyApp是个类,MyApp()就表示类实例化,啥意思?就是抽象的东西变成具体的了,比如人类变成具体一个人了,这和Python一样的,不过可以带参数。

void main() => runApp(MyApp('Hello Flutter'));

 MyApp(this.content);

这里的‘Hello Flutter’就相当于给Python类init里面的brand等参数赋值,python通过self将参数关联起来可以给类内部其它方法用,很多教程就是说那些高大上的语言,让人云里雾里的,不接地气。this就是self,参数要初始化,参数要和类关联起来,后面好用。

class Car:
2    def __init__(self, brand, model, year):
3        self.brand = brand
4        self.model = model
5        self.year = year

extends就理解为继承吧,MyApp类继承了StatelessWidget根组件
class MyApp extends StatelessWidget {
  常量有两个,Const就是运行前能定的,比如外观,final是运行才能定的,比如当前系统时间。指明类型为String,Python的优势,不用声明类型。声明一个final类型的变量content来存储传入的文字信息'Hello Flutter',好比类的参数。
  final String content;
构造函数,用于初始化content,跟Python __init__类似, MyApp(this.content);

程序构建材料

@override 覆盖默认的
Widget build (BuildContext context) {
  // 必须重写build方法,它返回Widget用于构建用户界面

  //使用MaterialApp作为应用的根Widget,设置应用的基本信息和主题。
  return MaterialApp(// 返回一个MaterialApp Widget,它是Flutter应用的常见起点
    debugShowCheckedModeBanner: false,// 隐藏调试模式的横幅,藏起来那个让人不爽的debug。
    title: '我的Flutter学习第一天',// 应用的标题
    theme: ThemeData(
      primarySwatch: Colors.blue,
    ),
    //通过Scaffold创建应用的基本布局,并在其中使用Center Widget居中显示一个Text Widget。
    home: Scaffold(// 设置应用的主页为Scaffold(脚手架),它提供了常见的应用结构
      body: Center(// 在Scaffold的body中放置一个Center Widget,用于居中显示子Widget
        child: Text(content),// 在Center中放入一个Text Widget,显示之前传入的content

Flutter就是用的俄罗斯套娃结构,一个套一个,这就是括号语言的强项!

代码

import 'package:flutter/material.dart';

//一切靠代码说话吧,如果一个函数只有一行,就不用打{},直接用=>,不知哪位神人叫这语法糖。
//MyApp是个类,MyApp()就表示类实例化,这和Python一样的,不过可以带字符串。
void main() => runApp(MyApp('Hello Flutter'));

//Dart里语句间用;分开,一个特性比如MaterialApp里用,分开
//这里有个很重要的概念StatelessWidget,记住写死的就像,状态改变不了,就是无状态
//extends就理解为继承吧,MyApp类继承了StatelessWidget根组件
class MyApp extends StatelessWidget {
  //常量有两个,Const就是运行前能定的,final是运行才能定的,比如当前系统时间
  //指明类型为String,Python的优势,不用声明类型
  // 声明一个final类型的变量content来存储传入的文字信息'Hello Flutter',好比类的参数。
  final String content;
  // 构造函数,用于初始化content,跟Python __init__类似, this就是self,参数要初始化,参数要和类关联起来,后面好用。
  MyApp(this.content);

  @override
  Widget build (BuildContext context) {
    // 必须重写build方法,它返回Widget用于构建UI

    //使用MaterialApp作为应用的根Widget,设置应用的基本信息和主题。
    return MaterialApp(// 返回一个MaterialApp Widget,它是Flutter应用的常见起点
      debugShowCheckedModeBanner: false,// 隐藏调试模式的横幅
      title: '我的Flutter学习第一天',// 应用的标题
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      //通过Scaffold创建应用的基本布局,并在其中使用Center Widget居中显示一个Text Widget。
      home: Scaffold(// 设置应用的主页为Scaffold(脚手架),它提供了常见的应用结构
        body: Center(// 在Scaffold的body中放置一个Center Widget,用于居中显示子Widget
          child: Text(content),// 在Center中放入一个Text Widget,显示之前传入的content
        )
      )
    );
  }
}

运行效果:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值