总结

写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于Flutter的学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。
由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的
还有高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。

跨平台开发:Flutter.png

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

.title {

padding: 10rpx 20rpx;

margin: 10rpx 0;

border-left: 4rpx solid #ccc;

}

/全部属性的主盒子/

.commodity_attr_list {

background: #fff;

padding: 0 20rpx;

font-size: 26rpx;

overflow: hidden;

width: 100%;

}

/每组属性的主盒子/

.attr_box {

width: 100%;

overflow: hidden;

border-bottom: 1rpx solid #ececec;

}

/属性名/

.attr_name {

width: 20%;

float: left;

padding: 15rpx 0;

}

/属性值/

.attr_value_box {

width: 80%;

float: left;

padding: 15rpx 0;

overflow: hidden;

}

/每个属性值/

.attr_value {

float: left;

padding: 0 10rpx;

margin: 0 10rpx;

border: 1rpx solid #ececec;

}

/每个属性选中的当前样式/

.attr_value_active {

background: #FFCC00;

border-radius: 10rpx;

color: #fff;

padding: 0 10rpx;

}

/禁用属性/

.attr_value_disabled {

color: #ccc;

}

/button/

.btn-area {

margin: 1.17647059em 15px 0.3em;

}

.btn {

margin-top: 15px;

background-color:#FFCC00;

color: #fff;

}

.btn:first-child {

margin-top: 0;

}

js:

数据部分,一般情况都是访问接口获取数据的,这里并没有使用网络访问,为了简化demo,直接把一组数据放在data对象中。

Page({

data: {

firstIndex: -1,

//准备数据

//数据结构:以一组一组来进行设定

commodityAttr: [

{

priceId: 1,

price: 35.0,

“stock”: 8,

“attrValueList”: [

{

“attrKey”: “型号”,

“attrValue”: “2”

},

{

“attrKey”: “颜色”,

“attrValue”: “白色”

},

{

“attrKey”: “大小”,

“attrValue”: “小”

},

{

“attrKey”: “尺寸”,

“attrValue”: “S”

}

]

},

{

priceId: 2,

price: 35.1,

“stock”: 9,

“attrValueList”: [

{

“attrKey”: “型号”,

“attrValue”: “1”

},

{

“attrKey”: “颜色”,

“attrValue”: “黑色”

},

{

“attrKey”: “大小”,

“attrValue”: “小”

},

{

“attrKey”: “尺寸”,

“attrValue”: “M”

}

]

},

{

priceId: 3,

price: 35.2,

“stock”: 10,

“attrValueList”: [

{

“attrKey”: “型号”,

“attrValue”: “1”

},

{

“attrKey”: “颜色”,

“attrValue”: “绿色”

},

{

“attrKey”: “大小”,

“attrValue”: “大”

},

{

“attrKey”: “尺寸”,

“attrValue”: “L”

}

]

},

{

priceId: 4,

price: 35.2,

“stock”: 10,

“attrValueList”: [

{

“attrKey”: “型号”,

“attrValue”: “1”

},

{

“attrKey”: “颜色”,

“attrValue”: “绿色”

},

{

“attrKey”: “大小”,

“attrValue”: “大”

},

{

“attrKey”: “尺寸”,

“attrValue”: “L”

}

]

}

],

attrValueList: []

},

onShow: function () {

this.setData({

includeGroup: this.data.commodityAttr

});

this.distachAttrValue(this.data.commodityAttr);

// 只有一个属性组合的时候默认选中

// console.log(this.data.attrValueList);

if (this.data.commodityAttr.length == 1) {

for (var i = 0; i < this.data.commodityAttr[0].attrValueList.length; i++) {

this.data.attrValueList[i].selectedValue = this.data.commodityAttr[0].attrValueList[i].attrValue;

}

this.setData({

attrValueList: this.data.attrValueList

});

}

},

/* 获取数据 */

distachAttrValue: function (commodityAttr) {

/**

将后台返回的数据组合成类似

{

attrKey:‘型号’,

attrValueList:[‘1’,‘2’,‘3’]

}

*/

// 把数据对象的数据(视图使用),写到局部内

var attrValueList = this.data.attrValueList;

// 遍历获取的数据

for (var i = 0; i < commodityAttr.length; i++) {

for (var j = 0; j < commodityAttr[i].attrValueList.length; j++) {

var attrIndex = this.getAttrIndex(commodityAttr[i].attrValueList[j].attrKey, attrValueList);

// console.log(‘属性索引’, attrIndex);

// 如果还没有属性索引为-1,此时新增属性并设置属性值数组的第一个值;索引大于等于0,表示已存在的属性名的位置

if (attrIndex >= 0) {

// 如果属性值数组中没有该值,push新值;否则不处理

if (!this.isValueExist(commodityAttr[i].attrValueList[j].attrValue, attrValueList[attrIndex].attrValues)) {

attrValueList[attrIndex].attrValues.push(commodityAttr[i].attrValueList[j].attrValue);

}

} else {

attrValueList.push({

attrKey: commodityAttr[i].attrValueList[j].attrKey,

attrValues: [commodityAttr[i].attrValueList[j].attrValue]

});

}

}

}

// console.log(‘result’, attrValueList)

for (var i = 0; i < attrValueList.length; i++) {

for (var j = 0; j < attrValueList[i].attrValues.length; j++) {

if (attrValueList[i].attrValueStatus) {

attrValueList[i].attrValueStatus[j] = true;

} else {

attrValueList[i].attrValueStatus = [];

attrValueList[i].attrValueStatus[j] = true;

}

}

}

this.setData({

attrValueList: attrValueList

});

},

getAttrIndex: function (attrName, attrValueList) {

// 判断数组中的attrKey是否有该属性值

for (var i = 0; i < attrValueList.length; i++) {

if (attrName == attrValueList[i].attrKey) {

break;

}

}

return i < attrValueList.length ? i : -1;

},

isValueExist: function (value, valueArr) {

// 判断是否已有属性值

for (var i = 0; i < valueArr.length; i++) {

if (valueArr[i] == value) {

break;

}

}

return i < valueArr.length;

},

/* 选择属性值事件 */

selectAttrValue: function (e) {

/*

点选属性值,联动判断其他属性值是否可选

{

attrKey:‘型号’,

attrValueList:[‘1’,‘2’,‘3’],

selectedValue:‘1’,

attrValueStatus:[true,true,true]

}

console.log(e.currentTarget.dataset);

*/

var attrValueList = this.data.attrValueList;

var index = e.currentTarget.dataset.index;//属性索引

var key = e.currentTarget.dataset.key;

var value = e.currentTarget.dataset.value;

if (e.currentTarget.dataset.status || index == this.data.firstIndex) {

总结

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:
[外链图片转存中…(img-qL7OlUnA-1715377989625)]

[外链图片转存中…(img-9nWwNJ5Q-1715377989625)]

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