说明每一行代码 这是一个正常的hello world代码。
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key);
//这个小部件是应用程序的根目录。@override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: const MyHomePage(), ); } }
class MyHomePage extends StatefulWidget { const MyHomePage({ Key? key }) : super(key: key);
@override State<MyHomePage> createState() => _MyHomePageState(); }
class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Container( child: Text("Hello World"), ); } }
import 'package:flutter/material.dart';
这一行用来导入你将要在应用中使用的各种对象,比如按钮。换句话说,想想固定一个电气设备,第一步是准备所需的工具,如螺丝刀或锤子。所以这一行基本上是用来带来所有需要的对象,你会用来创建一个应用程序。
void main() => runApp(MyApp());
这是应用程序的起点,当你按下播放按钮在你的调试器或在你的手机上运行应用程序,编译器会试图找到这条线主要()和阅读如何处理这个程序,在这种情况下,主要功能告诉编译器运行应用程序(runApp) (MyApp),换句话说MyApp类是用户看到的第一件事,虽然主要是首先编译器查找。
class MyApp extends StatelessWidget {
这是我们之前调用的MyApp, MyApp是什么?MyApp是一个类,或者我们可以作为蓝图调用它会包含我们需要在app中显示的东西,这个类是什么?这是一个StatlessWidget。换句话说,MyApp类是StatlessWidget(在material.dart中定义)的副本。
const MyApp({Key? key}) : super(key: key);
这是我们类的初始化器,在这里它告诉当它被调用时它接受什么,这是一个可选的行,你不必指定类的属性键。花括号表示可选参数。这一行可以删除而不产生任何影响。
@override Widget build(BuildContext context)
{
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData( primarySwatch: Colors.blue, ),
home: const MyHomePage(), );
}
}
就像我们之前说的,我们是从material中复制一个预定义的类。部件,它是"无状态部件"。它有自己的build功能,它会显示保存在那里的东西,但这里需要显示我们的app,因此我们重写那个功能来自定义它。这里我们告诉构建一个materialApp,它有以下参数:标题、主题和主页。素材应用程序是你必须在主类中识别的第一件事,因为它负责在屏幕上看到什么并管理应用程序。
- Title:设备任务管理器中显示的标题。
- 主题:它告诉应用程序有一个蓝色的原色。
- home:主页。
class MyHomePage extends StatefulWidget {
const MyHomePage({ Key? key }) : super(key: key);
@override State<MyHomePage> createState() => _MyHomePageState(); }
class _MyHomePageState extends State<MyHomePage> {
@override Widget build(BuildContext context) {
return Container(
child: Text("Hello World"),
);
} }
与前面的类相同,除了它是一个statfulwidget,这意味着这个屏幕可以改变,换句话说,它可以处理变量,同时Statless Widget不能处理变量,它只构建一次,这里我们使用我们材料中的容器。这个容器有一个子文件Text.
这是代码的总结,你可以看看AppBrewery的Flutter Course,它详细解释了这一点。
祝你一路顺风。