Skip to content

Instantly share code, notes, and snippets.

View Toglefritz's full-sized avatar

Scott Hatfield Toglefritz

View GitHub Profile
@Toglefritz
Toglefritz / openai_completions_endpoint.dart
Created July 30, 2022 00:36
The POST endpoint used to interact with the OpenAI completions API.
// The completions endpoint
static final Uri completionsEndpoint = Uri.parse('https://api.openai.com/v1/completions');
@Toglefritz
Toglefritz / openai_completions_headers.dart
Created July 30, 2022 01:02
The headers used in requests to the OpenAI completions endpoint.
// The headers for the completions endpoint, which are the same for all requests
static final Map<String, String> headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer $openAIApiKey',
};
@Toglefritz
Toglefritz / partly_windy_get_new_forecast_completion.dart
Last active July 30, 2022 01:59
Gets a "weather forecast" from the OpenAI completions endpoint for use in the Partly Windy app.
/// Gets a "weather forecast" from the OpenAI completions endpoint
static Future<CompletionsResponse> getNewForecast() async {
debugPrint('Getting a new weather forecast');
CompletionsRequest request = CompletionsRequest(
model: 'text-curie-001',
prompt: 'Today's forecast is',
maxTokens: 9,
temperature: 0.6,
);
@Toglefritz
Toglefritz / partly_windy_using_openai_completion.dart
Created July 30, 2022 02:32
A widget that uses the OpenAI completions API integration in the Partly Windy app to get a response from the OpenAI ML models.
return FutureBuilder(
future: CompletionsApi.getForecast(constraints.maxWidth < 300 ? 6 : 9),
builder: (BuildContext context, AsyncSnapshot<String?> forecast) {
if (forecast.hasData) {
dailyForecast = forecast.data;
return Text(dailyForecast);
} else {
// Display a loading indicator while waiting for the forecast
return const CircularProgressIndicator();
}
@Toglefritz
Toglefritz / ic_launcher.xml
Created September 10, 2022 02:10
Android drawable resource for themed icon support
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon>
@Toglefritz
Toglefritz / variable_scoping_example.dart
Created June 30, 2023 11:46
Flutter/Dart private versus public variable
class SimpleClass {
// Public variable, accessible from outside the class
String publicVariable;
// Private variable, accessible only within this class
String _privateVariable;
SimpleClass(this.publicVariable, this._privateVariable);
}
@Toglefritz
Toglefritz / clock_controller_simplified.dart
Created July 2, 2023 14:21
Private variables in Dart classes example
/// A controller class designed for driving a clock interface in a Flutter application.
class ClockController with ChangeNotifier {
/// The current time in 12-hour format.
late DateTime _currentTime;
// Getter for the current time
DateTime get currentTime => _currentTime;
ClockController() {
_currentTime = DateTime.now();
@Toglefritz
Toglefritz / clock_controller_simplified.dart
Created July 2, 2023 18:25
Private variables in Dart classes example
/// A controller class designed for driving a clock interface in a Flutter application.
class ClockController with ChangeNotifier {
/// The current time in 12-hour format.
late DateTime _currentTime;
// Getter for the current time
DateTime get currentTime => _currentTime;
/// A [DateTime] when the alarm should be triggered
DateTime? _alarm;
/// This is a setter used to set the value of the private variable, `_alarm`
set alarm(DateTime alarmTime) {
if(alarmTime.hour < 5) {
throw Exception('Nope. That is far to early to set an alarm.');
} else {
_alarm = alarmTime;
}
}
/// This is an equivalent function, also used to set the value of the private variable, `_alarm`
@Toglefritz
Toglefritz / equivalent_setter_and_function_calls.dart
Created July 2, 2023 18:38
equivalent setter and function calls example
/// This block uses the setter defined in the previous example.
try {
alarm = alarmTime;
print('Alarm set for: $alarm');
} catch (e) {
print('Error: $e');
}
/// This block uses the equivalent function defined in the previous example.
try {