fl_chart 0.20.0-nullsafety1 fl_chart: ^0.20.0-nullsafety1 copied to clipboard
A powerful Flutter chart library, currently supporting Line Chart, Bar Chart and Pie Chart.
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'bar_chart/bar_chart_page.dart';
import 'bar_chart/bar_chart_page2.dart';
import 'line_chart/line_chart_page.dart';
import 'line_chart/line_chart_page2.dart';
import 'line_chart/line_chart_page3.dart';
import 'line_chart/line_chart_page4.dart';
import 'pie_chart/pie_chart_page.dart';
import 'scatter_chart/scatter_chart_page.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'FlChart Demo',
showPerformanceOverlay: false,
theme: ThemeData(
primaryColor: const Color(0xff262545),
primaryColorDark: const Color(0xff201f39),
brightness: Brightness.dark,
),
home: const MyHomePage(title: 'fl_chart'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _currentPage = 0;
final _controller = PageController(initialPage: 0);
final _duration = Duration(milliseconds: 300);
final _curve = Curves.easeInOutCubic;
final _pages = [
LineChartPage(),
BarChartPage(),
BarChartPage2(),
PieChartPage(),
LineChartPage2(),
LineChartPage3(),
LineChartPage4(),
ScatterChartPage(),
];
@override
void initState() {
_controller.addListener(() {
setState(() {
_currentPage = _controller.page.round();
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: PageView(
physics: kIsWeb ? NeverScrollableScrollPhysics() : AlwaysScrollableScrollPhysics(),
controller: _controller,
children: _pages,
),
),
bottomNavigationBar: kIsWeb
? Container(
padding: EdgeInsets.all(16),
color: Colors.transparent,
child: Row(
mainAxisSize: MainAxisSize.max,
children: [
Visibility(
visible: _currentPage != 0,
child: FloatingActionButton(
onPressed: () => _controller.previousPage(duration: _duration, curve: _curve),
child: Icon(Icons.chevron_left_rounded),
),
),
Spacer(),
Visibility(
visible: _currentPage != _pages.length - 1,
child: FloatingActionButton(
onPressed: () => _controller.nextPage(duration: _duration, curve: _curve),
child: Icon(Icons.chevron_right_rounded),
),
),
],
),
)
: null,
);
}
}