paint-brush
Nansi Indlela Yokufunda Ukuhlela Kwedatha Ngendlela Ejabulisayo Nge-Flutternge@dhruvam
Umlando omusha

Nansi Indlela Yokufunda Ukuhlela Kwedatha Ngendlela Ejabulisayo Nge-Flutter

nge Dhruvam23m2025/03/04
Read on Terminal Reader

Kude kakhulu; Uzofunda

Lesi sihloko sihlanganisa ithiyori nokusebenzisa izandla ku-Flutter. Ikhuthazwe yi-Google's *Applied CS ene-Android. Emahoreni angu-3–4 nje, uzothola ukuqonda okujulile kwalezi zakhiwo zedatha ezibalulekile.
featured image - Nansi Indlela Yokufunda Ukuhlela Kwedatha Ngendlela Ejabulisayo Nge-Flutter
Dhruvam HackerNoon profile picture
0-item

Yakha imidlalo futhi ufunde Isayensi Yekhompyutha.


Izakhiwo zedatha zakha isisekelo sokuthuthukiswa kwesofthiwe okuphumelelayo, kodwa izindlela zokufunda ezivamile zivame ukubenza bazizwe bengabonakali futhi benqanyuliwe ezinhlelweni zokusebenza zomhlaba wangempela. Lesi sihloko sithatha indlela ehlukile — ukuhlanganisa ithiyori nokusebenzisa izandla ku-Flutter ukwenza ukufunda kuhehe futhi kube ngokoqobo .


Ikhuthazwe i -Applied CS ye-Google ene-Android , lokhu kujwayela kwe-Flutter kunikeza indlela yokusebenzisana yokuqonda ama-Arrays, ama-HashSets, nama-HashMaps . Emahoreni angu-3–4 nje , uzothola ukuqonda okujulile kwalezi zakhiwo zedatha ezibalulekile kuyilapho uzisebenzisa esimweni esiphusile.


Kungakhathaliseki ukuthi ungumuntu osaqalayo ofuna ukuqinisa izisekelo ze-CS yakho noma unjiniyela onolwazi ohlose ukuthuthukisa amakhono akho, lo mhlahlandlela unikeza indlela ephumelelayo nejabulisayo yolwazi lwezakhiwo ezibalulekile zedatha. Ake siqale.

Izinjongo Zalesi sihloko:

  1. Zijwayeze ukuthi izichazamazwi zingasetshenziswa kanjani ukugcina idatha (kulokhu amagama).
  2. Sebenzisa amamephu e-hashi ukuze ugcine amaqoqo amagama, angama-anagram.
  3. Ukwazi ukuchaza imikhawulo ezinye izakhiwo zedatha ezibhekana nazo lapho usebenza namasethi amakhulu edatha.

Ukulungiselela:

Sizosebenzisa izakhiwo zedatha ezimbalwa kumsebenzi weshabhu, ngakho-ke sicela ubuyekeze Uhlu , Ama-HashSets , kanye nama-HashMaps . Kufanele ukwazi ukufaka, ukususa, ukufinyelela, nokuhlola ubukhona bezakhi usebenzisa lezi zakhiwo zedatha ku-Dart.


Lesi yisingeniso esincane sezakhiwo zedatha, i-HashSets ne-HashMap.


Ukufudumala okuncane kokuzivocavoca kokuqala:

Njengesibonelo somsebenzi usebenzisa i-HashMaps, dala uhlelo (hhayi uhlelo lokusebenza lwe-Flutter - umugqa womyalo ulungile) oluzothatha ikhodi yezwe enezinhlamvu ezintathu (bona i-ISO-3166 ) bese libuyisela igama eliphelele lezwe elihlala kulo.


Ngokwesibonelo:


 Input | Output ----- | ---------------------------------------------------- GBR | United Kingdom of Great Britain and Northern Ireland IDN | Indonesia IND | India


