flutter移動項目遷移flutter_web準備階段脫坑

前言

從2018年Google推出flutter後就很受歡迎,於是自己就嘗試設運用一下將公司的一個項目使用flutter進行部分功能實現,效果還是不錯的,流暢度還是個人感覺還是可以接受的;這邊GoogleI/O2019發佈Flutter web版本後,當然還沒有提供正式版SDK,想要對之前的項目做web端適配還有些工作要是,最近工作沒有那麼忙了於是自己就打算嘗試將之前的flutter項目遷移到web端,由於不完善這中間走了不少彎路。

準備

開始前先看官方文檔:https://github.com/flutter/flutter_web
文檔明確指出目前的flutter_web處於實驗階段,使用了單獨的命名空間,就是我們目前提供的sdk移動和web段是分開的,需要對已有的移動項目改造才能在web平臺運行,並且文檔指出我們的建議我們是1.5.4以上版本來進行web端的支持

開始遷移

1.安裝webdev包 使用如下命令進行:

flutter pub global activate webdev

使用該命令的前提是我們已經配置了flutter環境變量(環境變量配置路徑爲“fluttersdk安裝路徑\flutter\bin”,‘fluttersdk安裝路徑’根據自己安裝請況定)

2.修改原有項目中的引用,官網文檔提供的配置如下(並移除asset和字體相關的配置):

name: my_flutter_web_app
environment:
	sdk: '>=2.2.0 <3.0.0'
dependencies:
	flutter_web: any
	flutter_web_ui: any

dev_dependencies:
	build_runner: ^1.1.2
	build_web_compilers: ^1.0.0
	
dependency_overrides:
	flutter_web:
		git:
  			url: https://github.com/flutter/flutter_web
  			path: packages/flutter_web
	flutter_web_ui:
		git:
  			url: https://github.com/flutter/flutter_web
  		path: packages/flutter_web_ui

3.提供web端配置:
根目錄添加web文件夾並在其中創建index.html與main.dart文件

index.html文件內容如下:
<!DOCTYPE html>
		<html lang="en">
		<head>
  		<meta charset="UTF-8">
  		<title></title>
  		<script defer src="main.dart.js" type="application/javascript"></script>
		</head>
		<body>
		</body>
		</html>
main.dart文件內容如下:
	import 'package:flutter_web_ui/ui.dart' as ui;
		import 'package:flutter_app2/main.dart' as app;

		main() async {
  			await ui.webOnlyInitializePlatform();
  			app.main();
		}

配置完了可以看效果了高興,運行flutter packages get命令獲依賴包

	Could not find a file named "./pubspec.yaml" in https://github.com/flutter/flutter_web
pub get failed (1)

	pub get failed (69) -- attempting retry 1 in 1 second...
	
	Cannot open file, path = 'C:\Users\Administrator\AppData\Roaming\Pub\Cache\git\flutter_web-8d4c12a4e9b45f82b5cb862840ac47445e136f7b\.git/pub-packages' (OS Error: 系統找不到指定的路徑。
	, errno = 3)
	pub get failed (66)

悲劇…發生了各種報錯,查閱許多資料問題是一個變着花樣地出就是不能正常運行起來,花費我一早上沒有解決問題,百度一番有的說是殺毒軟件問題,有的說是網絡問題,有的說是git環境問題反正各種嘗試不能用,靈機一動flutter_web不是有examples嗎clone一下看看他們怎麼樣,結果examples項目可以正常運行起來,咱們看一下examples項目的配置

dependency_overrides:
  		flutter_web:
    		path: ../../packages/flutter_web
  		flutter_web_ui:
    		path: ../../packages/flutter_web_ui

examples使用的本地依賴包,那我能包自己項目的修改爲本地依賴包嗎?動手試一下:

修改前:
		dependency_overrides:
  			flutter_web:
    			git:
  					url: https://github.com/flutter/flutter_web
     				path: packages/flutter_web
 		 	flutter_web_ui:
    			git:
     				url: https://github.com/flutter/flutter_web
      				path: packages/flutter_web_ui
 		 	flutter_web_test:
    			git:
      				url: https://github.com/flutter/flutter_web
      				path: packages/flutter_web_test
修改後:
	dependency_overrides:
  			flutter_web:
      			path: E:/developTools/flutter_web_sdk/flutter_web/packages/flutter_web
  		flutter_web_ui:
      			path: E:/developTools/flutter_web_sdk/flutter_web/packages/flutter_web_ui
  		flutter_web_test:
      			path: E:/developTools/flutter_web_sdk/flutter_web/packages/flutter_web_test
      		
      	“E:/developTools/flutter_web_sdk/flutter_web”爲flutter_web SDK放置路徑		

再使用flutter packages get命令等待一會兒,沒有報錯效果如下:
flutter packages get運行結果
項目沒有問題了,啓動服務執行如下命令:

flutter pub global run webdev serve --auto restart

如下提示表示啓動成功:

[INFO] Registering build targets...?[2K
[INFO] Starting initial build...?[2K
[INFO] Starting resource servers...?[2K
[INFO] Serving `web` on http://127.0.0.1:8080
?[2K
[INFO] About to build [web]...?[2K
[INFO] Running build...?[2K
[INFO] Running build completed, took 312ms
?[2K
[INFO] Caching finalized dependency graph...?[2K
[INFO] Caching finalized dependency graph completed, took 203ms
?[2K
[INFO] Succeeded after 522ms with 0 outputs (0 actions)
?[2K

其中“http://127.0.0.1:8080”爲項目訪問地址通過瀏覽器就可以訪問

如何發佈項目可以查看:Flutter全平臺!遷移現有Flutter項目到WEB端

項目改造完會發布到git並提供鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章