9.8 新商品栏、上下拉刷新实现步骤:
第 1 步:安装插件 pull_to_refresh1flutter pub add pull_to_refresh
第 2 步:main 配置插件lib/main.dart
123456789101112131415161718192021222324class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return ScreenUtilInit( ... builder: () { return RefreshConfiguration( headerBuilder: () => const ClassicHeader(), // 自定义刷新头部 footerBuilder: () => c ...
8.3 主界面编写实现步骤:
第 1 步:Bindings 依赖管理
主界面、首页、购物车、消息、我的 一共 5 个控制器,统一依赖载入
lib/pages/system/main/binding.dart
1234567891011/// 主界面依赖class MainBinding implements Bindings { @override void dependencies() { Get.lazyPut<HomeController>(() => HomeController()); Get.lazyPut<CartIndexController>(() => CartIndexController()); Get.lazyPut<MsgIndexController>(() => MsgIndexController()); Get.lazyPut<MyIndexController>(() => MyIndex ...
8.4 设置系统栏样式问题描述
系统栏颜色有的时候会变成白色,这样就不能看清楚系统栏信息了。
实现步骤:
第 1 步:theme 样式定义lib/common/style/theme.dart
123456789101112131415161718/// 主题class AppTheme { /// 亮色 static ThemeData light = ThemeData( ... appBarTheme: const AppBarTheme( systemOverlayStyle: SystemUiOverlayStyle.dark, // appBar 暗色 , 和主题色相反 ), ); /// 暗色 static ThemeData dark = ThemeData( ... appBarTheme: const AppBarTheme( systemOverlayStyle: SystemUiOverlayStyle.light, // appBar 亮色 , 和主题色相 ...
全部配置1234567891011121314151617# 自动补全历史命令,逐字补全Import-Module PSReadLineSet-PSReadLineOption -PredictionSource History# 修改Tab补全为bash风格Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete# 全新的主题oh-my-posh init pwsh --config C:\Documents\PowerShell\powerlevel10k_rainbow.omp.json | Invoke-Expressiongit config --global https.proxy http://127.0.0.1:7890git config --global https.proxy https://127.0.0.1:7890# 设置代理$Env:http_proxy="http://127.0.0.1:7890";$Env:https_proxy="http://127.0.0.1: ...
项目架构123456789101112131415├─assets│ ├─fonts│ ├─icons│ └─images├─doc├─lib│ ├─common│ │ ├─apis│ │ ├─i18n│ │ ├─model│ │ ├─routes│ │ ├─style│ │ ├─utils│ │ └─widgets│ └─pages
前言
使用 Bloc 的时候,有一个让我至今为止十分在意的问题,无法真正的跨页面交互!在反复的查阅官方文档后,使用一个全局 Bloc 的方式,实现了“伪”跨页面交互,详细可查看:flutter_bloc 使用解析;fish_redux 的广播机制是可以比较完美的实现跨页面交互的,我也写了一篇几万字文章介绍如何使用该框架:fish_redux 使用详解,redux 层次划分是比较细的,写起来会很费劲;最近尝试了 GetX 相关功能,解决了我的相当一部分痛点
把整篇文章写完后,我马上把自己的一个 demo 里面所有 Bloc 代码全用 GetX 替换,且去掉了 Fluro 框架;感觉用 Getx 虽然会省掉大量的模板代码,但还是有些重复工作:创建文件夹,创建几个必备文件,写那些必须要写的初始化代码和类;略微繁琐,为了对得起 GetX 给我开发带来的巨大便利,我就花了一些时间,给它写了一个插件! 上面这重复的代码,文件,文件夹统统能一键生成!
GetX 相关优势
依赖注入
GetX 是通过依赖注入的方式,存储相应的 XxxGetxController;已经脱离了 InheritedW ...
12345678910111213141516171819202122232425262728293031323334module.exports = { extends: ['@commitlint/config-conventional'], rules: { 'type-enum': [ // type枚举 2, 'always', [ 'build', // 编译相关的修改,例如发布版本、对项目构建或者依赖的改动 'feat', // 新功能 'fix', // 修补bug 'docs', // 文档修改 'style', // 代码格式修改, 注意不是 css 修改 'refactor', // 重构 'perf' ...
项目规范
未读123456789101112131415161718192021222324252627282930module.exports = { env: { browser: true, es2021: true, node: true }, extends: ['eslint:recommended', 'plugin:prettier/recommended'], parser: 'vue-eslint-parser', parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, plugins: ['vue'], rules: { indent: ['error', 2, { SwitchCase: 1 }], // 强制统一缩进 eqeqeq ...
项目规范
未读1234567891011121314151617181920module.exports = { printWidth: 120, // 单行长度 tabWidth: 2, // 缩进长度 useTabs: false, // 使用空格代替tab缩进 semi: false, // 句末使用分号 singleQuote: true, // 使用单引号 quoteProps: 'as-needed', // 仅在必需时为对象的key添加引号 jsxSingleQuote: true, // jsx中使用单引号 trailingComma: 'none', // 多行时尽可能打印尾随逗号 bracketSpacing: true, // 在对象前后添加空格-eg: { foo: bar } jsxBracketSameLine: true, // 多属性html标签的‘>’折行放置 arrowParens: 'avoid', // 单参数箭头函数参数周围使用圆括号-eg: ...
第二章:面向对象面向对象是程序中一个非常重要的思想,它被很多同学理解成了一个比较难,比较深奥的问题,其实不然。面向对象很简单,简而言之就是程序之中所有的操作都需要通过对象来完成。
举例来说:
操作浏览器要使用 window 对象
操作网页要使用 document 对象
操作控制台要使用 console 对象
一切操作都要通过对象,也就是所谓的面向对象,那么对象到底是什么呢?这就要先说到程序是什么,计算机程序的本质就是对现实事物的抽象,抽象的反义词是具体,比如:照片是对一个具体的人的抽象,汽车模型是对具体汽车的抽象等等。程序也是对事物的抽象,在程序中我们可以表示一个人、一条狗、一把枪、一颗子弹等等所有的事物。一个事物到了程序中就变成了一个对象。
在程序中所有的对象都被分成了两个部分数据和功能,以人为例,人的姓名、性别、年龄、身高、体重等属于数据,人可以说话、走路、吃饭、睡觉这些属于人的功能。数据在对象中被成为属性,而功能就被称为方法。所以简而言之,在程序中一切皆是对象。
1、类(class)要想面向对象,操作对象,首先便要拥有对象,那么下一个问题就是如何创建对象。要创建对象,必须 ...