Njengesandiso, uma okokufaka kungaphezu kwezinhlamvu ezi-3, kubheke njengegama lezwe, bese ubuyisela ikhodi yakho yezinhlamvu ezintathu. Bhala umlayezo wephutha owusizo uma okokufaka kungeyona ikhodi evumelekile noma igama lezwe.


Ake siqale.


Ama-Anagrams

I-anagram yigama elakhiwe ngokuhlela kabusha izinhlamvu zelinye igama. Isibonelo, i-cinema iyi-anagram ye- iceman .

Imishini yomdlalo imi kanje:

  1. Umdlalo unikeza umsebenzisi igama elivela kusichazamazwi.


  2. Umsebenzisi uzama ukwakha amagama amaningi ngangokunokwenzeka aqukethe zonke izinhlamvu zegama elinikeziwe kanye nohlamvu olulodwa olwengeziwe. Qaphela ukuthi ukwengeza uhlamvu olwengeziwe ekuqaleni noma ekugcineni ngaphandle kokuhlela kabusha ezinye izinhlamvu akuvumelekile. Isibonelo, uma igeyimu ikhetha igama elithi 'ore' njengesiqalo, umsebenzisi angase aqagele 'i-rose' noma 'iqanda' kodwa hhayi 'i-sore'.


  3. Umsebenzisi angancama futhi abone amagama angazange awaqagele.




Sikunikeze ikhodi yokuqala equkethe isichazamazwi samagama angu-10,000 futhi esisingatha izingxenye ze-UI zalo mdlalo futhi uzoba nesibopho sokubhala i-AnagramBlocclass ephatha zonke izikhohlisi zamagama.


Ukuvakasha Kwekhodi

Ikhodi yokuqalisa yakhiwa amakilasi amathathu ayinhloko e-dart:


anagrams_page.dart

