Flutter登录界面使用主题

Now, let’s use the theme we initially created in our main function for a simple login screen:

现在,让我们使用最初在主函数中创建的主题来制作一个简单的登录屏幕:

Create a Login Screen Widget: Inside the main.dartfile, create a new widget named LoginScreen thatextends StatelessWidget.

创建登录屏幕小部件: 在main.dart文件中,创建一个名为LoginScreen的新部件,它是StatelessWidget的扩展。

Import Required Libraries: Import the necessaryFlutter libraries at the top of your Dart file:

导入所需库: 在 Dart 文件顶部导入必要的 Flutter 库:

import ‘package:flutter/material.dart’;

Define the LoginScreen Widget: Design your login screen using the defined theme. You can use various widgets like TextField, ElevatedButton, and Text to build your UI. Apply the theme’s attributes to achieve a consistent style. The final source should look like this:

定义登录屏幕小工具: 使用定义的主题设计登录界面。您可以使用 TextField、ElevatedButton 和 Text 等各种部件来构建用户界面。应用主题属性以实现一致的风格。最终的源文件应该是这样的

import "package:flutter/material.dart";void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});Widget build(BuildContext context) {return MaterialApp(title: "用户登录",theme: ThemeData(brightness: Brightness.dark,primaryColor: Colors.lightBlue[800],fontFamily: "Georgia",textTheme: const TextTheme(displayLarge: TextStyle(fontSize: 70, fontWeight: FontWeight.bold),titleLarge: TextStyle(fontSize: 34, fontStyle: FontStyle.italic),bodyMedium: TextStyle(fontSize: 12, fontFamily: "Roboto"),),),home: const LoginScreen(),);}
}class LoginScreen extends StatelessWidget {const LoginScreen({super.key});Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text("用户登录"),),body: Center(child: Padding(padding: const EdgeInsets.all(16),child: Column(mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[Text("欢迎登录",style: Theme.of(context).textTheme.titleLarge,),const TextField(decoration: InputDecoration(labelText: "账号", prefixIcon: Icon(Icons.person)),),const SizedBox(height: 20),const TextField(decoration: InputDecoration(labelText: "密码", prefixIcon: Icon(Icons.lock)),obscureText: true,),const SizedBox(height: 20),ElevatedButton(onPressed: () {// Add your login logic here},child: const Text("登录"),),],),)),);}
}

效果预览:

在这里插入图片描述

Apply the Theme: Notice how we’ve used Theme.of(context).textTheme.titleLarge to set the style of our ‘Welcome’ Text widget. You can also do the same to other widgets as you desire.

应用主题: 注意我们是如何使用 Theme.of(context).textTheme.titleLarge 来设置 “欢迎 ”文本部件的样式的。您也可以根据需要对其他部件进行同样的设置。

Launch the App with LoginScreen: Inside the main function, launch the app with the MaterialApp widget and the LoginScreen as the home screen: You should see the following output.

使用 LoginScreen 启动应用程序: 在主函数中,使用 MaterialApp 部件和 LoginScreen 作为主屏幕启动应用程序: 您应该会看到以下输出。

Make changes: The current theme of the login screen is dark. To make it light, you can change the ‘brightness’ property of ThemeData in the main function to light.

进行更改: 当前登录界面的主题是暗色。要使其变亮,可将主函数中主题数据的 “亮度 ”属性更改为亮色。

brightness: Brightness.light

在这里插入图片描述

Run the app: When you run the app again, you should see this new look.

运行应用程序: 再次运行应用程序时,你应该会看到这个新外观。

As you follow these steps, you’re creating a login screen with a consistent color scheme based on the defined theme. This ensures that your app’s UI maintains a unified and professional appearance.

按照这些步骤操作后,您就可以根据定义的主题创建具有统一配色方案的登录屏幕。这样可以确保应用程序的用户界面保持统一和专业的外观。

At the end of this section, your main.dart file should contain the complete code for the login app with a theme. Remember that using themes in Flutter not only helps maintain a consistent look but also simplifies the process of styling your app’s UI elements.

本节结束时,您的 main.dart 文件应包含登录应用程序的完整代码和主题。请记住,在 Flutter 中使用主题不仅有助于保持外观一致,还能简化应用程序 UI 元素的样式设计过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探讨 C# 中使用嵌套类型的注意事项

概述 在C#中&#xff0c;嵌套类型是定义在另一个类型内部的类型。嵌套类型允许开发人员在其它类型&#xff08;如类、结构、接口、枚举或委托&#xff09;中定义类型。此设计有助于我们组织相关类型、封装实现细节和提高代码可读性。但是&#xff0c;在实现时应遵循一些规则和…

深入探讨TCP/IP协议基础

在当今数字化的时代&#xff0c;计算机网络已经成为人们生活和工作中不可或缺的一部分。而 TCP/IP 协议作为计算机网络的核心协议&#xff0c;更是支撑着全球互联网的运行。本文将深入探讨常见的 TCP/IP 协议基础&#xff0c;带你了解计算机网络的奥秘。 一、计算机网络概述 计…

童年孤独症的特征与挑战

深入了解童年孤独症的特征与挑战&#xff0c;对于助力这些孩子及其家庭而言至关重要。 童年孤独症的特征主要体现在社交互动、沟通能力以及行为模式等方面。在社交互动上&#xff0c;孤独症儿童常常对他人的存在缺乏关注&#xff0c;极少主动与他人进行眼神交流或者互动。他们往…

基于Springboot+Vue的候鸟监测数据管理系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…

MySQL 字段类型介绍

在 MySQL 中&#xff0c;设计数据库表时&#xff0c;需要根据数据的实际需求选择合适的数据类型&#xff0c;以确保数据存储的准确性和节省存储空间。MySQL 提供了丰富的字段类型&#xff0c;主要分为以下几类&#xff1a;数值类型、字符串类型、日期时间类型、和JSON类型等。 …

C语言浮点数实现之实例(二)

上一章《C语言浮点数实现&#xff08;一&#xff09;》给大家讲解了浮点数的由来、组成以及由于浮点数导致的世界级重大事故&#xff0c;以提高大家对学习浮点数积极性&#xff0c;了解浮点数的重要性。虽说大多数场景基本上不会在意这些细节&#xff0c;但是难免会遇见少数场景…

ffmpeg视频滤镜:定向模糊-dblur

滤镜简述 dblur 官网链接 > https://ffmpeg.org/ffmpeg-filters.html#dblur 有一个模糊滤镜&#xff0c;我试了一下&#xff0c;没有感觉到它的特殊之处, 这里简单介绍一下。 滤镜使用 滤镜的参数 angle <float> ..FV.....T. set angle (from 0 t…

如何使用 Maven 不同环境使用不同资源文件 提升项目安全性

需求&#xff1a; 之前的文章介绍过&#xff0c;不同环境&#xff0c;配置文件可以灵活构建&#xff0c;参考Maven 不同环境灵活构建。 进一步的&#xff0c;打包时时可以进一步优化&#xff0c;即开发环境&#xff0c;构建时只将测试资源文件打包到应用中&#xff0c;进一步提…

CSS实现回到顶部且平滑过渡

背景 最近同学在项目开发的时候问了我一个问题&#xff1a;小白&#xff0c;回到顶部该怎么做呀&#xff1f;我当时就愣住了&#xff0c;心想这不是很基础的一个功能吗&#xff0c;然后想到该同学没有系统学过网页三剑客&#xff0c;我就给他讲了该怎么实现这个虽然基础但在很多…

019集——global全局引用报错解决方案(全局using指令在c#7.3中不可用)(CAD—C#二次开发入门)

如图&#xff0c;所示&#xff0c;全局引用global using出现报错&#xff1a; 解决方案如下&#xff1a; 新建一个类库&#xff0c;standard2.0版本。不要选.netframework 首先vs右下角更新vs版本 打开项目所在文件夹 找到项目文件.csproj&#xff0c;记事本打开。属性组位置加…

docker之redis安装(项目部署准备)

创建网络 docker network create net-ry --subnet172.68.0.0/16 --gateway172.68.0.1 redis安装 #创建目录 mkdir -p /data/redis/{conf,data} #上传redis.conf文件到/data/redis/conf文件夹中 #对redis.conf文件修改 # bind 0.0.0.0 充许任何主机访问 # daemonize no #密码 # …

Go语言开发环境搭建

文档说明 本文作者:SwBack 创作时间:2022‎年‎6‎月‎8‎日 ‏‎18:46:21 知乎:https://www.zhihu.com/people/back-88-87 CSDN:https://blog.csdn.net/qq_30817059 百度搜索: SwBack系统: Windows 11 go 1.18.2 安装包下载 安装包下载链接 直接默认NEXT 查看Go版本 查看Go…

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (二)

coppelia sim[V-REP]仿真实现 机器人于3D相机手眼标定与实时视觉追踪 二 zmq API接口python调用python获取3D相机的数据获取彩色相机的数据获取深度相机的数据用matpolit显示 python控制机器人运动直接控制轴的位置用IK运动学直接移动到末端姿态 相机内参的标定记录拍照点的位置…

TCP 开发常见接口解析

1. listen 、accept 与 connect #include <sys/types.h> #include <sys/socket.h>1.1 Tcp 服务端 监听连接请求 listen int listen(int sockfd, int backlog);// sockfd : TcpServer 套接字&#xff1b; // backlog : 该套接字排队的最大连接请求数; 如果连接请…

Java面向对象编程高阶(一)

Java面向对象编程高阶&#xff08;一&#xff09; 一、关键字static1、static修饰属性2、静态变量与实例变量的对比3、static修饰方法4、什么时候将属性声明为静态的&#xff1f;5、什么时候将属性声明为静态的&#xff1f;6、代码演示 一、关键字static static用来修饰的结构…

Javaee---多线程(一)

文章目录 1.线程的概念2.休眠里面的异常处理3.实现runnable接口4.匿名内部类子类创建线程5.匿名内部类接口创建线程6.基于lambda表达式进行线程创建7.关于Thread的其他的使用方法7.1线程的名字7.2设置为前台线程7.3判断线程是否存活 8.创建线程方法总结9.start方法10.终止&…

VAE中的“变分”什么

写在前面 VAE&#xff08;Variational Autoencoder&#xff09;&#xff0c;中文译为变分自编码器。其中AE&#xff08;Autoencoder&#xff09;很好理解。那“变分”指的是什么呢?—其实是“变分推断”。变分推断主要用在VAE的损失函数中&#xff0c;那变分推断是什么&#x…

P11228 [CSP-J 2024] 地图探险(民间数据)

原题链接​​​​​​ 这道题挺简单的&#xff0c;就是把题中所给的条件换成代码就行了&#xff0c;题解感觉不知道咋写&#xff0c;注释都放在代码里了&#xff0c;非常清楚。 //注释非常清楚 #include<bits/stdc.h> using namespace std; const int N 1e3 10; //字…

MobileNetV2实现实时口罩检测tensorflow

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【Informer模型复现项目实战】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【…

著名AI人工智能的未来应用讲师培训师唐兴通数字经济大数据工业4.0数字化转型AIGC大模型培训讲师

《大数据与人工智能的未来应用》培训课程大纲 一、培训内容简介 本课程旨在帮助学员深度理解大数据与人工智能&#xff08;AI&#xff09;如何为未来商业和行业带来革命性变革。课程紧贴前沿科技&#xff0c;从数据采集、分析到AI应用开发&#xff0c;全方位解析大数据和AI如…