Skip to content

Instantly share code, notes, and snippets.

View juskek's full-sized avatar

Justin juskek

View GitHub Profile
@juskek
juskek / flutter_radar_chart_codeStructure.dart
Last active August 18, 2021 09:09
Code structure for flutter_radar_chart.
class MyApp extends StatelessWidget {
...
Widget build(...) {
return MaterialApp(..., home: MyHomePage());
}
}
class MyHomePage extends StatefulWidget {
...
_MyHomePageState createState() => _MyHomePageState();
@juskek
juskek / flutter_radar_chart_drawing.dart
Last active August 18, 2021 11:10
How the radar chart is drawn in CustomPainter.
void paint(ui.Canvas canvas, ui.Size size) {
final Offset centerPoint = Offset(0, 0);
// math for each branch
final angle = 360 / nodes;
// list of branch end points (x,y)
List<List<double>> points = [];
// for each branch
for (int i = 0; i < nodes; i++) {
final double lineLength = 200;
@juskek
juskek / flutter_radar_chart_animated.dart
Last active August 18, 2021 19:18
Code used to implement animations into CustomPainter.
class RadarChartTransition extends AnimatedWidget {
final AnimationController controller;
final int nodes;
final int segments;
final List<double> data;
final List<String> labels;
// CONSTRUCTOR
RadarChartTransition(
this.controller,
// in pubspec.yaml
flame: ^0.29.4
// in main.dart
import 'package:flutter/material.dart';
import 'package:flame/game.dart'; // for creating Game class
import 'package:flame/gestures.dart'; // for TapDetector mixin
import 'package:flutter/gestures.dart'; // for TapDownDetails class
import 'dart:ui'; // for Canvas and Size
// in console
flutter run --no-sound-null-safety
class CustomGame extends Game {
@override
void render(Canvas canvas) {
// TODO: implement render
}
@override
void update(double t) {
// TODO: implement update
}
}
void main() {
CustomGame game = CustomGame(); // create instance of class
runApp(game.widget); // run game
}
class CustomGame extends Game {
Size? screenSize;
bool hasPressed;
// this will be CustomGame's resize function
@override
void resize (Size size) {
screenSize = size; // assign Game widget size to screenSize
super.resize(size); // call Game's resize function again
}
... // update and render functions
void render(Canvas canvas) {
/// BACKGROUND (BOTTOMMOST LAYER)
Rect bgRect = Rect.fromLTWH(0, 0, screenSize!.width,screenSize!.height);
Paint bgPaint = Paint();
bgPaint.color = Color(0xffbbcc00);
canvas.drawRect(bgRect, bgPaint);
/// TARGET BOX (TOPMOST LAYER)
print(screenSize); // ! target box does not change with screen size
double screenCenterX = screenSize!.width / 2;
double screenCenterY = screenSize!.height / 2;
import 'package:flame/gestures.dart'; // for TapDetector mixin
import 'package:flutter/gestures.dart'; // for TapDownDetails class
class BoxGame extends Game with TapDetector {
bool hasWon = false;
@override
void onTapDown(TapDownDetails tapDownDetails) {
// handle taps here
void main() {
print('Hello World!');
List<int> testList = List.generate(5, (index) => index);
print(testList);
}
// OUTPUT:
// Hello World!
// [0,1,2,3,4]