当前位置: 首页 > news >正文

Flutter---默认程序(计数器)

实现效果

当点击右下角的加号按钮时,屏幕中间的数字会叠加,相当于计数器的功能。

整体架构

main.dart(入口层)-->MyApp(应用配置层)-->MyHomePage(页面层)-->_MyHomePageState(状态管理层)

页面绘制的逻辑

①main函数里面运行MyApp,

②MyApp创建Material设计环境,

③MaterialApp初始化首页,

④MyHomePage中的createState()创建_MyHomePageState实例

⑤_MyHomePageState中的build函数建造具体UI绘制到屏幕

构造函数

const MyHomePage({super.key, required this.title});//接收title参数,required表示强制必须传递该参数

计数器的实现

①用户点击按钮

②调用_incrementCounter()

③执行_count++

④触发setState重建UI

修改一些代码,来改变页面UI

修改配色方案

//把紫色变成蓝色
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),

效果图

修改成暗色模式,默认是亮色模式

//修改为暗色模式
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue,brightness: Brightness.dark),

效果图

修改全局字体的字号

在修改颜色的下面加
//colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),textTheme: TextTheme(  // 全局文字样式bodyMedium: TextStyle(fontSize: 20), // Flutter 3.x+),

效果图

修改按钮的位置

//centerTop:最上方的中间/centerFloat:最下方的中间
//endContained:右下角/endTop:右上角/startTop:左上角/startFloat:左下角
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, // 按钮的位置控制
//floatingActionButton: FloatingActionButton(

效果图

代码实例

main.dart

import 'package:flutter/material.dart'; //导入Material设计组件库void main() {runApp(const MyApp()); //应用入口
}class MyApp extends StatelessWidget { //应用根目录 (StatelessWidget不可变UI)const MyApp({super.key});//默认构造函数@overrideWidget build(BuildContext context) {return MaterialApp(title: 'Flutter Demo', //应用标题(显示在任务管理器)theme: ThemeData(   //全局主题配置//colorScheme:自动生成的配色方案,textTheme:预定义的文字样式colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),//完整配色方案(紫色)),//首页,应用的第一个页面home: const MyHomePage(title: 'Flutter Demo Home Page'),//构造MyHomePage传入标题);}
}class MyHomePage extends StatefulWidget { //主页(有状态),(StatefulWidget可变UI)//构造函数const MyHomePage({super.key, required this.title});//接收title参数,required表示强制必须传递该参数final String title; //存储通过构造函数传入的标题@overrideState<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> { //主页状态管理int _counter = 0;//计数器状态void _incrementCounter() {setState(() { //调用setState()触发UI更新_counter++; //状态变更});}@overrideWidget build(BuildContext context) {return Scaffold( //页面骨架appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: Text(widget.title),//使用传入的标题),body: Center(//居中布局child: Column( //垂直排列子组件mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[const Text('You have pushed the button this many times:'),Text('$_counter',//显示计数器值,数据绑定style: Theme.of(context).textTheme.headlineMedium,),],),),//centerTop:最上方的中间/centerFloat:最下方的中间
//endContained:右下角/endTop:右上角/startTop:左上角/startFloat:左下角
//floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, // 按钮的位置控制floatingActionButton: FloatingActionButton(onPressed: _incrementCounter, //点击回调,事件绑定tooltip: 'Increment', //长按提示child: const Icon(Icons.add), //“+”图标),);}
}

http://www.dtcms.com/a/483483.html

相关文章:

  • 网站建设网站管理网站推广推广
  • Java 23种设计模式的详细解析
  • k8s lease使用案例
  • 武威 网站建设更改网站标题
  • idea中设置快捷键风格
  • 百刀打造ChatGPT:nanochat极简LLM全栈实现深度解析
  • 建立网站该怎样做有没有免费制作视频的软件
  • IDEA自带的Maven安装位置
  • mui做浏览器网站跳转网站建设加盟培训
  • 互联网三网合一网站建设erp系统软件免费版
  • 英文互动网站建设最好最值得做的调查网站
  • 做网站创意微信域名防封跳转系统
  • k-匿名方法和差分隐私方法
  • 山东网站建设流程代码重构网站
  • 做狗狗网站的背景图wordpress正体中文
  • 网站设计怎么做才好看wordpress淘宝客建站教程视频
  • 哪个网站的旅游板块做的好东莞市网络seo推广哪家好
  • 深圳的网站设计郑州网站建设网站制作
  • 2、物理层
  • 深入理解AXI总线并实战
  • Qoder - The Agentic Coding Platform:让“提示词焦虑”成为过去式
  • 13.进程控制_2
  • 网站收录免费咨询wordpress 当前分类id
  • 选择TVS管的方法
  • 网站开发制作案例为什么百度搜索不到我的网站
  • 爬虫插件 js chrome插件 简单方案 优势在于不用做爬虫里面困难的解密 反爬之类的。针对小数据量的是可以的。
  • C2000芯片的lib库制作遇到问题记录
  • 重庆做网站哪家好joomla适合做什么网站
  • 网站建设运营知乎网站备案 价格
  • 从点云到模型,徕卡RTC360如何搞定铝单板测量?