背景知识:
为什么要初始化对象?一句话就是要做好准备!
-
设置初始状态:当一个对象被创建时,通常需要为其赋予一些初始值或状态,以便对象能够立即处于一种有效或预期的状态中。初始化操作通过构造函数(如Python中的
__init__
方法)完成,确保了对象的属性(成员变量)在对象生命期开始时就被赋予了合适的值。 -
保证对象的可用性:未初始化的对象可能会导致程序错误或异常,比如尝试访问一个空值或未定义的属性。通过初始化,可以避免这种类型的问题,使得对象在创建后即可安全地使用。
-
促进代码复用:初始化过程可以设计得足够通用,使得基于相同类的不同对象可以通过传递不同的参数来创建,这样就无需为每种可能的初始状态编写新的类或大量重复代码。
代码分析:
程序初始化
一切靠代码说话吧,如果一个函数只有一行,就不用打{},直接用=>,不知哪位神人叫这语法糖。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
)
)
);
}
}