mirror of
https://github.com/Ujwal223/FocusGram.git
synced 2026-04-03 18:02:20 +02:00
fixed external redirect on instagram m's settings. fixed bug where it opened app session instead of reel session. hided vertical scroll bar. removed custom bottom bar. fixed bug where it wasnt showing searchbar in /explore. FIXED/ADDED/IMPROVED A LOT MORE THINGS. Ready for Release
642 lines
10 KiB
Dart
642 lines
10 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_windowmanager_plus/flutter_windowmanager_plus.dart';
|
|
|
|
class DisciplineChallenge {
|
|
static const List<String> _words = [
|
|
'discipline',
|
|
'focus',
|
|
'growth',
|
|
'mindful',
|
|
'purpose',
|
|
'control',
|
|
'strength',
|
|
'clarity',
|
|
'vision',
|
|
'action',
|
|
'habit',
|
|
'success',
|
|
'power',
|
|
'balance',
|
|
'wisdom',
|
|
'patience',
|
|
'intent',
|
|
'choice',
|
|
'calm',
|
|
'peace',
|
|
'truth',
|
|
'grit',
|
|
'work',
|
|
'time',
|
|
'life',
|
|
'soul',
|
|
'mind',
|
|
'body',
|
|
'heart',
|
|
'will',
|
|
'hope',
|
|
'love',
|
|
'kind',
|
|
'help',
|
|
'give',
|
|
'take',
|
|
'stay',
|
|
'move',
|
|
'jump',
|
|
'run',
|
|
'walk',
|
|
'talk',
|
|
'sing',
|
|
'play',
|
|
'read',
|
|
'write',
|
|
'draw',
|
|
'cook',
|
|
'bake',
|
|
'farm',
|
|
'fish',
|
|
'hunt',
|
|
'grow',
|
|
'learn',
|
|
'teach',
|
|
'lead',
|
|
'follow',
|
|
'build',
|
|
'fix',
|
|
'save',
|
|
'spend',
|
|
'win',
|
|
'lose',
|
|
'try',
|
|
'fail',
|
|
'rise',
|
|
'fall',
|
|
'start',
|
|
'stop',
|
|
'wait',
|
|
'now',
|
|
'here',
|
|
'slow',
|
|
'fast',
|
|
'high',
|
|
'low',
|
|
'deep',
|
|
'wide',
|
|
'long',
|
|
'short',
|
|
'big',
|
|
'small',
|
|
'old',
|
|
'new',
|
|
'good',
|
|
'bad',
|
|
'real',
|
|
'fake',
|
|
'pure',
|
|
'dark',
|
|
'light',
|
|
'fire',
|
|
'water',
|
|
'earth',
|
|
'air',
|
|
'wind',
|
|
'storm',
|
|
'sun',
|
|
'moon',
|
|
'star',
|
|
'sky',
|
|
'road',
|
|
'path',
|
|
'gate',
|
|
'door',
|
|
'room',
|
|
'house',
|
|
'home',
|
|
'city',
|
|
'town',
|
|
'land',
|
|
'sea',
|
|
'ocean',
|
|
'lake',
|
|
'river',
|
|
'wood',
|
|
'tree',
|
|
'leaf',
|
|
'root',
|
|
'seed',
|
|
'fruit',
|
|
'food',
|
|
'bread',
|
|
'cake',
|
|
'milk',
|
|
'wine',
|
|
'beer',
|
|
'salt',
|
|
'gold',
|
|
'iron',
|
|
'rock',
|
|
'sand',
|
|
'dust',
|
|
'bone',
|
|
'blood',
|
|
'skin',
|
|
'hair',
|
|
'eyes',
|
|
'ears',
|
|
'nose',
|
|
'mouth',
|
|
'hand',
|
|
'foot',
|
|
'wing',
|
|
'tail',
|
|
'bird',
|
|
'cat',
|
|
'dog',
|
|
'bear',
|
|
'wolf',
|
|
'lion',
|
|
'deer',
|
|
'horse',
|
|
'cow',
|
|
'pig',
|
|
'sheep',
|
|
'goat',
|
|
'bee',
|
|
'ant',
|
|
'fly',
|
|
'worm',
|
|
'snake',
|
|
'frog',
|
|
'turtle',
|
|
'crab',
|
|
'whale',
|
|
'shark',
|
|
'dolphin',
|
|
'eagle',
|
|
'hawk',
|
|
'owl',
|
|
'swan',
|
|
'duck',
|
|
'goose',
|
|
'rose',
|
|
'lily',
|
|
'pine',
|
|
'oak',
|
|
'fern',
|
|
'moss',
|
|
'weed',
|
|
'grass',
|
|
'corn',
|
|
'rice',
|
|
'bean',
|
|
'pea',
|
|
'nut',
|
|
'oil',
|
|
'honey',
|
|
'wax',
|
|
'silk',
|
|
'wool',
|
|
'flax',
|
|
'hemp',
|
|
'paper',
|
|
'ink',
|
|
'pen',
|
|
'book',
|
|
'lamp',
|
|
'bed',
|
|
'chair',
|
|
'desk',
|
|
'wall',
|
|
'roof',
|
|
'step',
|
|
'mile',
|
|
'inch',
|
|
'yard',
|
|
'hour',
|
|
'day',
|
|
'week',
|
|
'month',
|
|
'year',
|
|
'age',
|
|
'past',
|
|
'next',
|
|
'death',
|
|
'birth',
|
|
'name',
|
|
'word',
|
|
'song',
|
|
'poem',
|
|
'story',
|
|
'myth',
|
|
'fact',
|
|
'law',
|
|
'rule',
|
|
'king',
|
|
'queen',
|
|
'lord',
|
|
'lady',
|
|
'man',
|
|
'woman',
|
|
'child',
|
|
'youth',
|
|
'elder',
|
|
'friend',
|
|
'foe',
|
|
'guest',
|
|
'host',
|
|
'war',
|
|
'fight',
|
|
'deal',
|
|
'buy',
|
|
'sell',
|
|
'pay',
|
|
'debt',
|
|
'cost',
|
|
'coin',
|
|
'cash',
|
|
'bank',
|
|
'shop',
|
|
'mall',
|
|
'mill',
|
|
'port',
|
|
'ship',
|
|
'boat',
|
|
'car',
|
|
'bus',
|
|
'bike',
|
|
'train',
|
|
'plane',
|
|
'street',
|
|
'hill',
|
|
'peak',
|
|
'cave',
|
|
'well',
|
|
'bridge',
|
|
'tower',
|
|
'fort',
|
|
'camp',
|
|
'tent',
|
|
'ash',
|
|
'smoke',
|
|
'coal',
|
|
'log',
|
|
'branch',
|
|
'stick',
|
|
'tool',
|
|
'hammer',
|
|
'nail',
|
|
'saw',
|
|
'knife',
|
|
'fork',
|
|
'spoon',
|
|
'bowl',
|
|
'cup',
|
|
'plate',
|
|
'pot',
|
|
'pan',
|
|
'stove',
|
|
'oven',
|
|
'sink',
|
|
'bath',
|
|
'soap',
|
|
'towel',
|
|
'comb',
|
|
'brush',
|
|
'mirror',
|
|
'clock',
|
|
'watch',
|
|
'ring',
|
|
'belt',
|
|
'boot',
|
|
'shoe',
|
|
'sock',
|
|
'hat',
|
|
'coat',
|
|
'shirt',
|
|
'pant',
|
|
'dress',
|
|
'skirt',
|
|
'bag',
|
|
'box',
|
|
'case',
|
|
'lock',
|
|
'key',
|
|
'bell',
|
|
'horn',
|
|
'drum',
|
|
'pipe',
|
|
'lute',
|
|
'harp',
|
|
'flute',
|
|
'reed',
|
|
'cord',
|
|
'rope',
|
|
'knot',
|
|
'net',
|
|
'hook',
|
|
'line',
|
|
'bait',
|
|
'trap',
|
|
'plow',
|
|
'hoe',
|
|
'rake',
|
|
'spade',
|
|
'crop',
|
|
'wheat',
|
|
'oats',
|
|
'rye',
|
|
'zinc',
|
|
'lead',
|
|
'copper',
|
|
'tin',
|
|
'silver',
|
|
'stone',
|
|
'clay',
|
|
'mud',
|
|
'rain',
|
|
'snow',
|
|
'hail',
|
|
'mist',
|
|
'fog',
|
|
'cloud',
|
|
'dawn',
|
|
'dusk',
|
|
'noon',
|
|
'night',
|
|
'ghost',
|
|
'angel',
|
|
'devil',
|
|
'god',
|
|
'fate',
|
|
'doom',
|
|
'fear',
|
|
'joy',
|
|
'woe',
|
|
'pain',
|
|
'care',
|
|
'hate',
|
|
'rage',
|
|
'lust',
|
|
'greed',
|
|
'pride',
|
|
'envy',
|
|
'sloth',
|
|
'wrath',
|
|
'holy',
|
|
'sin',
|
|
'hell',
|
|
'heaven',
|
|
'void',
|
|
'space',
|
|
'form',
|
|
'idea',
|
|
'thought',
|
|
'dot',
|
|
'circle',
|
|
'square',
|
|
'point',
|
|
'edge',
|
|
'flow',
|
|
'wave',
|
|
'tide',
|
|
'shore',
|
|
'bank',
|
|
'cliff',
|
|
'vale',
|
|
'meadow',
|
|
'field',
|
|
'plain',
|
|
'desert',
|
|
'forest',
|
|
'jungle',
|
|
'swamp',
|
|
'marsh',
|
|
'glade',
|
|
'grove',
|
|
'peak',
|
|
'ridge',
|
|
'slope',
|
|
'track',
|
|
'trail',
|
|
'lane',
|
|
'path',
|
|
'alley',
|
|
'court',
|
|
'plaza',
|
|
'park',
|
|
'bridge',
|
|
'tunnel',
|
|
'arch',
|
|
'dome',
|
|
'spire',
|
|
'tower',
|
|
'wall',
|
|
'fence',
|
|
'gate',
|
|
'stair',
|
|
'floor',
|
|
'beam',
|
|
'pole',
|
|
'mast',
|
|
'sail',
|
|
'deck',
|
|
'hull',
|
|
'keel',
|
|
'oar',
|
|
'helm',
|
|
'anchor',
|
|
'net',
|
|
'rope',
|
|
'knot',
|
|
'line',
|
|
'hook',
|
|
'bait',
|
|
'trap',
|
|
'net',
|
|
'spear',
|
|
'bow',
|
|
'arrow',
|
|
'sword',
|
|
'shield',
|
|
'armor',
|
|
'helm',
|
|
'boot',
|
|
'glove',
|
|
'cloak',
|
|
'scarf',
|
|
'belt',
|
|
'ujwal',
|
|
'ring',
|
|
'gem',
|
|
'jewel',
|
|
'pearl',
|
|
'gold',
|
|
'silver',
|
|
'bronze',
|
|
'iron',
|
|
'steel',
|
|
'brass',
|
|
'glass',
|
|
'stone',
|
|
'brick',
|
|
'tile',
|
|
'wood',
|
|
'clay',
|
|
'wax',
|
|
'ink',
|
|
'paint',
|
|
'dye',
|
|
'glue',
|
|
'oil',
|
|
'coal',
|
|
'gas',
|
|
'steam',
|
|
'heat',
|
|
'cold',
|
|
'ice',
|
|
'frost',
|
|
'thaw',
|
|
'melt',
|
|
'burn',
|
|
'glow',
|
|
'shine',
|
|
'beam',
|
|
'ray',
|
|
'spark',
|
|
'flash',
|
|
'flare',
|
|
'blast',
|
|
'shock',
|
|
'wave',
|
|
'pulse',
|
|
'beat',
|
|
'rhythm',
|
|
'tone',
|
|
'note',
|
|
'tune',
|
|
'song',
|
|
];
|
|
|
|
/// Shows the word challenge dialog. Returns true if successful.
|
|
static Future<bool> show(BuildContext context, {int count = 15}) async {
|
|
final list = List<String>.from(_words)..shuffle();
|
|
final challenge = list.take(count).join(' ');
|
|
final controller = TextEditingController();
|
|
|
|
// Prevent screenshots on Android
|
|
try {
|
|
await FlutterWindowManagerPlus.addFlags(
|
|
FlutterWindowManagerPlus.FLAG_SECURE,
|
|
);
|
|
} catch (_) {}
|
|
|
|
if (!context.mounted) return false;
|
|
|
|
final result = await showDialog<bool>(
|
|
context: context,
|
|
barrierDismissible: false,
|
|
builder: (ctx) => AlertDialog(
|
|
backgroundColor: const Color(0xFF1A1A1A),
|
|
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
|
|
title: const Row(
|
|
children: [
|
|
Icon(Icons.psychology, color: Colors.blue, size: 24),
|
|
SizedBox(width: 10),
|
|
Text(
|
|
'Discipline Challenge',
|
|
style: TextStyle(color: Colors.white, fontSize: 18),
|
|
),
|
|
],
|
|
),
|
|
content: SingleChildScrollView(
|
|
child: Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
const Text(
|
|
'FocusGram is currently blocked to help you stay focused. Type the following sequence exactly to proceed:',
|
|
style: TextStyle(color: Colors.white70, fontSize: 14),
|
|
),
|
|
const SizedBox(height: 16),
|
|
Container(
|
|
width: double.infinity,
|
|
padding: const EdgeInsets.all(12),
|
|
decoration: BoxDecoration(
|
|
color: Colors.black,
|
|
borderRadius: BorderRadius.circular(12),
|
|
border: Border.all(color: Colors.blue.withValues(alpha: 0.3)),
|
|
),
|
|
child: Text(
|
|
challenge,
|
|
style: const TextStyle(
|
|
color: Colors.blue,
|
|
fontWeight: FontWeight.bold,
|
|
fontSize: 14,
|
|
height: 1.5,
|
|
),
|
|
),
|
|
),
|
|
const SizedBox(height: 16),
|
|
TextField(
|
|
controller: controller,
|
|
autofocus: true,
|
|
enableInteractiveSelection:
|
|
false, // Prevents copy/paste/selection
|
|
style: const TextStyle(color: Colors.white),
|
|
decoration: InputDecoration(
|
|
hintText: 'Type here...',
|
|
hintStyle: const TextStyle(color: Colors.white24),
|
|
filled: true,
|
|
fillColor: Colors.white.withValues(alpha: 0.05),
|
|
border: OutlineInputBorder(
|
|
borderRadius: BorderRadius.circular(10),
|
|
borderSide: BorderSide.none,
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
actions: [
|
|
TextButton(
|
|
onPressed: () => Navigator.pop(ctx, false),
|
|
child: const Text(
|
|
'Cancel',
|
|
style: TextStyle(color: Colors.white38),
|
|
),
|
|
),
|
|
ElevatedButton(
|
|
onPressed: () {
|
|
if (controller.text.trim() == challenge) {
|
|
Navigator.pop(ctx, true);
|
|
} else {
|
|
ScaffoldMessenger.of(context).showSnackBar(
|
|
const SnackBar(
|
|
content: Text('Incorrect sequence. Please try again.'),
|
|
backgroundColor: Colors.redAccent,
|
|
),
|
|
);
|
|
}
|
|
},
|
|
style: ElevatedButton.styleFrom(
|
|
backgroundColor: Colors.blue,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(10),
|
|
),
|
|
),
|
|
child: const Text('Confirm'),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
|
|
// Re-enable screenshots
|
|
try {
|
|
await FlutterWindowManagerPlus.clearFlags(
|
|
FlutterWindowManagerPlus.FLAG_SECURE,
|
|
);
|
|
} catch (_) {}
|
|
|
|
return result ?? false;
|
|
}
|
|
}
|