feat(dissertation): add code example for modular compose functions

This commit is contained in:
Anthony Berg 2024-05-13 22:02:07 +01:00
parent 1c0060d0bb
commit 0e6f11b61c
4 changed files with 69 additions and 2 deletions

View File

@ -102,8 +102,9 @@ Brief overview of what it is supposed to do... % TODO
for runtime environments to be specified (in this case, Desktop and Server)
\item Provides necessary build configurations in Gradle
\item Planning what to implement important as Compose is designed to use modular
components, otherwise a nested mess would happen, code harder to read
% TODO add example
components, otherwise a nested mess would happen, code harder to read.
Figure~\ref{fig:compose-modular} shows example of using modular code
from the Actions screen in project (with code omissions)
\item Used Voyager~\cite{voyager} to handle screens
\item Used Koin~\cite{koin} for dependency injection, to be able to get data from the
database and VDMJ
@ -115,6 +116,16 @@ Brief overview of what it is supposed to do... % TODO
\end{itemize}
\end{itemize}
\begin{figure}
\centering
\inputminted[
linenos,
breaklines,
]{kotlin}{code/compose-modular.kt}
\caption[Compose Modular Example]{Example of modular code in Compose}
\label{fig:compose-modular}
\end{figure}
\subsection{Storing Data}

View File

@ -0,0 +1,55 @@
@Composable
override fun Content() {
// Content variables...
Scaffold(
topBar = {/* Composable content... */},
) {
Column(/* Column option parameters... */) {
Box(/* Box option parameters... */) {
LazyColumn(/* LazyColumn option parameters... */) {
item {
Header()
}
items(
items = inputs,
key = { input -> input.id }
) { item ->
ActionItem(item)
}
}
}
}
}
}
@Composable
private fun Header() {
Text(text = "Edit Actions")
}
@Composable
private fun ActionItem(item: Action) {
Column (/* Column option parameters... */) {
Row(/* Row option parameters... */) {
Text(text = "Action ${item.step + 1}")
IconButton(/* IconButton definition parameters... */) {
Icon(
Icons.Outlined.Delete,
// Rest of Icon options...
)
}
}
Row(/* Row option parameters... */) {
OutlinedTextField(/* TextField definition parameters... */)
OutlinedTextField(/* TextField definition parameters... */)
}
HorizontalDivider()
}
}

Binary file not shown.

View File

@ -13,6 +13,7 @@
%\usepackage{vdmlisting}
\usepackage{listings}
\usepackage{minted}
% Taken from vdmlisting
\lstdefinelanguage{VDM_SL}
{morekeywords={RESULT,\#else,\#endif,\#ifdef,\#ifndef,abs,all,always,and,as,atomic,be,be st,bool,by,card,cases,char,comp,compose,conc,dcl,def,definitions,dinter,div,dlmodule,do,dom,dunion,