自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 Solidity笔记11:合约2

1、库pragma solidity >=0.6.0<0.8.0;// 定义库library Search { function indexOf(uint[] storage data, uint _value) public view returns(int){ for (uint i = 0; i< data.length; ++i) { if (data[i] == _value) {

2021-09-28 17:31:19 7174

原创 Solidity笔记10:合约创建

函数中new一个合约对象返回,返回的是这个合约的地址。pragma solidity >=0.6.0<0.8.0;contract TestConstructor { address onwer; string name; constructor() public { onwer = msg.sender; name = 'nico'; } // 只有合约发起来才能修改名字 fu...

2021-09-27 19:32:28 9665

原创 Solidity笔记9:修改器

1、修改器用法pragma solidity >=0.6.0<0.8.0;contract TestModifier{ uint public a = 0; modifier myModifier() { a = 5; _; // 添加修改器的函数在执行时,函数代码被插入在这个位置执行。 a = 10; } // 添加修改器,callModifier函数调用后a=10

2021-09-26 19:05:58 274

原创 Solidity笔记8:函数

1、参数传递的2种方式pragma solidity >=0.6.0<0.8.0;contract TestFunctionArgument{ function testArgument(uint a, uint b) public pure returns(uint) { return a+b; } // 直接传递的方式 function testCallFunction() public pure returns(ui...

2021-09-26 17:21:51 196

原创 Solidity笔记7:交易和内置对象2

1、货币单位2、时间单位3、solidity全局变量示例1:pragma solidity >=0.6.0<0.8.0;contract TestGlobalValue{ // 区块hash function getBlockHash() public view returns(bytes32) { // 不能获取当前块的hash,只能获取当前块之前的块的hash ...

2021-09-26 11:37:41 227

原创 Solidity笔记6:交易和内置对象

转账的示例代码:pragma solidity >=0.6.0<0.8.0;contract TestTransaction{ // 账户的余额 function getBalance() public view returns(uint) { return address(this).balance; } // 外部账户的余额 function getBalance2(address _add...

2021-09-26 00:09:53 9320

原创 Solidity笔记5:2维数组

1、数组字面量函数返回值时数组字面量时,returns指定的返回值类型:1)必须指定长度;2)参数的类型必须要和数组字面量的类型保持一致。contract TestArrayValue { function arrayValue() public pure returns(uint8[3] memory) { return [1,2,3]; } function arrayValue2() public pure returns(int[3

2021-09-25 16:46:04 764

原创 Solidity-4:数组

1、数组的属性状态变量默认是storage2、定义memory数组uint[] memory temp;3、示例pragma solidity >=0.6.0<0.8.0;contract Array01{ // 声明 uint[5] fix; // 定长数组的声明 uint[] ufix; // 变长数组的声明 // 声明并初始化 uint[5] a = [1,2,3,4,5]; u...

2021-09-24 21:12:34 740

原创 Solidity-3:运算符和表达式

1、函数返回多个值用圆括号括起来返回就可以了。如下例子:2、幂运算a**b = a的b次幂3、++,--和c++的一样,分为前置+和后置+4、整数除法截断 function test4() public pure returns(uint8, uint8) { uint8 a = 10; uint8 b = 3; // 整形变量做除法运算时会发生截断,如果是整形字面量做除法则不会发生截断。 retur...

2021-09-24 14:56:27 836

原创 Solidity-2:变量

1、变量作用域状态变量:只要是合约中直接定义的变量;局部变量:除状态变量外,其它都是局部变量。2、数据类型3、整形4、定长字节类型-byte5、函数返回中中的变量名的作用pragma solidity ^0.6.0;contract TestBytes{ byte public _b1 = 's'; // returns后面加变量名和不加变量名是有区别的,如果不加变量名,在remix中调用这个函数后,返回值只有值而没有变量...

2021-09-24 01:12:20 107

原创 Solidity-1:智能合约介绍

1、合约文件后缀名为sol;2、是一种强类型的编程语言,变量必须先定义和赋值后再使用;3、一个简单的示例://版本号pragma solidity ^0.6.0;// 定义智能合约contract HelloWorld{ // 状态变量 string name = "nico"; // view修饰的函数表示只访问状态变量(区块链上的数据),不会消耗任何资源 function getName() public view returns(s..

2021-09-23 15:57:34 407

原创 使用Swiper自定义轮播图

一、背景最近研究了得到页面的轮播图的实现。使用的控件是Swiper,分页器使用的是自定义的样式,导航按钮使用自定义的图标来实现。然后把分页器和导航按钮放在自定义的指定位置。它的页面效果如下:二、主要代码<div class="pagination-wrapper-center"> /*添加自定义的class来自定义样式及位置*/ <div class="swiper-pagination swiper-p

2020-06-07 20:23:19 884

原创 flex布局对行内子元素的影响

一、正常使用正常情况下,行内元素设置宽高是没有效果的,行内元素会根据其内容大小自动布局。请看以下代码和效果 .app { width: 100%; height: 0; background-color: #3CC51F; padding-bottom: 40%; position: relative; } .icon {

2020-06-07 20:03:39 4179 2

原创 height等于0的div的妙用

一、设置具有特定比例的高宽比的容器对于主页的轮播图容器,当宽度设置为100%后,想让高度为宽度的指定比例的值。这时候height就可以用上了。 .app { width: 100%; height: 0; background-color: #3CC51F; padding-bottom: 40%; position: relative; }以上代码就把宽度

2020-06-07 19:53:59 2124

原创 顶部导航栏fixed布局右侧不出现滚动条

一、正常情况顶部导航栏使用fixed布局后,如果页面内容超出了屏幕高度,右侧是会出现滚动条的。效果如下:蓝色区域是顶部的导航栏区域,可以看到右侧出现了滚动条。二、CSS代码设置后如何让滚动条只出现在导航栏下面的内容区域了?原理就是使页面body元素和html根元素的高度固定为屏幕的高度。整个页面内容就不会让浏览器自动显示整个页面的滚动条,而在页面内部,只会让需要滚动的页面元素出现滚动条。这种情况下,顶部导航栏只要宽度设置为100%,计算出来的宽度就是不包含滚动条的宽度值(假如屏幕宽度

2020-06-07 18:04:41 1606

原创 CSS3新特性列表(转载)

CSS3的新特性带来了很多的便利,进而提升工作效率。抱着查漏补缺的想法,逐步掌握完这些新特性。感谢这位奉献者的总结https://segmentfault.com/a/1190000010780991

2020-06-05 23:37:52 136

原创 -webkit-box实现多行文字溢出显示

最近看得到的web端首页时,发现一个有一段文字描述超过指定行数后显示省略号。效果如下:查看它的源码,关键代码如下(每一段的最后5行):.news-list .single-news .news-intro .news-title { font-size: .293333rem; font-weight: 700; overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -.

2020-06-05 23:33:06 529

原创 SafeArea的使用

一、背景现在的手机屏幕尺寸外观多种多样,显示区域不再是方方正正的,一些带圆角或者是刘海屏让应用程序的布局更加复杂,甚至是需要单独适配,这对开发者来来太糟糕了。因此SafeArea控件应用而生,SafeArea通过MediaQuery检测屏幕的尺寸使应用程序的大小与屏幕适配,自动避开遮挡区域。它的原理是通过对被包装元素添加Padding来避开遮挡区域。因此可以分别指定上下左右4个区域是否需要添加Padding,例如下面的代码只在底部和左侧添加Padding用于避开遮挡区域。SafeArea(

2020-06-04 10:47:43 2724

原创 升级flutter到1.17.2/Dart到2.8.3编译下载错误的解决方案

一、出现项目编译下载错误,如下面的错误提示:* What went wrong:Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.> Could not resolve all task dependencies for configuration ':app:debugCompileClasspath'. > Could not resolve io.flutter:flut..

2020-06-03 22:42:50 619

原创 android studio手机模拟器开启刘海屏

android studio创建好模拟器后都是英文的,为了方便操作,可以设置为中文。一、设置中文手机模拟器启动后,点击桌面上的Settings图标,如下图所示:打开Settings面板后,拖动到下方选择System在System面板中选择如下图所示的Languages & input再选择Languages,打开语言面板后,如果是第一次打开,是没有简体中文的,这时候点击下面的 《Add a language》,点击搜索,输入简体中文,搜到后添加进来,然后拖动它到第一项

2020-06-03 18:54:10 3717

原创 Map定义时使用for循环和if过滤生成初始数据

Dart2.3以上的版本,Map定义时就可以使用简单的for循环和if判断进行map项的生成和过滤。但在使用时for/if等语句后面不能使用花括号({}),有点类似于python的类型推导了。void main() { List<int> l1 = [1,2,3,4,6,5]; Map<int, int> mi2i = <int,int>{ for (var value in l1) if (value%2 == 0) v

2020-06-03 10:51:26 375 2

原创 export关键字的使用

一、使用背景大多数情况下,使用另一个dart文件中的变量/方法/类时,需要先导入(使用import关键字)。但是当被导入的文件很多,且都在某一个目录时,可以新建一个导入入口文件,在这个入口文件中,使用export关键字将这些dart文件集中导出。然后其他地方使用的使用只需要import这个入口文件就可以了。二、例子以下是flutter官方的一个事例代码库,在material目录中定义了很多界面类库。在这material文件中,就使用了export关键字导出这些界面类库,用于供外层的文件i

2020-06-03 10:25:12 3046

原创 Cupertino和url_launcher

一、Cupertino (iOS风格) Widgets一系列IOS 风格的控件。官网地址:https://flutterchina.club/widgets/cupertino/使用导入:import 'package:flutter/cupertino.dart';二、url_launcher一款支持android和IOS的插件,其中包含打开网址、发送邮件、拨打电话、以及发送信息功能。官网地址:https://pub.dev/packages/url_launcherpubsp

2020-06-02 19:04:32 130

原创 Row中2列图片平分宽度

一、效果基于官方例子修改,效果如下:如果不加上Expand,图片的宽度就会导致Row的总宽度大于屏幕的宽度,出现下面的这种情况。二、代码在Row容器中,使用Expand让每个子Widget平分父Widget的总宽度(这里就是整个屏幕的总宽度)。代码如下: Widget _buildDecoratedImage(int imageIndex) { return Container( decoration: BoxDecoration( bord

2020-06-02 16:16:26 1769

原创 Provider4.0状态管理

一、单状态共享定义可以修改的模型: 使用mixin(with ChangeNotifier),在数据修改后,调用notifyListeners()通知观众刷新。class CounterModel with ChangeNotifier { int _count = 10; int get counter => _count; void increment(){ _count++; notifyListeners(); }}数据资源挂载,可以使...

2020-05-27 15:42:56 688

原创 Future和async(异步函数)、await(同步等待)

一、Future异步任务then 与 Future 函数体共用一个事件循环。而如果 Future 有多个 then,它们也会按照链式调用的先后顺序同步执行,同样也会共用一个事件循环。then 会在 Future 函数体执行完毕后立刻执行,无论是共用同一个事件循环还是进入下一个微任务。对于一个Future对象,执行完成后,后面的then调用会共用Future 函数体的事件循环。会在函数体执行完后,顺序执行。如上图中的黄框所示。如果then函数体是一个 Future 异步任务,这个 t.

2020-05-26 11:17:33 2139

原创 Dart语言dynamic类型的使用技巧

在Dart语言中,dynamic可以存储任意类型。当一个变量被声明为dynamic后,编译器则会关闭对此变量的类型检查,对此变量的操作都要靠我们自己来保证正确性。虽然很自由,但带来的隐患确实很大。1、dynamic变量和非dynamic变量之间的赋值 // 同类型赋值没有问题 dynamic a1 = 100; int a2 = a1; // 此时由于a1实际上是int类...

2020-04-21 23:05:29 3686

原创 Dart基础之关键知识点2

1、final和const使用场景const适用于编译期就能确定的字面值常量。final适用于需要在运行期才能确定值的常量,且赋值后不能再改变值。只看文字描述可能不好理解,通过下面的例子就会很清楚了,下面的例子如果把final改为const会编译不通过的。 var x = 100; var y = 200; final double xdy = x/y; // x/y的值在运...

2020-04-21 13:43:05 148

原创 Dart基础之关键知识点

1、final变量和const变量final 表示一个运行时常量(在程序运行的时候赋值,赋值后值不再改变)。const 表示一个编译时常量,在程序编译的时候它的值就确定了。实例变量可以是final类型但不能是const类型, 只能在以下3个对方进行初始化:在变量声明时; 参数构造函数中(this.变量名); 构造函数的初始化列表中进行初始化;2、常变量可以赋值给非常变量,反...

2020-04-20 23:35:21 319

原创 ES6模块导出和导入

一、基本的导出export 关键字将已发布代码部分公开给其他模块。最简单方法就是将 export放置在任意变量、函数或类声明之前,从模块中将它们公开出去:二、基本的导入import { identifier1, identifier2 } from "./example.js";当从模块导入了一个绑定时,该绑定表现得就像使用了 const 的定义。这意味着你不能再定义另一个同...

2020-03-31 11:31:29 5698

原创 解构-重要知识点

一、对象解构在此代码中, node.type 的值被存储到 type 本地变量中, node.name 的值则存储到name 变量中。此语法相同于简写的属性初始化器。 type 与 name 标识符既声明了本地变量,也读取了对象的相应属性值。以上对象解构示例都用于变量声明。不过,也可以在赋值的时候使用解构。例如,你可能想在变量声明之后改变它们的值,如下所示:在本例中, typ...

2020-03-31 10:17:53 758

原创 Git分支操作

一、基本命令git branch <分支名称> -- 创建分支git branch -- 查看分支git checkout <分支名称> -- 切换到指定分支git merge <分支名称> --合并分支到mastergit branch -d <分支名称> --删除分支二、示例git branch命令执行后,*代表当...

2020-03-29 22:13:35 449

原创 Git标签操作

一、基本命令git tag --查看所有标签git tag name --创建标签git tag -a name -m "comment" --创建标签时添加日志git tag -d name --删除标签git push origin name --发布标签...

2020-03-29 21:10:35 129

原创 github远程仓库操作

一、创建SSH keyssh-keygen -t rsa -C "[email protected]"然后打开生产的文件夹目录,打开文件id_rsa.pub,复制里面的内容,在github的设置页面添加:二、测试SSH key添加成功命令行输入以下命令:ssh -T [email protected]三、添加远程仓库在github上创建一个新仓库:创建...

2020-03-29 20:02:38 162

原创 Git基本操作命令

一、基本操作命令git init -- 初始化版本库,用于新建一个新的仓库。git clone -- 检出项目到本地git status -- 查看版本库状态git add -- 将文件添加到版本库暂存区git commit(-m 此参数可用于添加描述信息) -- 将修改提交到本地版本库git push --本地版本库的提交,发布到git远程版本库中。git pull...

2020-03-29 15:13:33 114

原创 前端构建工具-gulp

gulpbrowserifywatchifyuglifyjsbower -- 第三方库更新工具browserify-shimgulp-uglify -- 使用vinly buffer数据vinyl-source-stream -- node stream转为 vinyl streamvinyl-buffer --vinyl stream转到vinly buffer...

2020-03-29 12:50:17 89

翻译 Promise重要知识点

1、串联 Promise每次对 then() 或 catch() 的调用实际上创建并返回了另一个 Promise ,仅当前一个Promise 被完成或拒绝时,后一个 Promise 才会被决议。研究以下例子:p1第一次调用then之后,会再次返回一个成功决议的Promise(即使p1是失败的决议调用then之后也是返回成功决议的Promise)。之后每调用一次then,都会返回一个成功...

2020-03-21 17:57:19 444

原创 Github上的一些有价值的资源

GitHub趋势榜:https://github.com/trendingGitHub中文排行榜,帮助你发现高分优秀中文项目:https://github.com/kon9chunkit/GitHub-Chinese-Top-ChartsGo Gin框架相关的几个项目,可以用于接项目使用:基于gin+gorm+vue搭建的快速后台管理系统模板,包含jwt鉴权,权限管理,动态路由...

2020-03-21 00:14:33 303

转载 ES6函数-基础篇1

1、函数默认值在函数声明中能指定任意一个参数的默认值,即使该参数排在未指定默认值的参数之前也是可以的。例如,下面这样是可行的:在本例中,只有在未传递第二个参数、或明确将第二个参数值指定为 undefined 时,timeout 的默认值才会被使用,例如在关于参数默认值的这个例子中, null 值被认为是有效的,意味着对于 makeRequest() 的第三次调用并不会使用 ti...

2020-01-08 22:01:48 96

转载 ES6扩展的对象功能

1、对象初始化属性简写在ES5及更早版本中,对象字面量是“键/值对”的简单集合。这意味着在属性值被初始化时可 能会有些重复,例如:可以像这样用ES6重写:2、方法简写ES6同样改进了为对象字面量方法赋值的语法。在ES5及更早版本中,你必须指定一个名称 并用完整的函数定义来为对象添加方法,如下:通过省略冒号与function关键字,ES6将这个语法变得更简洁,这意味着你可以这样重...

2020-01-05 22:53:40 178

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除