Lena ikhodi elula emele isikrini esisibona ngenhla. Sizosebenzisa ibhulokhi yokuphatha izwe esikrinini. Sizoqala ngokusetha igeyimu ngokudubula umcimbi ku-bloc futhi sichaze ukuthi kuzokwenzekani uma isikrini siphendula ezimeni zegeyimu ezahlukene.


 import 'package:anagrams/anagrams/bloc/anagram_bloc.dart'; import 'package:anagrams/anagrams/domain/word.dart'; import 'package:anagrams/l10n/l10n.dart'; import 'package:bloc_presentation/bloc_presentation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; class AnagramsPage extends StatelessWidget { const AnagramsPage({super.key}); @override Widget build(BuildContext context) { return BlocProvider( create: (_) => AnagramBloc() ..add( SetupAnagrams( DefaultAssetBundle.of(context), ), ), child: const AnagramsView(), ); } } class AnagramsView extends StatelessWidget { const AnagramsView({super.key}); @override Widget build(BuildContext context) { final l10n = context.l10n; return Scaffold( appBar: AppBar(title: Text(l10n.anagramAppBarTitle)), body: BlocBuilder<AnagramBloc, AnagramState>( builder: (context, state) { switch (state.status) { case AnagramGameStatus.gameError: return const Center( child: Text('An error occurred'), ); case AnagramGameStatus.loaded: return Padding( padding: const EdgeInsets.all(20), child: ListView( children: const [ _SelectedWord(), SizedBox(height: 20), _AnagramsTextField(), SizedBox(height: 10), _GuessListView(), ], ), ); case AnagramGameStatus.initial: return const Center( child: CircularProgressIndicator(), ); } }, ), floatingActionButton: const _NextWordButton(), ); } } class _SelectedWord extends StatelessWidget { const _SelectedWord(); @override Widget build(BuildContext context) { return BlocSelector<AnagramBloc, AnagramState, String>( selector: (state) => state.currentWord, builder: (context, currentWord) { return Text.rich( TextSpan( text: 'Find as many words as possible that can be ' 'formed by adding one letter to ', children: [ TextSpan( text: currentWord.toUpperCase(), style: const TextStyle(fontWeight: FontWeight.bold), ), TextSpan( text: ' (but that do not contain the substring' ' ${currentWord.toUpperCase()}).', ), ], ), ); }, ); } } class _AnagramsTextField extends StatelessWidget { const _AnagramsTextField(); @override Widget build(BuildContext context) { final controller = TextEditingController(); return TextField( controller: controller, decoration: const InputDecoration( hintText: 'Enter an anagram', border: OutlineInputBorder(), ), keyboardType: TextInputType.text, textInputAction: TextInputAction.done, onSubmitted: (value) { controller.clear(); context.read<AnagramBloc>().add(ProcessWord(value)); }, ); } } class _GuessListView extends StatelessWidget { const _GuessListView(); @override Widget build(BuildContext context) { return BlocSelector<AnagramBloc, AnagramState, List<Word>>( selector: (state) => state.guesses, builder: (context, guesses) { return Column( children: guesses.map((word) { return ListTile( minTileHeight: 0, contentPadding: EdgeInsets.zero, visualDensity: VisualDensity.compact, title: Text(word.value), leading: Icon( word.isAnagram ? Icons.check : Icons.close, color: word.isAnagram ? Colors.green : Colors.red, ), ); }).toList(), ); }, ); } } class _GameResult extends StatelessWidget { const _GameResult(this.currentWord, this.result); final List<Word> result; final String currentWord; @override Widget build(BuildContext context) { return ListView( shrinkWrap: true, children: [ const SizedBox(height: 20), Padding( padding: const EdgeInsets.symmetric( horizontal: 20, ), child: Text( 'Game Result for $currentWord', style: const TextStyle(fontSize: 20), ), ), Padding( padding: const EdgeInsets.all(20), child: SizedBox( width: double.infinity, child: DataTable( decoration: BoxDecoration( border: Border.all( color: Colors.grey.shade400, ), borderRadius: BorderRadius.circular(10), ), columns: const [ DataColumn(label: Text('Possible Anagrams')), DataColumn(label: Text('Your Guesses')), ], rows: result.map((word) { return DataRow( cells: [ DataCell(Text(word.value)), DataCell( Center( child: Icon( word.isAnagram ? Icons.check : Icons.close, color: word.isAnagram ? Colors.green : Colors.red, ), ), ), ], ); }).toList(), ), ), ), ], ); } } class _NextWordButton extends StatelessWidget { const _NextWordButton(); @override Widget build(BuildContext context) { final l10n = context.l10n; return BlocPresentationListener<AnagramBloc, AnagramPresenterEvent>( listener: (context, event) { if (event is FinishGuess) { // show a bottom sheet with the anagrams that were not guessed showModalBottomSheet<void>( context: context, useSafeArea: true, builder: (context) { return _GameResult(event.currentWord, event.result); }, ); } }, child: FloatingActionButton.extended( onPressed: () async { context.read<AnagramBloc>().add(ResetGame()); }, label: Text(l10n.nextWordButton), ), ); } }


  • _SelectWord : ikhombisa igama elikhethiwe ukuze umdlalo wakhe ama-anagrams kuwo.


  • _AnagramsTextField : ithatha igama bese ishisa umcimbi ukuze icubungule igama elifakwe umsebenzisi.


  • _GuessListView : ibonisa ukuqagela okufakile umsebenzisi nokuthi zilungile noma cha.


  • _NextWordButton : isetha kabusha igeyimu futhi yethule umsebenzisi ngawo wonke ama-anagrams egama lamanje nokuthi iyiphi umsebenzisi ayiqagele.


