7.2. Grundlagen¶
7.2.1. Flutter¶
Flutter ist ein Open-Source-Framework von Google zur Erstellung von plattformübergreifenden Anwendungen mit einer einzigen Codebasis. Mit Flutter können Entwickler native Apps für mobile, webbasierte und Desktop-Plattformen erstellen. Flutter Apps können für folgende Plattformen kompiliert werden:
Android
iOS
Web
Windows
macOS
Linux
Hauptkomponenten von Flutter¶
Dart:¶
Die Programmiersprache, die von Flutter verwendet wird. Sie wurde bei Google eigens für die Entwicklung von Flutter entwickelt und bietet eine einfache Syntax, Typinferenz und eine Vielzahl von Funktionen, die für die Entwicklung von mobilen Apps nützlich sind. Dart ist eine objektorientierte, klassenbasierte Sprache mit einer einfachen Syntax, die für die Entwicklung von Frontend-Anwendungen optimiert ist. Die Sprache bietet Funktionen wie Generatoren, Futures und Streams. Dart steht unter der BSD-Lizenz und ist eine der Hauptkomponenten von Flutter.
Widget:¶
Die grundlegenden Bausteine jeder Flutter-Anwendung. Widgets beschreiben, wie die Benutzeroberfläche aussehen und sich verhalten soll, und können aus einfachen Elementen wie Text oder Schaltflächen bis hin zu komplexen Layouts bestehen. Flutter liefert mit MaterialApp und CupertinoApp zwei vorgefertigte Widgets, die das Design und die Navigation der App steuern. Das Layout der Seite lässt sich über ein paar wenige Widgets wie Column, Row, Container und ListView definieren. Widgets werden HTML-ähnlich in einer Baumstruktur angeordnet, wobei jedes Widget einen eigenen Kontext und Zustand hat. „Everything in Flutter is a Widget“. Bedeutet: Jedes Element in Flutter ist ein Widget, einschließlich der App selbst, der Seiten, der Texte, der Schaltflächen, der Bilder und sogar des Layouts.
MaterialApp:¶
Ein vorgefertigtes Widget, das viele grundlegende Funktionen bereitstellt, die für die meisten mobilen Apps benötigt werden, wie z.B. Navigation, Thematisierung und Lokalisierung. MaterialApp ist Teil des Material Design-Konzepts von Google und bietet eine konsistente Benutzeroberfläche für Android-Apps und auch alle anderen Plattformen.
CupertinoApp:¶
CupertinoApp ist das iOS-Äquivalent von MaterialApp und bietet ein natives iOS-Design, das dem Look-and-Feel von iOS-Apps entspricht.
7.2.2. State Management in Flutter¶
State Management ist ein entscheidender Aspekt der Flutter-Entwicklung, da er bestimmt, wie Daten gehandhabt und an die Benutzeroberfläche weitergegeben werden. In Flutter gibt es mehrere Ansätze zur Verwaltung des Zustands einer Anwendung.
7.2.3. OpenAI ChatGPT API¶
Die OpenAI ChatGPT API ermöglicht Entwicklern den Zugriff auf das GPT-Modelle von OpenAI, um natürliche Sprachverarbeitung in die Anwendungen zu integrieren. Mit der API können Textanfragen gesendet und KI-generierte Antworten empfangen werden, was eine Vielzahl von Anwendungsfällen wie Chatbots, automatisierte Kundenbetreuung und mehr ermöglicht.
Hauptfunktionen der ChatGPT API¶
Autorisierung:¶
Die API verwendet eine Schlüssel-basierte Autorisierung. Jeder API-Schlüssel ist eindeutig und ermöglicht den Zugriff auf die OpenAI-Dienste. Der sogenannte Bearer-Token muss bei jeder Anfrage in den Headern enthalten sein.
Endpunkte:¶
Die API bietet verschiedene Endpunkte, um Textanfragen zu verarbeiten und Antworten zu generieren. Der Hauptendpunkt für Textgenerierung ist https://api.openai.com/v1/chat/completions
.
Mögliche Endpunkte sind:
Chat: Für die Interaktion mit dem ChatGPT-Modell
Audio: Für Audio to Text oder Text to Audio
Images: Zur Bildgenerierung
Antwortformat:¶
Die Antworten der API werden im JSON-Format zurückgegeben und enthalten Informationen wie den generierten Text, die Konversations-ID und mögliche Alternativen.
Mit diesem Wissen als Grundlage können wir nun die praktische Implementierung der Flutter-App beginnen, die die OpenAI ChatGPT API nutzt, um eine interaktive und dynamische ChatGPT-ähnliche Anwendung zu erstellen.