\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{Nima (nimakarimian)} \pdfinfo{ /Title (dart-datatypes-list-map-set-queues-enums.pdf) /Creator (Cheatography) /Author (Nima (nimakarimian)) /Subject (Dart Datatypes (List - Map - Set - Queues - Enums) Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{034EA3} \definecolor{LightBackground}{HTML}{EFF3F9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Dart Datatypes (List - Map - Set - Queues - Enums) Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{Nima (nimakarimian)} via \textcolor{DarkBackground}{\uline{cheatography.com/113429/cs/30307/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}Nima (nimakarimian) \\ \uline{cheatography.com/nimakarimian} \\ \uline{\seqsplit{www}.nimakarimian.ir} \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 2nd January, 2022.\\ Updated 2nd January, 2022.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Lists}} \tn % Row 0 \SetRowColor{LightBackground} List.generate(int length, E Function(int) generator, \{bool growable = true\}) & {\bf{List .generate(3, (int index) =\textgreater{} index * index); // {[}0, 1, 4{]}}} \tn % Row Count 6 (+ 6) % Row 1 \SetRowColor{white} List.filled(int length, dynamic fill, \{bool growable = false\}) & {\bf{List .filled(3, 0, growable: true); // {[}0, 0, 0{]}}} \tn % Row Count 13 (+ 7) % Row 2 \SetRowColor{LightBackground} List.add(List\textless{}dynamic\textgreater{} value); & {\bf{List.add('Madonna');}} \tn % Row Count 15 (+ 2) % Row 3 \SetRowColor{white} List.addAll(Iterable\textless{}List\textless{}dynamic\textgreater{}\textgreater{} iterable); & {\bf{List.addAll({[}12,23,1235,532{]});}} \tn % Row Count 18 (+ 3) % Row 4 \SetRowColor{LightBackground} List.insert(int index, List\textless{}dynamic\textgreater{} element); & {\bf{List.insert(2,'HummingBird');}} \tn % Row Count 21 (+ 3) % Row 5 \SetRowColor{white} List.insertAll(int index, Iterable\textless{}List\textless{}dynamic\textgreater{}\textgreater{} iterable); & {\bf{List.insertAll(3,{[}12,23,1235,532{]});}} \tn % Row Count 24 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Sets}} \tn % Row 0 \SetRowColor{LightBackground} var variable\_name = \textless{}variable\_type\textgreater{}\{\}; & {\bf{ var nima = \textless{}String\textgreater{}\{'nimakarimian'\};}} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} Set \textless{}variable\_type\textgreater{} variable\_name = \{\}; & {\bf{ Set\textless{}String\textgreater{} nima = \{'nimakarimian'\}; }} \tn % Row Count 6 (+ 3) % Row 2 \SetRowColor{LightBackground} Set.add(dynamic value); & {\bf{Set.add(35);}} \tn % Row Count 8 (+ 2) % Row 3 \SetRowColor{white} Set.addAll(Iterable\textless{}dynamic\textgreater{} elements); & {\bf{Set.addAll(1,2,3,4,5,7,6);}} \tn % Row Count 10 (+ 2) % Row 4 \SetRowColor{LightBackground} \seqsplit{Set.elementAt(index);} & {\bf{ It returns the element at the corresponding index. }} \tn % Row Count 13 (+ 3) % Row 5 \SetRowColor{white} Set.length; & {\bf{returns the length of the set and the output is of integer type}} \tn % Row Count 17 (+ 4) % Row 6 \SetRowColor{LightBackground} \seqsplit{Set.contains(element\_name);} & {\bf{Returns boolean value if the element is present in the set}} \tn % Row Count 21 (+ 4) % Row 7 \SetRowColor{white} \seqsplit{Set.remove(element\_name);} & {\bf{Removes the Element from the Set}} \tn % Row Count 23 (+ 2) % Row 8 \SetRowColor{LightBackground} Set.forEach(...); & {\bf{It runs the command defined inside forEach() function for all the elements inside the set.}} \tn % Row Count 28 (+ 5) % Row 9 \SetRowColor{white} Set.clear(); & {\bf{It deletes all the elements inside the set}} \tn % Row Count 31 (+ 3) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Sets (cont)}} \tn % Row 10 \SetRowColor{LightBackground} List\textless{}type\textgreater{} \seqsplit{list\_variable\_name} = \seqsplit{set\_variable\_name.toList();} & {\bf{List\textless{}int\textgreater{} idList = idListSet.toList();}} \tn % Row Count 3 (+ 3) % Row 11 \SetRowColor{white} Set.map(); & {\bf{converts the set into the map. }} \tn % Row Count 5 (+ 2) % Row 12 \SetRowColor{LightBackground} {\bf{Set1.union(Set2);}} & {\bf{Set1.intersection(Set2);}} \tn % Row Count 7 (+ 2) % Row 13 \SetRowColor{white} \mymulticolumn{2}{x{17.67cm}}{{\bf{Set2.difference(Set1);}}} \tn % Row Count 8 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{Sets in Dart is a special case in List where all the inputs are unique i.e it doesn't contain any repeated input meanwhile Variable\_type must be specific!} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Maps}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{{\bf{var map\_name = \{ key1 : value1, key2 : value2, ..., key n : value n \}}}} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} {\bf{var map\_name = new Map();}} & {\bf{map\_name {[} key {]} = value;}} \tn % Row Count 4 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{Maps are dictionary-like data types that exist in key-value form (know as lock-key).} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Queues}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{Queue variable\_name = new Queue();}}\textasciicircum{}has unnecessary new keyword\textasciicircum{} & {\bf{Queue Variable\_name;}} \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} // With type notation(E) {\bf{Queue\textless{}E\textgreater{} variable\_name = new Queue\textless{}E\textgreater{}.from(list\_name);}} & // Without type notation {\bf{var variable\_name = new Queue.from(list\_name);}} \tn % Row Count 9 (+ 5) % Row 2 \SetRowColor{LightBackground} {\bf{ queue\_name.add(element);}} & {\bf{queue\_name.addAll(collection\_name)}} \tn % Row Count 11 (+ 2) % Row 3 \SetRowColor{white} {\bf{queue\_name.addFirst(element)}} & Adds the element from front inside the queue. \tn % Row Count 14 (+ 3) % Row 4 \SetRowColor{LightBackground} {\bf{queue\_name.addLast(element)}} & Adds the element from back in the queue. \tn % Row Count 16 (+ 2) % Row 5 \SetRowColor{white} {\bf{queue\_name.clear()}} & Removes all the elements from the queue. \tn % Row Count 18 (+ 2) % Row 6 \SetRowColor{LightBackground} {\bf{queue\_name.first()}} & Returns the first element from the queue. \tn % Row Count 21 (+ 3) % Row 7 \SetRowColor{white} {\bf{queue\_name.forEach(f(element))}} & Invokes action on each element of this iterable in iteration order. \tn % Row Count 25 (+ 4) % Row 8 \SetRowColor{LightBackground} {\bf{queue\_name.isEmpty}} & Returns boolean true if the queue is empty else return false. \tn % Row Count 29 (+ 4) % Row 9 \SetRowColor{white} {\bf{queue\_name.length}} & Returns the length of the queue. \tn % Row Count 31 (+ 2) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{8.635 cm} x{8.635 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Queues (cont)}} \tn % Row 10 \SetRowColor{LightBackground} {\bf{queue\_name.removeFirst()}} & Removes the first element from the queue. \tn % Row Count 3 (+ 3) % Row 11 \SetRowColor{white} {\bf{queue\_name.removeLast()}} & Removes the last element from the queue. \tn % Row Count 5 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{Dart also provides the user to manipulate a collection of data in the form of a queue. A queue is a FIFO (First In First Out) data structure where the element that is added first will be deleted first.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{p{1.727 cm} p{1.727 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{17.67cm}}{\bf\textcolor{white}{Enums}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{enum variable\_name\{ // Insert the data members as shown member1, member2, member3, ...., memberN \}} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{17.67cm}}{{\bf{Limitation of Enumerated Data Type: It cannot be subclassed or mixed in. It is not possible to explicitly instantiate an enum. }}} \tn % Row Count 6 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{17.67cm}}{Enumerated types (also known as enumerations or enums) are primarily used to define named constant values. The enum keyword is used to define an enumeration type in Dart. The use case of enumeration is to store finite data members under the same type definition.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \end{document}