Flutter項目常用庫

  • Toast

1.添加依賴

  toast: ^0.1.3

然后

import 'package:toast/toast.dart';

調(diào)用toast:

Toast.show("", context, duration: Toast.LENGTH_SHORT);
  • 圖片加載緩存cached_network_image

1.添加依賴

  cached_network_image: ^2.3.3

2.使用控件

CachedNetworkImage(
                  imageUrl: "",
                  placeholder: (context, url) =>  CircularProgressIndicator(),
                  errorWidget: (context, url, error) => Icon(Icons.error),
                )
  • 添加WebView加載網(wǎng)頁

Android里面有的WebView,F(xiàn)lutter里面也得有吱晒。
1.添加依賴

dependencies:
    flutter_webview_plugin: ^0.2.1+2

2.使用前引入

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';

class MyWebView extends StatefulWidget {

  _MyWebView createState() => _MyWebView();

}

class _MyWebView extends State {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: WebviewScaffold(url: "https://www.baidu.com",
            // 允許網(wǎng)頁縮放
            withZoom: true,
            // 允許LocalStorage
            withLocalStorage: true,
            withJavascript: true),
      )
    );
  }

}
  • 刷新加載庫 flutter_easyrefresh

顧名思義,EasyRefresh非常簡單上手就能在Flutter應(yīng)用上實現(xiàn)下拉刷新以及上拉加載操作,它支持幾乎所有的Flutter控件。它與Android里面的庫SmartRefreshLayout非常像,刷新加載風(fēng)格可以div觉阅。

1.添加依賴

flutter_easyrefresh: ^2.1.0

2.屬性介紹:

 EasyRefresh(
  // 是否開啟控制結(jié)束加載
  enableControlFinishLoad: false,
  // 控制器    
  controller: _controller,
  // 自定義頂部上啦加載
  footer: ClassicalFooter(
    bgColor: Colors.white,
    //  更多信息文字顏色
    infoColor: KColor.refreshTextColor,
    // 字體顏色
    textColor: KColor.refreshTextColor,
    // 加載失敗時顯示的文字
    loadText: KString.loadFailedText,
    // 沒有更多時顯示的文字
    noMoreText: '',
    // 是否顯示提示信息
    showInfo: false,
    // 正在加載時的文字
    loadingText: KString.loading,
    // 準備加載時顯示的文字
    loadReadyText: KString.loadReadyText,
    // 加載完成顯示的文字
    loadedText: KString.loadedText,
  )
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';

//刷新加載控件封裝
class MyEasyRefresh extends StatelessWidget {
  EasyRefreshController easyRefreshController;
  Widget listView;

  MyEasyRefresh(this.listView) {
    easyRefreshController = EasyRefreshController();
  }

  @override
  Widget build(BuildContext context) {
    return EasyRefresh(
        controller: easyRefreshController,
        enableControlFinishRefresh: false,
        enableControlFinishLoad: false,
        header: ClassicalHeader(
            textColor: Colors.black87,
            refreshText: "往下拉稻爬,往下拉",
            refreshedText: "刷新完成",
            refreshingText: "正在刷新",
            refreshReadyText: "快放手"
        ),
        footer: ClassicalFooter(
            textColor: Colors.black87,
            loadText: "往上拉嗜闻,往上拉",
            loadedText: "加載完成",
            loadingText: "正在加載",
            loadReadyText: "快放手"
        ),
        onRefresh: () async {
          print("刷新完成");
        },
        onLoad: () async {
          print("加載完成");
        },
        child: listView);
  }

}
  • 自動輪播控件flutter_swiper

1.引入庫

flutter_swiper: ^1.1.6

2.使用示例:

Swiper(
            itemBuilder: (BuildContext context,int index){
              return new Image.network("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1603442938191&di=6d134b40bcc1e448fa4654faaebdf827&imgtype=0&src=http%3A%2F%2Fimg.mp.itc.cn%2Fupload%2F20170312%2F325af66b3351496783fd3cb4750f6759_th.jpg",
                  fit: BoxFit.fill);
            },
            itemCount: 3,
            pagination: SwiperPagination(),
            controller: new SwiperController(),
          )
  • 視頻播放器videoPlayer

1.引入庫

  video_player: ^0.11.1+2

2.使用示例:

import 'package:video_player/video_player.dart';
import 'package:flutter/material.dart';

void main() => runApp(VideoApp());

class VideoApp extends StatefulWidget {
  @override
  _VideoAppState createState() => _VideoAppState();
}

class _VideoAppState extends State<VideoApp> {
  VideoPlayerController _controller;

  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.network(
        'http://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_20mb.mp4')
      ..initialize().then((_) {
        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
        setState(() {});
      });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Video Demo',
      home: Scaffold(
        body: Center(
          child: _controller.value.initialized
              ? AspectRatio(
                  aspectRatio: _controller.value.aspectRatio,
                  child: VideoPlayer(_controller),
                )
              : Container(),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            setState(() {
              _controller.value.isPlaying
                  ? _controller.pause()
                  : _controller.play();
            });
          },
          child: Icon(
            _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
          ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }
}
  • 網(wǎng)絡(luò)請求庫dio

1.引入庫

dio: ^3.0.10

2.使用示例:
簡單用法:

    Response response;
    Dio dio = new Dio();
    response = await dio.get("");
    print(response.data.toString());

post傳參請求:

FormData formData = new FormData.fromMap({
    "name": "wendux",
    "age": 25,
  });
response = await dio.post("", data: formData);

參考:
Flutter常用的庫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市桅锄,隨后出現(xiàn)的幾起案子琉雳,更是在濱河造成了極大的恐慌,老刑警劉巖友瘤,帶你破解...
    沈念sama閱讀 212,294評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翠肘,死亡現(xiàn)場離奇詭異,居然都是意外死亡辫秧,警方通過查閱死者的電腦和手機束倍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,493評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盟戏,“玉大人绪妹,你說我怎么就攤上這事∈辆浚” “怎么了喂急?”我有些...
    開封第一講書人閱讀 157,790評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長笛求。 經(jīng)常有香客問我廊移,道長糕簿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,595評論 1 284
  • 正文 為了忘掉前任狡孔,我火速辦了婚禮懂诗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘苗膝。我一直安慰自己殃恒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,718評論 6 386
  • 文/花漫 我一把揭開白布辱揭。 她就那樣靜靜地躺著离唐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪问窃。 梳的紋絲不亂的頭發(fā)上亥鬓,一...
    開封第一講書人閱讀 49,906評論 1 290
  • 那天,我揣著相機與錄音域庇,去河邊找鬼嵌戈。 笑死,一個胖子當(dāng)著我的面吹牛听皿,可吹牛的內(nèi)容都是我干的熟呛。 我是一名探鬼主播,決...
    沈念sama閱讀 39,053評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼尉姨,長吁一口氣:“原來是場噩夢啊……” “哼庵朝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起又厉,我...
    開封第一講書人閱讀 37,797評論 0 268
  • 序言:老撾萬榮一對情侶失蹤偿短,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后馋没,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,250評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡降传,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,570評論 2 327
  • 正文 我和宋清朗相戀三年篷朵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婆排。...
    茶點故事閱讀 38,711評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡声旺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出段只,到底是詐尸還是另有隱情腮猖,我是刑警寧澤,帶...
    沈念sama閱讀 34,388評論 4 332
  • 正文 年R本政府宣布赞枕,位于F島的核電站澈缺,受9級特大地震影響坪创,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姐赡,卻給世界環(huán)境...
    茶點故事閱讀 40,018評論 3 316
  • 文/蒙蒙 一莱预、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧项滑,春花似錦依沮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,796評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至州疾,卻和暖如春辜限,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背孝治。 一陣腳步聲響...
    開封第一講書人閱讀 32,023評論 1 266
  • 我被黑心中介騙來泰國打工列粪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谈飒。 一個月前我還...
    沈念sama閱讀 46,461評論 2 360
  • 正文 我出身青樓岂座,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杭措。 傳聞我的和親對象是個殘疾皇子费什,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,595評論 2 350