Flutter 仿滴滴出行App

Sky24n發表於2019-02-20

綠色出行

Flutter 仿滴滴出行App
地圖:採用高德地圖,僅簡單完成了部分功能,基礎地圖,地址檢索,逆地理編碼。
介面:仿滴滴主介面,地圖中心請求動效果,服務tabs展開效果,地址檢索介面,城市列表介面。
專案結構:詳見作者另外一個Flutter完整專案flutter_wanandroid。???
目前本專案僅部分開源~
已開源內容:
1、Dart漢字轉拼音庫 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資料,需要非同步等待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<City> list = new List();
list.add(new City(name: "成都市"));
list.add(new City(name: "北京市"));
SpUtil.putObjectList("loc_city_list", list);
  
List<Map> dataList = SpUtil.getObjectList("loc_city_list");
List<City> _cityList = dataList?.map((value) {
  return City.fromJson(value);
})?.toList();

print("thll List: " + (_cityList == null ? "null" : _cityList.toString()));    
複製程式碼

ScreenUtil

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

import 'package:flustars/flustars.dart';  
  
// 如果設計稿尺寸預設配置一致,無需該設定。  配置設計稿尺寸 預設 360.0 / 640.0 / 3.0  
setDesignWHD(_designW,_designH,_designD);  

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

// 依賴context  
// 螢幕寬  
double screenWidth = ScreenUtil.getScreenW(context);  
// 根據螢幕寬適配後尺寸  
double adapterW100 = ScreenUtil.getScaleW(context, 100);  
複製程式碼

fluintl

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

import 'package:fluintl/fluintl.dart';  
  
/// 替換字串格式要求:'%\${index}\$s' ,{index} 第幾個引數,從0開始。

Ids.click_times: '%\$0\$s點選了%\$1\$s次';   
   
IntlUtil.getString(context, Ids.click_times, params: ['Tom', '$_counter']);  
/// print: Tom點選了0次

/// 字串獲取
IntlUtil.getString(context, Ids.titleHome);
IntlUtil.getString(context, Ids.titleHome, params: [param1, param2]);&emsp;
CustomLocalizations.of(context).getString(Ids.titleHome);
複製程式碼

Screenshot

引導頁

Flutter 仿滴滴出行App

啟動頁

Flutter 仿滴滴出行App

主介面

Flutter 仿滴滴出行App

首頁地圖

Flutter 仿滴滴出行App

地址檢索

Flutter 仿滴滴出行App

城市列表

Flutter 仿滴滴出行App

關於作者

GitHub : Sky24n
簡書     : Sky24n
掘金     : Sky24n
Pub      : Sky24n

關於App

GitHub : GreenTravel
僅支援安卓Apk下載
APK點選下載:綠色出行v0.0.5
APK掃碼下載:

綠色出行

相關文章