anagram_states.dart


 enum AnagramGameStatus { initial, loaded, gameError } const minNumAnagrams = 5; const defaultWordLength = 3; const maxDefaultWordLength = 7; @immutable final class AnagramState extends Equatable { factory AnagramState({ AnagramGameStatus status = AnagramGameStatus.initial, List<String> words = const [], String currentWord = '', List<String> anagrams = const [], List<Word> guesses = const [], HashSet<String>? wordSet, HashMap<String, List<String>>? anagramMap, HashMap<int, List<String>>? sizeToWords, int wordLength = defaultWordLength, }) { return AnagramState._( status: status, words: words, currentWord: currentWord, anagrams: anagrams, guesses: guesses, wordSet: wordSet ?? HashSet<String>(), anagramMap: anagramMap ?? HashMap<String, List<String>>(), sizeToWords: sizeToWords ?? HashMap<int, List<String>>(), wordLength: wordLength, ); } const AnagramState._({ required this.status, required this.words, required this.currentWord, required this.anagrams, required this.guesses, required this.wordSet, required this.anagramMap, required this.sizeToWords, this.wordLength = defaultWordLength, }); // The current status of the game final AnagramGameStatus status; // All the words in the game final List<String> words; // Currently chosen word of the game to form anagrams final String currentWord; // All the anagrams for the current word final List<String> anagrams; // All the guesses user has made final List<Word> guesses; // A set of all the words in the game final HashSet<String> wordSet; // A map of anagrams for each word final HashMap<String, List<String>> anagramMap; // Stores the words in increasing order of their length final HashMap<int, List<String>> sizeToWords; final int wordLength; AnagramState copyWith({ AnagramGameStatus? status, List<String>? words, String? currentWord, List<String>? anagrams, List<Word>? guesses, HashSet<String>? wordSet, HashMap<String, List<String>>? anagramMap, HashMap<int, List<String>>? sizeToWords, int? wordLength, }) { return AnagramState( status: status ?? this.status, words: words ?? this.words, currentWord: currentWord ?? this.currentWord, anagrams: anagrams ?? this.anagrams, guesses: guesses ?? this.guesses, wordSet: wordSet ?? this.wordSet, anagramMap: anagramMap ?? this.anagramMap, sizeToWords: sizeToWords ?? this.sizeToWords, wordLength: wordLength ?? this.wordLength, ); } @override List<Object?> get props => [ status, words, currentWord, anagrams, guesses, wordSet, anagramMap, sizeToWords, wordLength, ]; }


I-AnagramState iphethe zonke izinguquko zesimo ezidingekayo ukuze kuqalise igeyimu.

  • status : ibamba ukuthi ingabe igeyimu iyalayisha (okokuqala), iyalayishwa, noma iphutha elithile liphonsiwe.
  • words : Ibala wonke amagama asuka kufayela elithi.txt alayishwe efayelini.
  • anagrams : ibamba wonke ama-anagrams egama elikhethiwe.
  • currentword : igama elikhethiwe ohlwini lwamagama kanye negama okuzokwakhiwa kulo ama-anagrams.
  • guesses : Zonke izinketho umsebenzisi azifakayo nokuthi zilungile noma azilungile.


Sizofinyelela eminye imininingwane, kamuva esihlokweni.


anagram_bloc.dart


 import 'dart:async'; import 'dart:collection'; import 'dart:convert'; import 'package:anagrams/anagrams/domain/word.dart'; import 'package:bloc_presentation/bloc_presentation.dart'; import 'package:equatable/equatable.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; part 'anagram_events.dart'; part 'anagram_states.dart'; class AnagramBloc extends Bloc<AnagramEvent, AnagramState> with BlocPresentationMixin<AnagramState, AnagramPresenterEvent> { AnagramBloc() : super(AnagramState()) { on<SetupAnagrams>(_onSetupAnagrams); on<ProcessWord>(_onProcessWord); on<ResetGame>(_onResetGame); } Future<void> _onSetupAnagrams( SetupAnagrams event, Emitter<AnagramState> emit, ) async { try { // this should not be done here, // but for the sake of simplicity, we will do it here final wordsFile = await event.defaultAssetBundle.loadString('assets/words.txt'); // read each line in the file final words = const LineSplitter().convert(wordsFile); // change the state of the game emit( state.copyWith( status: AnagramGameStatus.loaded, words: words, ), ); // reset the game _onRestartGame(emit); } catch (e) { emit( state.copyWith( status: AnagramGameStatus.gameError, ), ); } } Future<void> _onProcessWord( ProcessWord event, Emitter<AnagramState> emit, ) async { try { final word = event.word.trim().toLowerCase(); if (word.isEmpty) { return; } if (_isGoodWord(word) && state.anagrams.contains(word)) { // remove the word from the list of anagrams // add the word to the list of guesses emit( state.copyWith( anagrams: state.anagrams..remove(word), guesses: [...state.guesses, Word(word, isAnagram: true)], ), ); // if there are no more anagrams, the game is over // call _onResetGame to reset the game if (state.anagrams.isEmpty) { add(ResetGame()); } } else { emit( state.copyWith( guesses: [...state.guesses, Word(word)], ), ); } } catch (e) { // show an error message } } FutureOr<void> _onResetGame(ResetGame event, Emitter<AnagramState> emit) { _onGameFinished(); _onRestartGame(emit); } void _onRestartGame(Emitter<AnagramState> emit) { final starterWord = _pickGoodStarterWord(emit); emit( state.copyWith( status: AnagramGameStatus.loaded, currentWord: starterWord, anagrams: _getAnagrams(starterWord), guesses: [], ), ); } void _onGameFinished() { emitPresentation(FinishGuess(_result, state.currentWord)); } List<Word> get _result { // All the anagrams that were not guessed final notGuessedAnagrams = state.anagrams.map(Word.new).toList(); // All the guesses that were made final guesses = state.guesses.where((word) => word.isAnagram).toList(); // return the list of anagrams that were not guessed return [...guesses, ...notGuessedAnagrams]; } /// create a function to find all the anagrams of the target word List<String> _getAnagrams(String targetWord) { // find all the anagrams of the target word final anagrams = <String>[]; // return the list of anagrams return anagrams; } // ignore: unused_element List<String> _getAnagramsWithOneMoreLetter(String targetWord) { final anagrams = HashSet<String>(); // return the list of anagrams return anagrams.toList(); } /// Picks a good starter word for the game. String _pickGoodStarterWord(Emitter<AnagramState> emit) { const word = 'skate'; return word; } /// Checks if the word is a good word. bool _isGoodWord(String word) { return true; } }


  • onSetupAnagrams : Ifunda ifayela, ihlukanise amagama, bese iwangeza ohlwini. Iphinde ithole igama lamanje, ithole ama-anagrams alelo gama elikhethiwe, futhi ibuyekeze isimo.


  • onProcessWord : Lesi isibambi esibizwa lapho umsebenzisi efaka ukuqagela futhi ebuyekeza isimo.
  • onReset : Ishayelwe ngokuchofoza inkinobho yegama elilandelayo bese usetha kabusha igeyimu.
  • isGoodWord : Igomela ngokuthi igama elinikeziwe lisesichazamazwini futhi alakhiwe ngokungeza uhlamvu ekuqaleni noma ekupheleni kwegama eliyisisekelo.
  • getAnagrams : Idala uhlu lwawo wonke ama-anagrams angenzeka wegama elinikeziwe.
  • getAnagramsWithOneMoreLetter : Idala uhlu lwawo wonke amagama angakhiwa ngokwengeza uhlamvu olulodwa egameni elinikeziwe.
  • pickGoodStarterWord : Khetha ngokungahleliwe igama okungenani elinenombolo oyifunayo yama-anagram.

Ingqophamlando 1: Okubalulekile

Ingqopha-mlando yokuqala igxile ekudaleni uhlelo lokusebenza olulula kakhulu. Uzobe usebenzisa izisekelo ezizokwakhelwa kuzo kuMilestones 2 kanye no-3.


Sizosebenza ku- anagram_bloc.dart .

getAnagrams

Sebenzisa getAnagrams ethatha iyunithi yezinhlamvu futhi ithole wonke ama-anagrams alolo chungechunge kokokufaka kwethu. Isu lethu okwamanje lizobe liqondile: mane uqhathanise iyunithi yezinhlamvu ngayinye words Uhlu negama elifakiwe ukuze unqume ukuthi angama-anagram. Kodwa sizokwenza kanjani lokho?


Kunamasu ahlukene ongawasebenzisa ukuze unqume ukuthi izintambo ezimbili ziyi-anagram enye kwenye (njengokubala inani lokuvela kohlamvu ngalunye) kodwa ngenjongo yethu uzodala umsebenzi womsizi (uwubize ngokuthi sortLetters ) othatha String bese ubuyisela enye String ezifanayo ngokulandelana kwezinhlamvu (isb "iposi" -> "iposi").


Ukunquma ukuthi izintambo ezimbili zingama-anagram kuyindaba elula yokuhlola ukuthi zinobude obufanayo (ngenxa yejubane) nokuhlola ukuthi izinguqulo ezihleliwe zezinhlamvu zazo ziyalingana.

I-wordSet ne-anagramMap

Ngeshwa, isu eliqondile lizohamba kancane kakhulu ukuthi singasebenzisa ingxenye esele yalo mdlalo. Ngakho-ke, sizodinga ukuphinde sivakashele onSetupAnagrams yethu futhi sithole ezinye izakhiwo zedatha ezigcina amagama ngezindlela ezilungele izinjongo zethu. Sizodala izakhiwo zedatha ezimbili ezintsha (ngaphezu words ):


  • I HashSet (ebizwa ngokuthi wordSet ) ezosivumela ukuthi siqinisekise ngokushesha (ku-O(1)) ukuthi igama livumelekile yini.


  • I HashMap (ebizwa ngokuthi anagramMap ) ezosivumela ukuthi sihlanganise ama-anagram. Sizokwenza lokhu ngokusebenzisa inguqulo sortLetters yeyunithi yezinhlamvu njengokhiye futhi sigcine Uhlu lwamagama ahambisana nalowo khiye njengenani lethu. Isibonelo, singase sibe nokufakwayo kwefomu: ukhiye: inani elithi "opst": ["post", "spot", "pot", "tops", ...].


Njengoba ucubungula amagama okufakwayo, shayela sortLetters kulelo nalelo bese uhlola ukuthi anagramMap isivele iqukethe yini okufakiwe kwalowo khiye. Uma ikwenza, engeza igama lamanje kokuthi List kulowo khiye. Uma kungenjalo, dala entsha, engeza igama kuyo, futhi uyigcine ku HashMap ngokhiye ohambisanayo.


Uma usuqedile lokhu, usufike ekugcineni kwe-Milestone 1! Manje usulungele ukudlulela kungqopha-mlando yesibili, lapho uzobe ungeza ubunkimbinkimbi obuningi ohlelweni lwakho.


Isixazululo sengqophamlando 1

Ingqophamlando 2: Ukwengeza Ikhwalithi

I-Milestone 2 imayelana nokuqinisekisa ukuthi amagama akhethiwe afanele umdlalo we-anagram. Ngokungafani. Isiqephu esedlule, lesi sihlukaniswe izigaba ezintathu.

isGoodWord

Umsebenzi wakho olandelayo ukusebenzisa isGoodWord ehlola:

  • igama elinikeziwe liyigama lesichazamazwi elivumelekile (okungukuthi, ku wordSet ), kanye
  • igama aliqukethe igama eliyisisekelo njengochungechunge oluncane.




Ukuhlola ukuthi igama liyigama lesichazamazwi elivumelekile yini kungenziwa ngokubheka wordSet ukuze ubone ukuthi linalo yini igama. Ukuhlola ukuthi igama aliqukethe yini igama eliyisisekelo njengochungechunge oluncane kushiywa njengenselele!

getAnagramsWithOneMoreLetter

Ekugcineni, sebenzisa getAnagramsWithOneMoreLetter ethatha iyunithi yezinhlamvu futhi ithole wonke ama-anagrams angakhiwa ngokungeza uhlamvu olulodwa kulelo gama.


Qiniseka ukuthi ufaka List olusha njengevelu yakho yokubuyisela bese uhlola igama elinikeziwe + uhlamvu ngalunye lwezinhlamvu ngalunye ngokumelene nokufakwe ku anagramMap .


Futhi, buyekeza i onRestartGame ukuze ucele getAnagramsWithOneMoreLetter esikhundleni se getAnagrams .


pickGoodStarterWord

Uma igeyimu yakho isebenza, qhubeka nokusebenzisa pickGoodStarterWord ukuze wenze igeyimu ihehe kakhulu. Khetha isiqalo esingahleliwe egameni elithi List bese uhlola igama ngalinye ohlwini kuze kube yilapho uthola elinegama okungenani minNumAnagrams . Qiniseka ukuthi uphatha ukugoqa kuze kube ekuqaleni kwamalungu afanayo uma kudingeka.



Izingxenye ezimbili kwezintathu zendlela edlulayo! Ingqophamlando eyodwa kanye nesandiso ngaphambi kokuthi uqede.


Isixazululo sengqophamlando 2


Ingqophamlando 3: Ukwenza kabusha

Kuleli qophelo, umdlalo uyasebenza kodwa ungaba nzima kakhulu ukuwudlala uma uqala ngegama lesisekelo eside. Ukuze sigweme lokhu, ake siphinde senze onSetupGame ukuze sinikeze amagama anobude obukhulayo.


Lesi sici siqala ku onSetupGame lapho ngaphezu kokugcwalisa uhlu word , kufanele futhi ugcine igama ngalinye ku- HashMap (asiyibize ngokuthi sizeToWords ) ebeka ubude begama List lwawo wonke amagama alobo bude. Lokhu kusho ukuthi, isibonelo, kufanele ukwazi ukuthola wonke amagama anezinhlamvu ezine kusichazamazwi ngokushayela u- sizeToWords.get(4) .


Ku- pickGoodStarterWord , khawula ukusesha kwakho emagameni obude wordLength , futhi uma usuqedile, khulisa wordLength (ngaphandle uma selivele liku- axWordLength ) ukuze ukunxusa okulandelayo kuzobuyisela igama elikhudlwana.


Isixazululo sengqophamlando 3


Izandiso

Lo msebenzi (njengayo yonke imisebenzi yesikhathi esizayo) uqukethe izandiso ozikhethela zona. Uma isikhathi sivuma, zama okungenani isandiso esisodwa ohlwini olungezansi noma esisodwa oziqambele wena.


  • Imodi enezinhlamvu ezimbili: shintshela ekuvumeleni umsebenzisi ukuthi engeze izinhlamvu ezimbili ukuze akhe ama-anagram.


  • Lungiselela ukukhethwa kwamagama ngokukhipha amagama angenawo ama-anagrams anele kuqoqo lamagama angaba khona okuqala. Qaphela ukuthi lawo magama kufanele ahlale ku wordSet njengoba esengasetshenziswa njengama-anagrams ngamanye amagama.


  • Imodi yamagama amabili: Vumela umsebenzisi ukuthi engeze uhlamvu olulodwa kupheya yamagama ukuze akhe amagama amabili amasha avumelekile.



Siyakuhalalisela ngokufinyelela ekugcineni! Uhlole ukuthi i-Lists, HashSets, kanye ne-HashMaps inika amandla kanjani ukuphatha idatha ngendlela ephumelelayo ku-Flutter, njengoba yenza kunoma yiluphi uhlelo lokusebenza olulungiselelwe kahle. Ukuqonda lezi zakhiwo kukunikeza unqenqema ekubhaleni amakhodi angakala futhi enze kahle. Ngakho-ke qhubeka, futhi uzinikeze i-pat efanelekile ngemuva! Manje, faka lolu lwazi esenzweni futhi uqhubeke nokwakha izinto ezimangalisayo!

L O A D I N G
. . . comments & more!

About Author

Dhruvam HackerNoon profile picture
Dhruvam@dhruvam
Google-certified Android Developer @ToTheNew. Flutter Geek. Dancer. 🕺 Reader. Coffee Addict. 😍

HANG TAGS

LESI SIHLOKO SETHULWE NGAPHAKATHI...