溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Flutter中實(shí)現(xiàn)漂亮的圖表

發(fā)布時(shí)間:2022-03-01 10:36:48 來源:億速云 閱讀:292 作者:小新 欄目:開發(fā)技術(shù)

這篇文章主要介紹了怎么在Flutter中實(shí)現(xiàn)漂亮的圖表,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

設(shè)置 Flutter Charts 項(xiàng)目

首先,我們需要?jiǎng)?chuàng)建一個(gè)新的 Flutter 項(xiàng)目。為此,請(qǐng)確保正確安裝 Flutter SDK 和其他與 Flutter 應(yīng)用程序開發(fā)相關(guān)的要求。如果一切設(shè)置正確,那么為了創(chuàng)建項(xiàng)目,我們可以簡單地在所需的本地目錄中運(yùn)行以下命令:

java:

flutter create chartpost

項(xiàng)目設(shè)置完成后,我們可以在項(xiàng)目目錄中導(dǎo)航并在終端中執(zhí)行以下命令,以在可用的模擬器或?qū)嶋H設(shè)備中運(yùn)行項(xiàng)目:

java:

flutter run

創(chuàng)建主頁 UI

現(xiàn)在,我們將創(chuàng)建一個(gè)主頁Scaffold。為此,我們需要?jiǎng)?chuàng)建一個(gè)名為home_page.dart的文件。在文件中,我們可以使用以下代碼片段中的代碼:

Dart:

import 'package:flutter/material.dart';
import 'package:charts_flutter/flutter.dart' as charts;
class HomePage extends StatelessWidget {
  @override
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.red,
        title: Text("Bitcoin price from Jan to March (2021) "),
      ),
      body: Center(
        child: Text("Hello, Charts!")
        ),
    );
  }
}

在這里,我們返回了一個(gè)簡單的Scaffold小部件,其中包含一個(gè)應(yīng)用欄和一個(gè)來自名為 的無狀態(tài)小部件類的主體HomePage。

現(xiàn)在,我們需要在 main.dart 文件中導(dǎo)入這個(gè)無狀態(tài)小部件類,并將其分配給小部件的home選項(xiàng),MaterialApp如下面的代碼片段所示:

Dart:

import 'package:chartpost/home.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: HomePage(),
    );
  }
}

現(xiàn)在,如果我們重新運(yùn)行應(yīng)用程序,我們將在模擬器屏幕中得到以下結(jié)果:

怎么在Flutter中實(shí)現(xiàn)漂亮的圖表

添加 charts_flutter 插件

由于我們要向我們的應(yīng)用程序添加圖表,我們將使用名為charts_flutter的包。這個(gè)包是一個(gè)用 Dart 原生編寫的 Material Design 數(shù)據(jù)可視化庫。它為數(shù)據(jù)可視化提供了廣泛的圖表,這些圖表既輕巧又易于配置?,F(xiàn)在為了將這個(gè)庫安裝到我們的 flutter 項(xiàng)目中,我們需要按照下面的代碼片段中的指示將該charts_flutter: ^0.8.1行添加到我們的pubspec.yaml文件中:

java:

dependencies:
  flutter:
    sdk: flutter
  charts_flutter: ^0.8.1

安裝成功后,我們就可以使用這個(gè)包提供的圖表小部件了。

Flutter 中的條形圖

在本節(jié)中,我們將學(xué)習(xí)如何向 Flutter 應(yīng)用程序添加條形圖。首先,我們將創(chuàng)建一個(gè)模型文件,該文件定義要在條形圖中顯示的數(shù)據(jù)的屬性。在這里,我們將命名文件bitcoin_price_series.dart。在里面,我們將定義一個(gè)名為的類BitcoinPriceSeries,它接受三個(gè)參數(shù):月份、價(jià)格和顏色。整體代碼實(shí)現(xiàn)如下面的代碼片段所示:

Dart:

import 'package:charts_flutter/flutter.dart' as charts;
import 'package:chartpost/bitcoin_price_series.dart';
import 'package:flutter/material.dart';
class BitcoinPriceChart extends StatelessWidget {
  final List<BitcoinPriceSeries> data;
  BitcoinPriceChart({@required this.data});
  @override
  Widget build(BuildContext context) {
    List<charts.Series<BitcoinPriceSeries, String>> series = [
      charts.Series(
          id: "Price",
          data: data,
          domainFn: (BitcoinPriceSeries series, _) => series.month,
          measureFn: (BitcoinPriceSeries series, _) => series.price,
          colorFn: (BitcoinPriceSeries series, _) => series.barColor)
    ];

現(xiàn)在,我們需要?jiǎng)?chuàng)建一個(gè)名為bitcoin_price_chart.dart的新文件來定義圖表結(jié)構(gòu)。在這里,我們將實(shí)現(xiàn)一個(gè)名為的無狀態(tài)小部件BitcoinPriceChart,它返回帶有系列值的條形圖。庫Series提供的配置 charts幫助我們定義每個(gè)系列的數(shù)據(jù)。下面的代碼片段提供了如何配置系列值的確切實(shí)現(xiàn):

Dart:

return Container(
      height: 400,
      padding: EdgeInsets.all(20),
      child: Card(
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: <Widget>[
              Text(
                "Bitcoin price from Jan to March (2021) ",
              ),
              Expanded(
                child:( charts.BarChart(series, animate: true)),               
              )
            ],
          ),
        ),
      ),
    );
  }
}

現(xiàn)在我們有了保存條形圖系列數(shù)據(jù)的列表數(shù)據(jù),我們可以將它應(yīng)用到 UI 模板?,F(xiàn)在,我們將返回一個(gè)Container小部件,其中Card小部件作為子部件,它包含BarChart以列表和animate布爾值作為參數(shù)的小部件。下面的代碼片段提供了整體實(shí)現(xiàn):

Dart: 

import 'package:flutter/material.dart';
import 'package:chartpost/bitcoin_price_series.dart';
import 'package:chartpost/bitcoin_price_chart.dart';
import 'package:charts_flutter/flutter.dart' as charts;

現(xiàn)在,我們要將條形圖添加到我們的主頁。為此,我們需要將BitcoinPriceChart無狀態(tài)類小部件導(dǎo)入 home_page.dart 文件,如下面的代碼片段所示:

 import 'package:flutter/material.dart'; import 'package:chartpost/bitcoin_price_series.dart'; import 'package:chartpost/bitcoin_price_chart.dart'; import 'package:charts_flutter/flutter.dart' as charts;

導(dǎo)入后,我們可以根據(jù)BitcoinPriceSeries模型定義存儲(chǔ)數(shù)據(jù)的列表,如下面的代碼片段所示:

Dart:

@override
  Widget build(BuildContext context) {
     final List<BitcoinPriceSeries> data = [
    BitcoinPriceSeries(
      month: "Jan",
      price: 50000,
      barColor: charts.ColorUtil.fromDartColor(Colors.red),
    ),
    BitcoinPriceSeries(
      month: "Feb",
      price: 60000,
      barColor: charts.ColorUtil.fromDartColor(Colors.blue),
    ),
    BitcoinPriceSeries(
      month: "March",
      price: 58000,
      barColor: charts.ColorUtil.fromDartColor(Colors.green),
    ),
  ];

最后,我們需要添加的BitcoinPriceChart窗口小部件到body的Scaffold在主頁如下圖所示的代碼片段繞過所需的列表數(shù)據(jù):

Dart:

return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.red,
        title: Text("Bitcoin price from Jan to March (2021) "),
      ),
      body: Center(
        child: BitcoinPriceChart(
      data: data,
    )
        ),
    );
  }

因此,我們將在主屏幕上獲得條形圖,如下面的模擬器屏幕截圖所示:

怎么在Flutter中實(shí)現(xiàn)漂亮的圖表

因此,我們已經(jīng)成功地將條形圖添加到我們的 Flutter 應(yīng)用程序中。

Flutter 中的餅圖

現(xiàn)在我們知道如何為條形圖配置數(shù)據(jù),我們也可以使用完全相同的系列列表數(shù)據(jù)輕松添加餅圖。條形圖數(shù)據(jù)系列和餅圖數(shù)據(jù)系列共享相同的數(shù)據(jù)格式。因此,我們可以簡單地使用提供系列列表和動(dòng)畫布爾參數(shù)PieChart的charts庫提供的小部件添加餅圖,如下面的代碼片段所示:

Dart: 

Expanded( 
  child:( charts.BarChart(series, animate: true)),
 ), Expanded(
    child:( charts.PieChart(series, animate: true)),
  )

請(qǐng)注意,此PieChart小部件直接添加到小部件內(nèi)部小部件下方的bitcoin_price_chart.dart文件中。BarChartColumn

怎么在Flutter中實(shí)現(xiàn)漂亮的圖表

因此,我們也成功地將餅圖添加到我們的 Flutter 應(yīng)用程序中。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“怎么在Flutter中實(shí)現(xiàn)漂亮的圖表”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI