You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jade_gui/lib/functions/welcome.dart

185 lines
6.1 KiB
Dart

import 'package:flutter/material.dart';
import 'dart:io';
import 'package:qr_flutter/qr_flutter.dart';
import 'package:open_url/open_url.dart';
import 'dart:math';
String getKey(int length, String key, setState) {
if (key == "" || key.length < length) {
const ch = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
Random r = Random();
String key = String.fromCharCodes(
Iterable.generate(length, (_) => ch.codeUnitAt(r.nextInt(ch.length))));
setState(key);
print(key);
return key;
}
print(key);
return key;
}
Widget welcome(
next,
connected,
localIp,
key,
setState,
) {
List ipSplit = localIp.split('.');
String name = "crystal" + ipSplit.last;
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(height: 50),
const Text(
'Welcome to Crystal Linux',
style: TextStyle(
fontSize: 30,
fontWeight: FontWeight.bold,
color: Color.fromARGB(255, 169, 0, 255),
),
),
const SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ElevatedButton(
style: TextButton.styleFrom(
primary: const Color.fromARGB(0, 23, 23, 23),
backgroundColor: const Color.fromARGB(0, 23, 23, 23),
elevation: 0,
padding: EdgeInsets.zero,
),
onPressed: () {
exit(0);
},
child: Container(
width: 500,
height: 500,
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
border: Border.all(color: Colors.black),
color: const Color.fromARGB(255, 30, 30, 30),
boxShadow: const [
BoxShadow(
color: Colors.black,
blurRadius: 2,
offset: Offset(-2, 3),
),
],
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: const [
SizedBox(height: 20),
Text("Try Crystal Linux without installing",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white)),
SizedBox(height: 5),
Image(
image: AssetImage(
'assets/crystal-logo-minimal.png',
),
height: 400,
fit: BoxFit.scaleDown,
),
],
),
),
),
const SizedBox(width: 20),
ElevatedButton(
style: TextButton.styleFrom(
primary: const Color.fromARGB(0, 23, 23, 23),
backgroundColor: const Color.fromARGB(0, 23, 23, 23),
elevation: 0,
padding: EdgeInsets.zero,
),
onPressed: connected ? next : null,
child: Container(
width: 500,
height: 500,
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
border: Border.all(color: Colors.black),
color: const Color.fromARGB(255, 30, 30, 30),
boxShadow: const [
BoxShadow(
color: Colors.black,
blurRadius: 2,
offset: Offset(-2, 3),
),
],
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
const SizedBox(height: 20),
const Text("Start the installation",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.white)),
const SizedBox(height: 5),
const Image(
image: AssetImage(
'assets/jade_logo.png',
),
height: 400,
fit: BoxFit.scaleDown,
),
Visibility(
visible: !connected,
child: const Text(
"You are not connected to the internet!",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
color: Colors.red),
),
),
],
),
),
),
],
),
const SizedBox(height: 20),
const Text(
"Starting Crystal linux without installing will not change anything on your computer,",
style: TextStyle(fontSize: 20, color: Colors.white)),
const Text(
"it's recommended to try that first to see if everything works",
style: TextStyle(fontSize: 20, color: Colors.white)),
const SizedBox(height: 20),
Tooltip(
message: "The qr code to scan for jade_batch, click to find out more.",
child: ElevatedButton(
onPressed: () {
openUrl("https://wiki.getcryst.al/index.php/Jade_batch");
},
style: TextButton.styleFrom(
primary: const Color.fromARGB(0, 23, 23, 23),
backgroundColor: const Color.fromARGB(0, 23, 23, 23),
elevation: 0,
padding: EdgeInsets.zero,
),
child: QrImage(
data: "{\"ip\":\"$localIp\",\"name\":\"$name\",\"key\":\"" +
getKey(32, key, setState) +
"\"}",
embeddedImage: const AssetImage("assets/jade_logo.png"),
foregroundColor: Colors.white,
size: 150.150,
),
),
),
],
);
}