Skip to content
Snippets Groups Projects
Select Git revision
  • 35bc9d608abf78055837d51a940170c12f92916b
  • master default protected
  • 42-add-allowed-categories-in-settings-page
  • 44-improve-app-metadata
  • 23-add-tip-response-on-clic-on-button
  • Release_1.11.1_56 protected
  • Release_1.11.0_55 protected
  • Release_1.10.2_54 protected
  • Release_1.10.1_53 protected
  • Release_1.10.0_52 protected
  • Release_1.9.0_51 protected
  • Release_1.8.0_50 protected
  • Release_1.7.0_49 protected
  • Release_1.6.2_48 protected
  • Release_1.6.1_47 protected
  • Release_1.6.0_46 protected
  • Release_1.5.1_45 protected
  • Release_1.5.0_44 protected
  • Release_1.4.1_43 protected
  • Release_1.4.0_42 protected
  • Release_1.3.1_41 protected
  • Release_1.3.0_40 protected
  • Release_1.2.33_39 protected
  • Release_1.2.32_38 protected
  • Release_1.2.31_37 protected
25 results

bottom_nav_bar.dart

Blame
  • random_pick.dart 3.23 KiB
    import 'dart:async';
    import 'package:html/parser.dart';
    import 'package:html/dom.dart';
    import 'package:http/http.dart' as http;
    import 'dart:convert';
    import 'package:flutter/services.dart';
    import 'dart:math' show Random;
    import 'package:diacritic/diacritic.dart';
    
    import '../words/list_french_words.dart';
    
    class RandomPick {
      final String level;
      RandomPick(this.level);
    
      String _url = '';
      String _word = '';
      String _clue = '';
      final random = Random();
    
      init() async {
        switch (level) {
          case 'Thèmes':
            await wordFromLocal();
            break;
          case 'Avancé':
            _url =
                'https://www.palabrasaleatorias.com/mots-aleatoires.php?fs=1&fs2=0&Submit=Nouveau+mot';
            await wordFromWeb(_url);
            break;
          case 'Junior':
            _url =
                'https://www.palabrasaleatorias.com/mots-aleatoires.php?fs=1&fs2=1&Submit=Nouveau+mot';
            await wordFromWeb(_url);
            break;
          case 'Expert':
            await wordFromPackage();
            break;
          default:
            await wordFromLocal();
        }
      }
    
      Future<void> wordFromWeb(String url) async {
        try {
          var response = await http.Client().get(Uri.parse(url));
          if (response.statusCode == 200) {
            var html = parse(utf8.decode(response.bodyBytes));
            Element element = html.getElementsByTagName('div').last;
            String word = _validate(element.text);
            if (word == '') {
              throw Exception();
            }
            _word = word;
          } else {
            throw Exception();
          }
        } catch (e) {
          _word = '';
        }
      }
    
      String _validate(String word) {
        String wordToValidate = word.trim();
        if (wordToValidate.contains(' ')) {
          return '';
        }
        wordToValidate = removeDiacritics(wordToValidate);
        wordToValidate = wordToValidate.toUpperCase();
        wordToValidate = wordToValidate.replaceAll(RegExp('[0-9]'), '');