日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Flutter】开发之功能篇(七)

發(fā)布時間:2024/1/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Flutter】开发之功能篇(七) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

這一篇,我們繼續(xù)說實際開發(fā)中會用到的一些功能。

  • 【Flutter】開發(fā)之目錄

啟動頁

Android啟動頁

在 android/app/src/main/res/drawable/launch_background.xml中已經(jīng)有寫好的啟動頁,只需修改即可

<?xml version="1.0" encoding="utf-8"?> <!-- Modify this file to customize your launch splash screen --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@android:color/white" /><!-- You can insert your own image assets here --><item><bitmapandroid:gravity="center"android:src="@mipmap/ic_launcher" /></item> </layer-list> 復(fù)制代碼

如果有更進(jìn)一步的需求,比如說要在啟動頁加載廣告圖,并延時幾秒的功能,就需要自己實現(xiàn)了。

思路如下

在main方法中返回自己定義的SplashWidgit(名字隨便起),在其中處理自己的邏輯,包括加載廣告圖、設(shè)置延時等,延時結(jié)束后,跳轉(zhuǎn)至真正的主頁即可。

狀態(tài)欄

  • 狀態(tài)欄顏色

1.使用MaterialApp的theme屬性,theme: ThemeData(primaryColor: Colors.green), 請注意:這個是全局的

2.使用AppBar的backgroundColor屬性,backgroundColor: Colors.deepOrange 3.不使用AppBar,由于Flutter默認(rèn)是從屏幕最頂部開始布局,所以,修改狀態(tài)欄顏色簡直太容易,只需要通過MediaQueryData.fromWindow(WidgetsBinding.instance.window).padding.top取得狀態(tài)欄高度即可。

Container(color: Colors.white,child: Column(children: <Widget>[Container(//狀態(tài)欄高度height: MediaQueryData.fromWindow(WidgetsBinding.instance.window).padding.top,color: Colors.blue,),Container(height: 200,color: Colors.brown,),],),); 復(fù)制代碼

甚至你可以修改為漸變色,修改Container的decoration屬性

decoration: BoxDecoration(gradient: LinearGradient(colors: [Colors.cyan, Colors.brown, Colors.deepOrange],)), 復(fù)制代碼

  • 字體顏色

使用AppBar的brightness屬性:Brightness.light為黑色,Brightness.dark為白色;

不使用AppBar時,可以通過嵌套AnnotatedRegion<SystemUiOverlayStyle>來實現(xiàn)。

class StatusDemo extends StatelessWidget {@overrideWidget build(BuildContext context) {return Container(color: Colors.white,child: AnnotatedRegion<SystemUiOverlayStyle>(child: Column(children: <Widget>[Container(height: 200,color: Colors.brown,),],),value: SystemUiOverlayStyle(statusBarColor: Colors.cyan,//有Appbar時,會被覆蓋statusBarIconBrightness: Brightness.light,//底部navigationBar背景顏色systemNavigationBarColor: Colors.white),),);} } 復(fù)制代碼
  • 漸變色

使用AppBar的flexibleSpace,其中漸變方式還可選擇RadialGradient和SweepGradient

appBar: AppBar(title: Text('DemoPage'),flexibleSpace: Container(decoration: BoxDecoration(gradient: LinearGradient(colors: [Colors.cyan, Colors.brown, Colors.deepOrange],)),),) 復(fù)制代碼

返回鍵監(jiān)聽

可以WillPopScope 嵌套,可以用于監(jiān)聽處理返回鍵的邏輯。其實WillPopScope 并不是監(jiān)聽返回按鍵,是當(dāng)前頁面將要被pop時觸發(fā)的回調(diào)。

class _StatusDemoState extends State<StatusDemo> {@overrideWidget build(BuildContext context) {return WillPopScope(child: StatusWidget(),onWillPop: () {///如果返回 return new Future.value(false); popped 就不會被處理///如果返回 return new Future.value(true); popped 就會觸發(fā)///這里可以通過 showDialog 彈出確定框,在返回時通過 Navigator.of(context).pop(true);決定是否退出return showExitDialog(context);},);}Future<bool> showExitDialog(BuildContext context) {return showDialog(context: context,builder: (BuildContext content) {return AlertDialog(title: Text("提示"),content: Text("確認(rèn)退出嗎?"),actions: <Widget>[GestureDetector(child: Container(child: Text('退出'),),onTap: () {Navigator.of(context).pop(true);},),GestureDetector(child: Container(child: Text('取消'),),onTap: () {Navigator.of(context).pop();},),],);});} } 復(fù)制代碼

選取圖片

使用的是Flutter提供的image_picker

首先,在pubspec.yaml文件中添加依賴image_picker: '0.6.0+8'

class TakeDemo extends StatefulWidget {@override_TakeDemoState createState() => _TakeDemoState(); }class _TakeDemoState extends State<TakeDemo> {File _image;@overrideWidget build(BuildContext context) {return Container(color: Colors.white,padding: EdgeInsets.only(top: 20),alignment: AlignmentDirectional.center,child: Column(children: <Widget>[FlatButton(onPressed: () {getImage();},child: Text('從相冊選擇'),),Center(child: _image == null? Text('No image selected.',style: TextStyle(fontSize: 14),): Image.file(_image),),],),);}Future getImage() async {//gallery相冊,camera拍照var image = await ImagePicker.pickImage(source: ImageSource.gallery);setState(() {_image = image;});} } 復(fù)制代碼

你的認(rèn)可,是我堅持更新博客的動力,如果覺得有用,就請點個贊,謝謝

轉(zhuǎn)載于:https://juejin.im/post/5ce76bcbe51d457756536704

總結(jié)

以上是生活随笔為你收集整理的【Flutter】开发之功能篇(七)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。