地圖:采用高德地圖,僅簡單完成了部分功能,基礎(chǔ)地圖,地址檢索,逆地理編碼。
界面:仿滴滴主界面,地圖中心請求動效果,服務(wù)tabs展開效果,地址檢索界面,城市列表界面。
項目結(jié)構(gòu):詳見作者另外一個Flutter完整項目[flutter_wanandroid]( )。??????
目前本項目僅部分開源~
已開源內(nèi)容:
1、Dart漢字轉(zhuǎn)拼音庫 [lpinyin]( )
2、城市列表,索引&懸停效果 [AzListView]( )
3、也許是目前最好用的Sp工具類 [SpUtil]( )
4、也許是目前最好用的屏幕工具類 [ScreenUtil]( )
5、國際化 [fluintl]( )
6、Dart常用工具類庫 [common_utils]( )

[lpinyin]( )

import package:lpinyin/lpinyin.dart;

String pinyin = PinyinHelper.getPinyin("成都市");

[AzListView]( )

import package:azlistview/azlistview.dart;

AzListView(
{Key key,
this.data,
this.topData,
this.itemBuilder,
this.suspensionWidget,
this.isUseRealIndex: true,
this.itemHeight: 50,
this.suspensionHeight: 40,
this.onSusTagChanged,
this.header,
this.indexBarBuilder,
this.indexHintBuilder,
this.showIndexHint: true});

[SpUtil]( )

詳細使用請參考倉庫說明。

import package:flustars/flustars.dart;

// App啟動時讀取Sp數(shù)據(jù),需要異步等待Sp初始化完成。
await SpUtil.getInstance();

SpUtil.getString(key, defValue: );
SpUtil.getInt(key, defValue: 0);

/// save object example.
/// 存儲實體對象示例。
City city = new City();
city.name = "成都市";
SpUtil.putObject("loc_city", city);

Map dataStr = SpUtil.getObject("loc_city");
City hisCity = dataStr == null ? null : City.fromJson(dataStr);
print("thll Str: " + (hisCity == null ? "null" : hisCity.toString()));

/// save object list example.
/// 存儲實體對象List示例。
List list = new List();
list.add(new City(name: "成都市"));
list.add(new City(name: "北京市"));
SpUtil.putObjectList("loc_city_list", list);

List dataList = SpUtil.getObjectList("loc_city_list");
List _cityList = dataList?.map((value) {
return City.fromJson(value);
})?.toList();

print("thll List: " + (_cityList == null ? "null" : _cityList.toString()));

[ScreenUtil]( )

詳細使用請參考倉庫說明。

import package:flustars/flustars.dart;

// 如果設(shè)計稿尺寸默認配置一致,無需該設(shè)置。 配置設(shè)計稿尺寸 默認 360.0 / 640.0 / 3.0
setDesignWHD(_designW,_designH,_designD);

// 不依賴context
// 屏幕寬
double screenWidth = ScreenUtil.getInstance().screenWidth;
// 根據(jù)屏幕寬適配后尺寸
double adapterW100 = ScreenUtil.getInstance().getWidth(100);

// 依賴context
// 屏幕寬
double screenWidth = ScreenUtil.getScreenW(context);
// 根據(jù)屏幕寬適配后尺寸
double adapterW100 = ScreenUtil.getScaleW(context, 100);

[fluintl]( )

詳細使用請參考倉庫說明。

import package:fluintl/fluintl.dart;

/// 替換字符串格式要求:%/${index}/$s ,{index} 第幾個參數(shù),從0開始。

Ids.click_times: %/$0/$s點擊了%/$1/$s次;

IntlUtil.getString(context, Ids.click_times, params: [Tom, $_counter]);
/// print: Tom點擊了0次

最后

對于很多初中級Android工程師而言,想要提升技能,往往是自己摸索成長,不成體系的學(xué)習(xí)效果低效漫長且無助。整理的這些架構(gòu)技術(shù)希望對Android開發(fā)的朋友們有所參考以及少走彎路,本文的重點是你有沒有收獲與成長,其余的都不重要,希望讀者們能謹(jǐn)記這一點。

同時我經(jīng)過多年的收藏目前也算收集到了一套完整的學(xué)習(xí)資料以及高清詳細的Android架構(gòu)進階學(xué)習(xí)導(dǎo)圖及筆記分享給大家,希望對想成為架構(gòu)師的朋友有一定的參考和幫助。

下面是部分資料截圖,誠意滿滿:特別適合有開發(fā)經(jīng)驗的Android程序員們學(xué)習(xí)。

不論

《Android學(xué)習(xí)筆記總結(jié)+最新移動架構(gòu)視頻+大廠安卓面試真題+項目實戰(zhàn)源碼講義》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整內(nèi)容開源分享

遇到什么困難,都不應(yīng)該成為我們放棄的理由!

如果你看到了這里,覺得文章寫得不錯就給個贊唄?如果你覺得那里值得改進的,請給我留言,一定會認真查詢,修正不足,謝謝。

本文已被[CODING開源項目:《Android學(xué)習(xí)筆記總結(jié)+移動架構(gòu)視頻+大廠面試真題+項目實戰(zhàn)源碼》]( )收錄