Skip to content
Snippets Groups Projects
Commit f0050cdd authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Merge branch '4-draw-a-fixed-graph' into 'master'

Resolve "Draw a (fixed) graph"

Closes #4

See merge request !26
parents 3453d640 a1f0b19d
No related branches found
Tags Release_1.0.18_19
1 merge request!26Resolve "Draw a (fixed) graph"
Pipeline #3853 passed
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
app.versionName=1.0.17
app.versionCode=18
app.versionName=1.0.18
app.versionCode=19
assets/menu/graph.png

16.2 KiB

......@@ -26,6 +26,7 @@ ICON_SIZE=192
# Menu images
AVAILABLE_MENU_IMAGES="
demo
graph
"
#######################################################
......
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 100 100" version="1.1" viewBox="0 0 102 102" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><defs><radialGradient id="radialGradient876" cx="51" cy="51" r="51" gradientUnits="userSpaceOnUse"><stop stop-color="#534fbc" offset=".53489"/><stop stop-color="#d5e834" offset="1"/></radialGradient></defs><rect x="1" y="1" width="100" height="100" ry="0" fill="url(#radialGradient876)" stroke="#000" stroke-width="2"/><path transform="translate(12.795 -12.378)" d="m41.231 66.406c1.2372-1.351 2.4315 1.0012 2.2454 2.0564-0.50427 2.8593-4.1113 3.4739-6.3581 2.4345-4.0191-1.8593-4.7114-7.1159-2.6236-10.66 3.0639-5.201 10.16-5.9833 14.962-2.8126 6.3992 4.226 7.2698 13.219 3.0017 19.263-5.371 7.6061-16.285 8.5638-23.565 3.1908-8.8179-6.5075-9.8622-19.354-3.3798-27.867 7.6392-10.033 22.425-11.163 32.169-3.5689 11.249 8.768 12.466 25.498 3.758 36.471-9.8949 12.468-28.572 13.77-40.772 3.947-13.687-11.02-15.076-31.647-4.1361-45.074 12.145-14.906 34.723-16.381 49.376-4.3252" fill="none" stroke="#000" stroke-linecap="round" stroke-width="6"/></svg>
......@@ -4,6 +4,7 @@ import 'package:provider/provider.dart';
import 'package:random/provider/data.dart';
import 'package:random/screens/demo.dart';
import 'package:random/screens/graph.dart';
import 'package:random/screens/home.dart';
void main() {
......@@ -19,7 +20,7 @@ class MyApp extends StatelessWidget {
create: (BuildContext context) => Data(),
child: Consumer<Data>(builder: (context, data, child) {
return MaterialApp(
title: 'Jeux de mots et lettres',
title: 'Random application - testing stuff...',
theme: ThemeData(
primarySwatch: Colors.blue,
),
......@@ -32,6 +33,12 @@ class MyApp extends StatelessWidget {
builder: (context) => DemoPage(),
);
}
case '/graph':
{
return MaterialPageRoute(
builder: (context) => GraphPage(),
);
}
default:
{
......
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:random/provider/data.dart';
class GraphPainter extends CustomPainter {
const GraphPainter(this.myProvider);
final Data myProvider;
double random(double max) {
return Random().nextDouble() * max;
}
@override
void paint(Canvas canvas, Size size) {
// Fill background
final paintBackground = Paint();
paintBackground.color = Colors.black;
paintBackground.style = PaintingStyle.fill;
final Rect rectBackground = Rect.fromPoints(Offset(0, 0), Offset(size.width, size.height));
canvas.drawRect(rectBackground, paintBackground);
// Draw some lines
final paintLine = Paint();
paintLine.color = Colors.red;
paintLine.style = PaintingStyle.fill;
int linesCount = 500;
for (int i = 0; i < linesCount; i++) {
Offset lineStart = Offset(random(size.width), random(size.height));
Offset lineStop = Offset(random(size.width), random(size.height));
canvas.drawLine(lineStart, lineStop, paintLine);
}
}
@override
bool shouldRepaint(CustomPainter oldDelegate) {
return false;
}
}
......@@ -4,6 +4,8 @@ import 'package:provider/provider.dart';
import 'package:random/provider/data.dart';
class DemoPage extends StatelessWidget {
static String code = 'demo';
@override
Widget build(BuildContext context) {
Data myProvider = Provider.of<Data>(context);
......
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:random/painters/graph_painter.dart';
import 'package:random/provider/data.dart';
class GraphPage extends StatelessWidget {
static String code = 'graph';
@override
Widget build(BuildContext context) {
Data myProvider = Provider.of<Data>(context);
double boardWidth = MediaQuery.of(context).size.width;
Scaffold pageContent = Scaffold(
appBar: AppBar(
elevation: 0,
actions: <Widget>[],
),
backgroundColor: Colors.blue,
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Center(
child: GestureDetector(
onTapUp: (details) {
double xTap = details.localPosition.dx;
double yTap = details.localPosition.dy;
print('[' + xTap.toString() + ',' + yTap.toString() + ']');
},
child: Container(
margin: EdgeInsets.all(4),
padding: EdgeInsets.all(4),
child: CustomPaint(
size: Size(boardWidth, boardWidth),
willChange: false,
painter: GraphPainter(myProvider),
isComplex: true,
),
),
),
),
],
),
),
);
return SizedBox.expand(
child: Container(
child: FittedBox(
fit: BoxFit.contain,
alignment: Alignment.center,
child: SizedBox(
height: (MediaQuery.of(context).size.height),
width: (MediaQuery.of(context).size.width),
child: pageContent,
),
),
),
);
}
}
......@@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:random/provider/data.dart';
import 'package:random/screens/demo.dart';
import 'package:random/screens/graph.dart';
class Home extends StatelessWidget {
static const String id = 'home';
......@@ -56,7 +58,8 @@ class Home extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
_buildMenuItemContainer('demo', Colors.pink),
_buildMenuItemContainer(DemoPage.code, Colors.pink),
_buildMenuItemContainer(GraphPage.code, Colors.lightBlue),
],
),
),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment