@mezigar

Почему крашится приложение flutter?

Пытаюсь сделать так, чтобы цвет appbar и container рандомно менялся при переключении switch. Использую провайдер, но приложение крашится, ничего толкового я не нагуглил
import 'package:flutter/material.dart';

import 'package:provider/provider.dart';
import 'dart:math';

void main() => runApp(MyApp());

class SwitchProvider extends ChangeNotifier {
  bool is_switched = false;

  bool _switch() {
    is_switched = !is_switched;
    notifyListeners();
    return is_switched;
  }
}

class MyApp extends StatelessWidget {
  bool is_changed = true;

  @override
  Widget build(BuildContext context) {
    SwitchProvider _state = Provider.of<SwitchProvider>(context);
    return MaterialApp(
      home: ChangeNotifierProvider<SwitchProvider>.value(
        value: SwitchProvider(),
        child: Scaffold(
          appBar: AppBar(
            centerTitle: true,
            title: Text(
              "Homework Provider",
            ),
            backgroundColor: Color(
              generateRandomHexColor(),
            ),
          ),
          body: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Container(
                color: Color(
                  generateRandomHexColor(),
                ),
                height: 200,
                width: 200,
              ),
              Consumer(
                builder: (context, value, child) => Switch(
                  value: is_changed,
                  onChanged: (is_changed) => _state.is_switched,
                  // onChanged: (bool is_changed) => !is_changed,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Random random = new Random();

int generateRandomHexColor() {
  int length = 6;
  String chars = '0123456789ABCDEF';
  String hex = '';
  while (length-- > 0) hex += chars[(random.nextInt(16)) | 0];
  print(hex);
  return int.parse("0xFF" + hex);
}
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы