Creating command for slides in Beamer that show up one at a time

I'm working on a command to produce multiple itemized beamer slides where each item is revealed on the next slide (but the future bullets can still be seen).

Unfortunately, it doesn't quite work. The bullets begin improperly spaced and the last bullet doesn't even show up until the last slide that's generated.

My incorrect solution uses a nested multido command instead of foreach because I need to use the indices.

Here's a MWE:

\documentclass{beamer}
\setbeamertemplate{frametitle}[default][center]
\usepackage{multido, arrayjob, ifthen} %arrays, etc, for the multiSlideItems command

%command for multi-slide lists in beamer
%usage: \multiSlideItems{SlidesTitle}{Pre-listContent}{listLength}{List-as-&-separatedArray}{Post-listContent}
\newcommand{\multiSlideItems}[5]{
\newarray\SlideItems
\multido{\i=1+1}{#3}{%
{\begin{frame}
\frametitle{#1}
#2 %The pre-list stuff
{\begin{itemize}
{\multido{\ii=1+1}{#3}{%
\ifthenelse{\i<\ii}{%
\item \phantom{\SlideItems(\ii)}}{%
\item \SlideItems(\ii)}}}
\end{itemize}
\ifthenelse{\i<#3}{\phantom{#5}}{#5}} %post-list stuff to display if the list has been fully revealed
\end{frame}}}
}

\begin{document}
\multiSlideItems{X}{}{3}{A&B&C}{}
\end{document}


You can make beamer do the work for you:

\documentclass{beamer}
\setbeamertemplate{frametitle}[default][center]

\newenvironment{myitemize}{%
\begingroup
\setbeamercolor{itemize item}{parent=structure}
\setbeamercolor{itemize/enumerate body}{fg=white}
}{
\end{itemize}
\endgroup
}

\begin{document}

\begin{frame}
\frametitle{X}
\begin{myitemize}
\item A
\item B
\item C
\end{myitemize}
\end{frame}
\end{document}

• Is there a way to get this to display the stuff after the list to only show up when the last item appears?
– Kyle
Oct 9, 2017 at 18:46
• @Kyle \pause. Oct 9, 2017 at 18:48