🏆作者簡介,黑夜開發者,CSDN領軍人物,全棧領域優質創作者✌,CSDN博客專家,阿裏雲社區專家博主,2023年6月CSDN上海賽道top4。
🏆數年電商行業從業經驗,曆任核心研發工程師,項目技術負責人。
🎉歡迎 👍點贊✍評論⭐收藏
文章目錄
- 🚀一、背景
- 🚀二、開始開發多端應用
- 🔎2.1 安裝Flutter
- 🔎2.2 創建Flutter項目
- 🔎2.3 編寫共享代碼
- 🔎2.4 編寫平台特定代碼
- 🔎2.5 運行應用
- 🚀三、Flutter書籍推薦
- 🔎3.1 書籍介紹
- 🔎3.2 核心内容
- 🔎3.3 特色
- 🔎3.4 主要内容截圖
- 🔎3.5 如何領書
- 🚀四、總結
🚀一、背景
在移動應用開發中,爲了在不同平台上提供一緻的用戶體驗,我們通常需要編寫不同的代碼來适應不同的操作系統和設備。但是有了Flutter,我們可以使用一套代碼構建多個平台的應用,包括iOS、Android、Web和桌面。
本文将介紹如何使用Flutter來構建一套代碼适配多端應用,并給出具體的步驟和示例代碼。
🚀二、開始開發多端應用
🔎2.1 安裝Flutter
首先,需要在您的計算機上安裝Flutter。請按照Flutter官方文檔的指引進行安裝,并确保配置好Flutter環境變量。
🔎2.2 創建Flutter項目
使用命令行工具或者您喜歡的集成開發環境(IDE),創建一個新的Flutter項目。
$ flutter create multiplatform_app
這将在您的當前目錄下創建一個名爲multiplatform_app的Flutter項目。
🔎2.3 編寫共享代碼
在Flutter中,我們可以使用Dart語言編寫共享代碼,包括界面布局、業務邏輯等。創建一個名爲shared的文件夾,并在其中創建一個名爲shared.dart的文件。
該文件将包含我們要共享的代碼。例如,以下是一個簡單的計數器應用的示例:
class Counter { int _count = 0; int get count => _count; void increment() { _count++; } void decrement() { _count--; } }
🔎2.4 編寫平台特定代碼
接下來,我們需要爲每個目标平台編寫特定的代碼。在lib文件夾下,爲不同的平台創建對應的文件夾,例如ios、android、web和desktop。
在各自的文件夾中,創建一個名爲main.dart的文件,并編寫平台特定的代碼。以下是一個簡單的示例:
// ios/main.dart import 'package:flutter/cupertino.dart'; import 'package:multiplatform_app/shared/shared.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { final Counter counter = Counter(); @override Widget build(BuildContext context) { return CupertinoApp( home: CupertinoPageScaffold( navigationBar: CupertinoNavigationBar( middle: Text('Counter App'), ), child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('Count: ${counter.count}'), SizedBox(height: 16), CupertinoButton( child: Text('Increment'), onPressed: () => counter.increment(), ), SizedBox(height: 8), CupertinoButton( child: Text('Decrement'), onPressed: () => counter.decrement(), ), ], ), ), ), ); } }
// android/main.dart import 'package:flutter/material.dart'; import 'package:multiplatform_app/shared/shared.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { final Counter counter = Counter(); @override Widget build(BuildContext context) { return MaterialApp( title: 'Counter App', theme: ThemeData(primarySwatch: Colors.blue), home: Scaffold( appBar: AppBar(title: Text('Counter App')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('Count: ${counter.count}'), SizedBox(height: 16), ElevatedButton( child: Text('Increment'), onPressed: () => counter.increment(), ), SizedBox(height: 8), ElevatedButton( child: Text('Decrement'), onPressed: () => counter.decrement(), ), ], ), ), ), ); } }
// web/main.dart import 'package:flutter/material.dart'; import 'package:multiplatform_app/shared/shared.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { final Counter counter = Counter(); @override Widget build(BuildContext context) { return MaterialApp( title: 'Counter App', theme: ThemeData(primarySwatch: Colors.blue), home: Scaffold( appBar: AppBar(title: Text('Counter App')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('Count: ${counter.count}'), SizedBox(height: 16), ElevatedButton( child: Text('Increment'), onPressed: () => counter.increment(), ), SizedBox(height: 8), ElevatedButton( child: Text('Decrement'), onPressed: () => counter.decrement(), ), ], ), ), ), ); } }
// desktop/main.dart import 'package:flutter/material.dart'; import 'package:multiplatform_app/shared/shared.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { final Counter counter = Counter(); @override Widget build(BuildContext context) { return MaterialApp( title: 'Counter App', theme: ThemeData(primarySwatch: Colors.blue), home: Scaffold( appBar: AppBar(title: Text('Counter App')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('Count: ${counter.count}'), SizedBox(height: 16), ElevatedButton( child: Text('Increment'), onPressed: () => counter.increment(), ), SizedBox(height: 8), ElevatedButton( child: Text('Decrement'), onPressed: () => counter.decrement(), ), ], ), ), ), ); } }
根據不同平台的特點,我們可以使用不同的UI組件和布局來創建界面。
🔎2.5 運行應用
最後,使用命令行工具或者IDE來運行應用程序。根據你選擇的平台,執行相應的命令即可。
# 運行iOS應用 $ flutter run -d ios # 運行Android應用 $ flutter run -d android # 運行Web應用 $ flutter run -d chrome # 運行桌面應用 $ flutter run -d windows
這樣,您就可以在不同的平台上看到同一套代碼構建的應用程序了!
總結:
- 安裝Flutter并配置環境變量
- 創建Flutter項目
- 編寫共享代碼
- 爲不同的平台編寫特定代碼
- 運行應用程序
🚀三、Flutter書籍推薦
🔎3.1 書籍介紹
從零基礎到精通Flutter開發
本書由淺入深地帶領讀者進入Flutter開發的世界,從Flutter的起源講起,逐步深入Flutter進階實戰,并在最後配合項目實戰案例,讓讀者不但可以系統地學習Flutter編程的相關知識,而且還能對Flutter應用開發有更爲深入的理解
🔎3.2 核心内容
一套代碼,構建多平台精美的應用:本書從真實的開發場景出發,完整地講解了Flutter框架,幫助你快速掌握Flutter的基礎知識和開發技巧,助你在移動應用開發領域取得成功!
🔎3.3 特色
經典:凝聚作者6年App開發經驗,獨家奉獻開發技巧。
深入:從入門、進階到實戰開發,由淺入深,詳細闡述Flutter開發技術。
全面:幾乎涵蓋了Flutter開發涉及的所有核心知識點,體現了從零基礎到精通學習的全過程。
獨立:各章内容相對獨立,可以按照順序閱讀,也可以通過目錄閱讀需要的内容。
🔎3.4 主要内容截圖
🔎3.5 如何領書
————————————————
本次本篇文章送書 🔥1-2本 評論區抽1-2位小夥伴送書
活動時間:截止到 2023-12-10 20:00:00
抽獎方式:利用網絡公開的在線抽獎工具進行抽獎
參與方式:關注、點贊、收藏,從評論區随機抽選小夥伴。
根據文章閱讀量的多少來安排送書的本數。
————————————————
🔥 注:活動結束後,會私信中獎粉絲的,各位注意查看私信哦!
小夥伴也可以訪問鏈接進行自主購買哦~
當當購買鏈接直達,京東購買鏈接
🚀四、總結
今天主要講解了Flutter開發實踐用一套代碼構建多端精美應用的構建流程,初步認識了Flutter以及它解決了什麽問題,最後還給大家推薦了書籍。希望本文對您有所幫助。
今天的内容就到這裏,我們下次見。