При клике в любом месте экрана цвет фона должен меняться на рандомный
Пишу на Dart c Flutter в Android Studio Мне нужно чтобы при клике в любом месте экрана цвет фона менялся на рандомный. Dart я не знаю вообще, на нем пишу только 1 день, в программирование новичок, если будете писать объяснение к моей проблеме напишите пожалуйста попроще, хочется разобраться. Пока я добился того, что при каждом новом запуске эмулятора у меня рандомный фон. Если знаете статейку на эту тему или что-то для новичков, то прикрепите плиз))) P.S если сможете не сильно менять код то будет супер, в заранее спасибо.
import 'package:flutter/material.dart';
import 'dart:math';
void main() {
runApp(MyApp());
}
var x = Random();
var xx = Color((Random().nextDouble() * 0xFFFFFF).toInt() << 0).withOpacity(1.0);
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext txt) {
return Container(
alignment: Alignment.center,
color: xx,
child: const Text(
"Hey there!!!",
style: TextStyle(fontSize: 50, color: Colors.black),
textDirection: TextDirection.ltr,
),
);
}
}
Ответы (1 шт):
Вы пытаетесь управлять состоянием, значит сразу думаем о StatefulWidget (ссылка по теме). Для удобства генерацию цвета перенесли в функцию generateColor.
class MyApp extends StatefulWidget {
@override
_ MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Color _color;
void generateColor(){
setState(() {
_color = Color((Random().nextDouble() * 0xFFFFFF).toInt() << 0).withOpacity(1.0);
});
}
@override
void initState() {
generateColor();
super.initState();
}
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () => generateColor(),
child: Container(
alignment: Alignment.center,
color: _color,
child: const Text(
"Hey there!!!",
style: TextStyle(fontSize: 50, color: Colors.black),
textDirection: TextDirection.ltr,
),
),
);
}
}