表单是一个包含表单元素的区域 。表单元素允许用户输入内容, 比如 : 文本域 、 下拉 列表、单选框、复选框等。 常见的应用场景有: 登录、注册、输入信息等。表单里有两个 重要的组件, 一个是 Form 组件用来做整个表单提交使用的,另一个是 TextFormField 组件用来做用户输入的。先来看看 Form 组件的属性,如下所示 :属性名类型说明keyKey组件在整个 Widget树中的 ke
前有大佬分享了用CustomPaint画一个自定义的CircleProgressBar的文章, 今天我分享一波自定义View(CustomPaint)的一些基础知识画布canvas画布是一个矩形区域,我们可以控制其每一像素来绘制我们想要的内容canvas 拥有多种绘制点、线、路径、矩形、圆形、以及添加图像的方法,结合这些方法我们可以绘制出千变万化的画面。虽然,画布可以画这些东西,但是决定这些图形颜
首先找到文件:/my_flutter_projrct/windows/runner/win32_windows.cpp 找不到windows文件夹的请去把flutter切换到dev分支,config配置加入windows,重新创建一个flutter项目。第一个窗口置顶:在CreateWindows下面加入以下代码即可HWND m_hwnd = window; // 将刚创建好的windows复制给
转载 2023-09-08 16:44:58
94阅读
概述Ink翻译为墨水,墨汁的意思,就是点击某一组件时具有水波纹的效果。Android中MaterialButton中有类似的效果,Flutter中和Ink相关的有Ink、InkWell、InkFeature、Ink.image、InkSplash、InkRipple、InkResponse、InkDecoration、InkHighlight,有些是组件,有些是效果,有些是属性。InkInk的构造
转载 2024-03-28 10:51:12
373阅读
bitsdojo_window 是一个用来定制桌面端窗口的插件。目前拥有以下功能:自定义窗口框架——移除了 Windows/macOS/Linux 规范的标题栏和按钮启动时隐藏窗口显示/隐藏窗口使用Flutter组件移动窗口最小化/最大化/恢复/关闭窗口设置窗口大小,最小尺寸和最大尺寸设置窗口位置在屏幕上设置窗口对齐方式(中心/左上角/右上角/左下角/右下角)设置窗口标题安装点击 bitsdojo
转载 2023-09-26 16:48:09
179阅读
前言自从今年google IO大会推出flutter跨平台开发框架以来,flutter在各个技术论坛里被吵得如日中天.flutter团队直言flutter可以帮助开发者轻松实现恒定60fps的性能体验。我们知道flutter跨平台的原理是采用飞镖语言预编译的方式直接编译出各个平台的原生代码,而不需要类似RN用JavaScript的桥接器执行原生代码,那么这样做的性能究竟如何呢?是否能达到和原生一样
为什么我们需要状态管理如果应用足够简单,Flutter 作为一个声明式框架,你或许只需要将 数据 映射成 视图 就可以了。你可能并不需要状态管理,就像下面这样。 image.png 但是随着功能的增加,你的应用程序将会有几十个甚至上百个状态。这个时候你的应用应该会是这样。 image.png 这实在是太复杂了!而且还会有多个页面共享同
转载 2024-04-02 20:37:33
268阅读
在app文字语种 上,公司App主要针对国外用户,但同时还得兼顾国内的用户。对于flutter来说,主要有两种实现方式,但是基本思想是一样的:都是根据App运行环境的语种,加载(我使用的本地加载)不同的静态资源,再进行渲染。第一种方式利用 shared_preferences主要记录第一种持久化存储的方案,因为后期的开发中还会使用到 sqlite配置:flutter已经提供国际化多语言,
转载 10月前
477阅读
介绍动态切换主题功能,使用Provider状态管理完成学习本章内容,必须掌握Provider状态管理,如果有不太理解的同学,请打开我的主页搜索 Provider 观看后再返回观看本博客主题样式大全factory ThemeData({ Brightness brightness, // 应用整体主题的亮度。用于按钮之类的小部件,以确定在不使用主色或强调色时选择什么颜色。 MaterialC
1、主要是box
原创 2022-11-29 11:05:51
2309阅读
# Flutter设置Java环境的详细指南 在开发Flutter应用时,Java环境的配置是至关重要的,尤其是在构建Android应用时。本文将详细介绍如何在Windows、macOS及Linux下设置Java环境,并使用代码示例来阐明每一步。 ## 1. 安装JDK 首先,你需要安装Java开发工具包(JDK)。你可以在Oracle的网站或者开源的OpenJDK网站下载JDK。 ###
原创 2024-08-30 06:49:20
516阅读
开始** 开发过程中,需要基于全屏或者某child的位置进行弹窗显示,在网上找了一些,始终没有满意的,就自己改造了一番,觉得还不错,分享给有需要的人。 菜鸟一枚,代码还有很多需要优化的地方,欢迎指正,如果需要加功能可以发出来一起研究。 ? 在此感谢网上的开源文章和官方非常齐全的注释,给了我很多帮助。**简介1、基于全屏幕定位,进行弹窗显示:2、基于某child widget定位,进行弹窗显示:使用
转载 2023-10-18 23:16:37
122阅读
我的界面搭建:先来搭建一下我的界面,目前我的界面是一个空壳:而最终要的效果是这样:下面先来搭建界面:菜单数据准备:先定义元素文本及图标:import 'package:flutter/material.dart'; class ProfilePage extends StatefulWidget { @override _ProfilePageState createState() =&
转载 2024-04-05 09:04:26
185阅读
flutter项目打包运行成桌面程序1、安装go环境编译环境下载地址 安装完配置环境变量把C:\Go\bin加入到PATH里面,然后打开cmd输入命令行go可以查看下环境是否OK 命令 go env2、安装完go环境之后,然后下载一个hover库go get -u github.com/go-flutter-desktop/hover3 .如果下载失败,换下面地址重新下载就可以完成换一个国内能访问
转载 2024-04-12 09:14:29
47阅读
说明: 以下说的类似都是以Android端为例。一、设置Widget宽高:1.使用ConstrainedBox+BoxConstraints设置Widget宽高:BoxConstraints设置的几种方式:BoxConstraints(minWidth: 最小宽度, maxWidth: 最大宽度, minHeight: 最小高度, maxHeight: 最大高度); //设置最小+最大宽高 Bo
转载 2024-04-06 10:00:14
239阅读
前言Color类中颜色以一个int值保存,显示器颜色是由红、绿、蓝三基色组成,每种颜色占8比特,存储结构如下:Bit(位)|颜色 ?:-?-: 0-7|蓝色 8-15|绿色 16-23|红色 24-31|Alpha(不透明度)Theme组件可以为Material APP定义主题数据(ThemeData)。Material组件库里很多组件都使用了主题数据,如导航栏颜色、标题字体、Icon样式等。Th
转载 2023-10-16 13:36:44
648阅读
本篇将解析 Flutter 中自定义布局的原理,并带你深入实战自定义布局的流程,利用两种自定义布局的实现方式,完成如下图所示的界面效果,看完这一篇你将可以更轻松的对 Flutter 为所欲为。一、前言在之前的篇章我们讲过 Widget 、Element 和 RenderObject 之间的关系,所谓的 自定义布局,事实上就是自定义 RenderObject 内 child 的大小和位置 ,而在这点
概要本文不是flutter界面开发入门文章,而是一篇深入介绍Flutter framework关于视图树的创建与管理机制、布局、渲染的原理、以及flutter布局与渲染相关性能优化的设计思路的文章。同时介绍在使用flutter开发过程中,遇到的一些坑和相应的解决方案。Flutter框架简介跨平台应用的框架,没有使用WebView或者系统平台自带的控件,使用自身的高性能渲染引擎(Skia)自绘,界面
转载 2024-07-29 09:43:14
246阅读
 前言       在 Flutter 这个分类的第一篇文章总结了下最新的 Mac 搭建 Flutter 开发环境和对声明式UI这个理解的东西,前面也有提过,准备像在 SwiftUI 分类中那样花一些功夫来写一个 Flutter 项目Demo,这样能更有利于我们的学习,后续的问题在日常开发的过程中再慢慢的总结吧。    &nbs
转载 2024-06-08 15:50:50
54阅读
setupFlutterEngine()@VisibleForTesting void setupFlutterEngine() { // 返回FlutterEngine,如果为空会自动创建一个Engine flutterEngine = host.provideFlutterEngine(host.getContext()); if (flutterEngine != null) { isFlu
  • 1
  • 2
  • 3
  • 4
  • 5