Created
December 23, 2022 22:14
-
-
Save M97Chahboun/4a05c08f9d7af9b29f408958eec99c75 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Copyright 2018 The Flutter team. All rights reserved. | |
// Use of this source code is governed by a BSD-style license that can be | |
// found in the LICENSE file. | |
import 'package:english_words/english_words.dart'; | |
import 'package:flutter/material.dart'; | |
void main() { | |
runApp(const MyApp()); | |
} | |
class MyApp extends StatelessWidget { | |
const MyApp({super.key}); | |
@override | |
Widget build(BuildContext context) { | |
return MaterialApp( | |
title: 'Startup Name Generator', | |
home: Scaffold( | |
appBar: AppBar( | |
title: const Text('Startup Name Generator'), | |
), | |
body: const Center( | |
child: RandomWords(), | |
), | |
), | |
); | |
} | |
} | |
class _RandomWordsState extends State<RandomWords> { | |
final _suggestions = <WordPair>[]; | |
final _saved = <WordPair>{}; | |
final _biggerFont = const TextStyle(fontSize: 18); | |
@override | |
Widget build(BuildContext context) { | |
return ListView.builder( | |
padding: const EdgeInsets.all(16.0), | |
itemBuilder: (context, i) { | |
if (i.isOdd) return const Divider(); | |
final index = i ~/ 2; | |
if (index >= _suggestions.length) { | |
_suggestions.addAll(generateWordPairs().take(10)); | |
} | |
final alreadySaved = _saved.contains(_suggestions[index]); | |
return ListTile( | |
title: Text( | |
_suggestions[index].asPascalCase, | |
style: _biggerFont, | |
), | |
trailing: Icon( | |
alreadySaved ? Icons.favorite : Icons.favorite_border, | |
color: alreadySaved ? Colors.red : null, | |
semanticLabel: alreadySaved ? 'Remove from saved' : 'Save', | |
), | |
onTap: () { | |
setState(() { | |
if (alreadySaved) { | |
_saved.remove(_suggestions[index]); | |
} else { | |
_saved.add(_suggestions[index]); | |
} | |
}); | |
}, | |
); | |
}, | |
); | |
} | |
} | |
class RandomWords extends StatefulWidget { | |
const RandomWords({super.key}); | |
@override | |
State<RandomWords> createState() => _RandomWordsState(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment