首页 > 其他分享 >Flutter自编教程

Flutter自编教程

时间:2024-07-01 16:34:13浏览次数:7  
标签:教程 const MyHomePageState title 自编 widget build MyHomePage Flutter

Flutter的核心设计思想便是“一切皆Widget”

1、应用入口main函数,runApp功能是启动Flutter应用,它接受一个 Widget参数

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

2、MyApp

继承了 StatelessWidget类,可以看出应用本身也是一个widget。widget我的理解是,有点类型安卓的view/viewgroup。安卓调用draw方法绘制布局,flutter调用widget的build方法绘制布局。
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      //应用名称
      title: '饮食记录',
      theme: ThemeData(
        //应用主题:紫色
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      //应用首页
      home: const MyHomePage(title: '饮食记录'),
    );
  }
}

  3.

首页MyHomePage
继承自StatefulWidget类,表示它是一个有状态的组件。可以简单理解为StatefulWidget【有状态】可以变化内容,而StatelessWidget【无状态】不可以变化内容。
class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
       .......
}

  

Stateful widget 【有状态】可以拥有状态,这些状态在 widget 生命周期中是可以变的,而 Stateless widget 是不可变的。
Stateful widget【有状态】 至少由两个类组成:

  1. 一个StatefulWidget类。
  2. 一个 State类; StatefulWidget类本身是不变的,但是State类中持有的状态在 widget 生命周期中可能会发生变化。
    _MyHomePageState类是MyHomePage类对应的状态类。看到这里,读者可能已经发现:和MyApp 类不同, MyHomePage类中并没有build方法,取而代之的是,build方法被挪到了_MyHomePageState方法中
_MyHomePageState
有一个需要变化的_counter变量,通过setState进行内容的变化,其实类似于livedata中,如果需要改变值,用livedata的setvalue。这里是setState。调用setState会通知 Flutter 框架,有状态发生了改变,Flutter 框架收到通知后,会执行 build 方法来根据新的状态重新构建界面(有点类似调用invalid重新调用draw绘制页面)。
class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
     //具体代码稍后再贴,是个UI界面
  }
}

  

上面build方法,构建UI界面
下面就是5中稍后再贴的代码啦。Scaffold是Material 库中提供的页面脚手架,它提供了默认的导航栏、标题和包含主屏幕 widget 树(后同“组件树”或“部件树”)的body属性,组件树可以很复杂。
简单理解就是Scaffold是官方提供的一个自定义 viewGroup,这个viewGroup中有导航栏、标题等一些布局,可以通过方法更改布局样式。大家按着command键,就可以进入相应的源码进行查看哦。
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(//设置appbar样式
        backgroundColor: Theme
            .of(context)
            .colorScheme
            .inversePrimary,
          title: Text(widget.title),
      ),
      body: Center( //center用于居中
        child: Column(//将其所有子组件沿屏幕垂直方向依次排列
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[//子view
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme
                  .of(context)
                  .textTheme
                  .headlineMedium,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }

  









标签:教程,const,MyHomePageState,title,自编,widget,build,MyHomePage,Flutter
From: https://www.cnblogs.com/xiongwei/p/18278323

相关文章

  • 虚拟机安装麒麟Linux系统教程
    一、在windows11系统安装VirtualBox7.0.2控件B站详细视频讲解,跟踪视频步骤走即可(巨好用!)https://www.bilibili.com/video/BV1g8411Y75r/?spm_id_from=333.788.top_right_bar_window_custom_collection.content.click&vd_source=66c4e874516254978f3730ca1f92a213二、安装好虚拟......
  • 一看就会的Eurekar入门案例教程
    Eureka是一个基于SpringBoot的服务注册中心,用于管理和发现微服务。下面是一个Eureka入门案例教程,涵盖了基本的概念、安装和使用Eureka。Step1:安装Eureka首先,您需要安装Eureka。可以使用Maven或Gradle安装Eureka。使用Maven安装:<dependency><groupI......
  • 超详细的 Stable Diffusion Webui入门教程
    一、前言使用过Midjourney的小伙伴经常会问:怎么精准控制Midjourney的图片,或者如何更换图片中局部内容(比如:不改变主题的情况下,更换背景)等等,问题也着实不少。确实,使用Midjourney进行图像生成时,它的随机性较高,往往需要多次尝试才能达到理想的效果。不过,这并不是问题。......
  • Stable Diffusion 全网最详细超写实人像制作教程(附模型)
    哈喽,小伙伴们!今天小编要给大家安利一个超级无敌厉害的神器,保证让你的AI生成图片瞬间变得超级写实!还记得我们用StableDiffusion生成的那些一眼就能看出是AI画的图吗?皮肤光滑得跟抹了层蜡似的,看着就不自然。但是今天给大家介绍的这个皮肤质感调节神器,绝对能让你的作品更上一......
  • K8S学习教程(一):使用PetaExpress云服务器安装Minikube 集群
    什么是MinikubeMinikube是一款工具,主要用于在本地运行Kubernetes集群。Kubernetes开源的平台,用于自动化容器化应用的部署、扩展和管理,而Minikube使得开发人员能够在本地机器上轻松创建一个单节点的Kubernetes集群,从而方便开发、测试和学习Kubernetes。我们看下......
  • flutter3
    import'package:flutter/material.dart';voidmain(){runApp(constGoWaterMyApp());}classGoWaterMyAppextendsStatelessWidget{constGoWaterMyApp({super.key});@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(......
  • AI绘画 Stable Diffusion【提示词生成人物肖像】:多角度人物肖像图制作教程
    大家好,我是设计师阿威今天给大家分享下如何用AI绘画StableDiffusion制作多角度人物肖像图片这里给大家准备了一套多角度人物肖像的提示词:[Characterdescription]portrayedinvariousfacialexpressionsandposesfromdifferentanglesofher/hishead,frontto......
  • 餐厅在线点餐小程序源码系统可外卖配送 带完整的安装代码包以及搭建部署教程
    系统概述在当今数字化时代,餐厅在线点餐小程序已成为餐饮行业的重要工具。它不仅为消费者提供了便捷的点餐体验,也为餐厅提高了运营效率和服务质量。小编给大家分享一款餐厅在线点餐小程序源码系统,该系统不仅支持在线点餐,还具备外卖配送功能,同时提供完整的安装代码包以及搭建部......
  • 文字游侠:AI模型一键生成爆款文章,让你效率提高20倍!附渠道和小白教程!
    自去年起,人工智能(AI)的话题热度急剧上升,各种AI工具如雨后春笋般涌现,为我们的日常生活和工作带来了极大的便利。近期,小编发现了一款名为“文字游侠”的AI文章生成工具,它极大地提高了自媒体文章创作的效率,甚至可达20倍之多。【工具模型简介】:“文字游侠”头条神器,是一款集全自......
  • 适合任何行业在线DIY预约报名小程序源码系统 带完整的安装代码包以及搭建教程
    系统概述在当今数字化时代,便捷高效的预约报名系统成为了许多行业的迫切需求。“适合任何行业在线DIY预约报名小程序源码系统”便是一款为满足这一需求而设计开发的创新解决方案。这款源码系统是基于先进的技术架构,旨在为各类企业和组织提供一个强大、灵活且易于使用的在线......