1
0
mirror of https://github.com/flutter/samples.git synced 2025-11-08 13:58:47 +00:00

Dart 3.9 / Flutter 3.35 [first LLM release] (#2714)

I got carried away with Gemini and basically rewrote CI and the release
process for the new LLM reality. This work was largely completed by
Gemini.

- Bump all SDK versions to the current beta (3.9.0-0)
- Run `flutter channel beta`
- Wrote `ci_script.dart` to replace the bash scripts
- Converted repository to pub workspace #2499 
- Added llm.md and release.md
- Added redirect for deprecated Samples Index

## Pre-launch Checklist

- [x] I read the [Flutter Style Guide] _recently_, and have followed its
advice.
- [x] I signed the [CLA].
- [x] I read the [Contributors Guide].
- [x] I have added sample code updates to the [changelog].
- [x] I updated/added relevant documentation (doc comments with `///`).
This commit is contained in:
Eric Windmill
2025-08-14 12:26:24 -07:00
committed by GitHub
parent 0aa5415d5e
commit 2999d738b8
410 changed files with 28166 additions and 27661 deletions

View File

@@ -65,20 +65,19 @@ class _HomeState extends State<Home> {
Widget build(BuildContext context) {
final textTheme = Theme.of(context).textTheme;
final barGroups =
hourlySteps
.map(
(e) => BarChartGroupData(
x: int.parse(e.startHour),
barRods: [
BarChartRodData(
color: Colors.blue[900],
toY: e.steps.toDouble() / 100,
),
],
final barGroups = hourlySteps
.map(
(e) => BarChartGroupData(
x: int.parse(e.startHour),
barRods: [
BarChartRodData(
color: Colors.blue[900],
toY: e.steps.toDouble() / 100,
),
)
.toList();
],
),
)
.toList();
return Scaffold(
body: Stack(
@@ -99,14 +98,14 @@ class _HomeState extends State<Home> {
children: [
lastUpdated != null
? Padding(
padding: const EdgeInsets.symmetric(vertical: 50.0),
child: Text(
DateFormat.yMMMMd('en_US').format(lastUpdated!),
style: textTheme.titleLarge!.copyWith(
color: Colors.blue[900],
padding: const EdgeInsets.symmetric(vertical: 50.0),
child: Text(
DateFormat.yMMMMd('en_US').format(lastUpdated!),
style: textTheme.titleLarge!.copyWith(
color: Colors.blue[900],
),
),
),
)
)
: const SizedBox(height: 0),
Text(
hourlySteps.fold(0, (t, e) => t + e.steps).toString(),

View File

@@ -45,10 +45,11 @@ class _IOSStepsRepo implements StepsRepo {
final dylib = ffi.DynamicLibrary.open("pedometer.framework/pedometer");
// Initialize the Dart API
final initializeApi = dylib.lookupFunction<
ffi.IntPtr Function(ffi.Pointer<ffi.Void>),
int Function(ffi.Pointer<ffi.Void>)
>('Dart_InitializeApiDL');
final initializeApi = dylib
.lookupFunction<
ffi.IntPtr Function(ffi.Pointer<ffi.Void>),
int Function(ffi.Pointer<ffi.Void>)
>('Dart_InitializeApiDL');
final initializeResult = initializeApi(ffi.NativeApi.initializeApiDLData);
if (initializeResult != 0) {
@@ -106,8 +107,9 @@ class _IOSStepsRepo implements StepsRepo {
) {
if (result != null) {
final stepCount = result.numberOfSteps.intValue;
final startHour =
hourFormatter.stringFromDate_(result.startDate).toString();
final startHour = hourFormatter
.stringFromDate_(result.startDate)
.toString();
completer.complete(Steps(startHour, stepCount));
} else {
debugPrint("Query error: ${error?.localizedDescription}");
@@ -136,8 +138,8 @@ class _AndroidStepsRepo implements StepsRepo {
// ignore: invalid_use_of_internal_member
activity = hc.Activity.fromReference(jni.Jni.getCurrentActivity());
applicationContext =
// ignore: invalid_use_of_internal_member
hc.Context.fromReference(jni.Jni.getCachedApplicationContext());
// ignore: invalid_use_of_internal_member
hc.Context.fromReference(jni.Jni.getCachedApplicationContext());
client = hc.HealthConnectClient.getOrCreate$1(applicationContext);
}
@@ -147,10 +149,18 @@ class _AndroidStepsRepo implements StepsRepo {
final now = DateTime.now();
for (var h = 0; h <= now.hour; h++) {
final start =
DateTime(now.year, now.month, now.day, h).millisecondsSinceEpoch;
final end =
DateTime(now.year, now.month, now.day, h + 1).millisecondsSinceEpoch;
final start = DateTime(
now.year,
now.month,
now.day,
h,
).millisecondsSinceEpoch;
final end = DateTime(
now.year,
now.month,
now.day,
h + 1,
).millisecondsSinceEpoch;
final request = hc.AggregateRequest(
{
hc.StepsRecord.COUNT_TOTAL,

View File

@@ -1,5 +1,8 @@
name: pedometer_example
description: Demonstrates how to use the pedometer plugin.
version: 1.0.0+1
resolution: workspace
# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
@@ -16,10 +19,10 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.0.0+1
environment:
sdk: ^3.7.0-0
sdk: ^3.9.0-0
# Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions
@@ -41,10 +44,12 @@ dependencies:
ffi: ^2.1.2
intl: ^0.20.0
jni: ^0.13.0
fl_chart: ^0.70.0
jni: ^0.14.2
fl_chart: ^1.0.0
dev_dependencies:
analysis_defaults:
path: ../../analysis_defaults
flutter_test:
sdk: flutter
@@ -53,7 +58,7 @@ dev_dependencies:
# activated in the `analysis_options.yaml` file located at the root of your
# package. See that file for information about deactivating specific lint
# rules and activating additional ones.
flutter_lints: ^5.0.0
flutter_lints: ^6.0.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

View File

@@ -235,8 +235,8 @@ final class $HealthConnectClient$Companion$NullableType
@core$_.override
HealthConnectClient$Companion? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: HealthConnectClient$Companion.fromReference(reference);
? null
: HealthConnectClient$Companion.fromReference(reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectType();
@@ -828,10 +828,9 @@ class HealthConnectClient extends jni$_.JObject {
final $o = jni$_.JGlobalReference(
jni$_.JObjectPtr.fromAddress(await $p.first),
);
final $k =
const jni$_.JListType<jni$_.JObject>(
jni$_.JObjectType(),
).jClass.reference;
final $k = const jni$_.JListType<jni$_.JObject>(
jni$_.JObjectType(),
).jClass.reference;
if (!jni$_.Jni.env.IsInstanceOf($o.pointer, $k.pointer)) {
$k.release();
throw 'Failed';
@@ -887,10 +886,9 @@ class HealthConnectClient extends jni$_.JObject {
final $o = jni$_.JGlobalReference(
jni$_.JObjectPtr.fromAddress(await $p.first),
);
final $k =
const jni$_.JListType<jni$_.JObject>(
jni$_.JObjectType(),
).jClass.reference;
final $k = const jni$_.JListType<jni$_.JObject>(
jni$_.JObjectType(),
).jClass.reference;
if (!jni$_.Jni.env.IsInstanceOf($o.pointer, $k.pointer)) {
$k.release();
throw 'Failed';
@@ -2179,8 +2177,8 @@ final class $PermissionController$Companion$NullableType
@core$_.override
PermissionController$Companion? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: PermissionController$Companion.fromReference(reference);
? null
: PermissionController$Companion.fromReference(reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectType();
@@ -2313,10 +2311,9 @@ class PermissionController extends jni$_.JObject {
final $o = jni$_.JGlobalReference(
jni$_.JObjectPtr.fromAddress(await $p.first),
);
final $k =
const jni$_.JSetType<jni$_.JObject>(
jni$_.JObjectType(),
).jClass.reference;
final $k = const jni$_.JSetType<jni$_.JObject>(
jni$_.JObjectType(),
).jClass.reference;
if (!jni$_.Jni.env.IsInstanceOf($o.pointer, $k.pointer)) {
$k.release();
throw 'Failed';
@@ -3599,8 +3596,8 @@ final class $TimeRangeFilter$Companion$NullableType
@core$_.override
TimeRangeFilter$Companion? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: TimeRangeFilter$Companion.fromReference(reference);
? null
: TimeRangeFilter$Companion.fromReference(reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectType();
@@ -10754,8 +10751,8 @@ final class $Intent$FilterComparison$NullableType
@core$_.override
Intent$FilterComparison? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: Intent$FilterComparison.fromReference(reference);
? null
: Intent$FilterComparison.fromReference(reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectNullableType();
@@ -11044,8 +11041,8 @@ final class $Intent$ShortcutIconResource$NullableType
@core$_.override
Intent$ShortcutIconResource? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: Intent$ShortcutIconResource.fromReference(reference);
? null
: Intent$ShortcutIconResource.fromReference(reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectNullableType();
@@ -29213,8 +29210,8 @@ final class $AggregateGroupByDurationRequest$NullableType
@core$_.override
AggregateGroupByDurationRequest? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: AggregateGroupByDurationRequest.fromReference(reference);
? null
: AggregateGroupByDurationRequest.fromReference(reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectType();
@@ -29431,8 +29428,8 @@ final class $AggregateGroupByPeriodRequest$NullableType
@core$_.override
AggregateGroupByPeriodRequest? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: AggregateGroupByPeriodRequest.fromReference(reference);
? null
: AggregateGroupByPeriodRequest.fromReference(reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectType();
@@ -30137,8 +30134,8 @@ final class $ReadRecordsRequest$NullableType<$T extends jni$_.JObject>
@core$_.override
ReadRecordsRequest<$T>? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: ReadRecordsRequest<$T>.fromReference(T, reference);
? null
: ReadRecordsRequest<$T>.fromReference(T, reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectType();
@@ -30722,8 +30719,8 @@ final class $AggregateMetric$AggregationType$NullableType
@core$_.override
AggregateMetric$AggregationType? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: AggregateMetric$AggregationType.fromReference(reference);
? null
: AggregateMetric$AggregationType.fromReference(reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectType();
@@ -30853,8 +30850,8 @@ final class $AggregateMetric$Companion$NullableType
@core$_.override
AggregateMetric$Companion? fromReference(jni$_.JReference reference) =>
reference.isNull
? null
: AggregateMetric$Companion.fromReference(reference);
? null
: AggregateMetric$Companion.fromReference(reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectType();
@@ -31054,13 +31051,9 @@ final class $AggregateMetric$Converter$FromDouble$NullableType<
@core$_.override
AggregateMetric$Converter$FromDouble<$R>? fromReference(
jni$_.JReference reference,
) =>
reference.isNull
? null
: AggregateMetric$Converter$FromDouble<$R>.fromReference(
R,
reference,
);
) => reference.isNull
? null
: AggregateMetric$Converter$FromDouble<$R>.fromReference(R, reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectNullableType();
@@ -31270,10 +31263,9 @@ final class $AggregateMetric$Converter$FromLong$NullableType<
@core$_.override
AggregateMetric$Converter$FromLong<$R>? fromReference(
jni$_.JReference reference,
) =>
reference.isNull
? null
: AggregateMetric$Converter$FromLong<$R>.fromReference(R, reference);
) => reference.isNull
? null
: AggregateMetric$Converter$FromLong<$R>.fromReference(R, reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectNullableType();
@@ -31507,10 +31499,9 @@ final class $AggregateMetric$Converter$NullableType<
@core$_.override
AggregateMetric$Converter<$T, $R>? fromReference(
jni$_.JReference reference,
) =>
reference.isNull
? null
: AggregateMetric$Converter<$T, $R>.fromReference(T, R, reference);
) => reference.isNull
? null
: AggregateMetric$Converter<$T, $R>.fromReference(T, R, reference);
@jni$_.internal
@core$_.override
jni$_.JObjType get superType => const jni$_.JObjectNullableType();

File diff suppressed because it is too large Load Diff

View File

@@ -2,23 +2,26 @@ name: pedometer
description: A new Flutter FFI plugin project.
version: 0.0.1
publish_to: none
resolution: workspace
environment:
sdk: ^3.7.0-0
sdk: ^3.9.0-0
dependencies:
flutter:
sdk: flutter
plugin_platform_interface: ^2.1.8
jni: ^0.13.0
jni: ^0.14.2
ffi: ^2.1.2
dev_dependencies:
ffigen: ^16.0.0
jnigen: ^0.13.1
analysis_defaults:
path: ../analysis_defaults
ffigen: ^19.1.0
jnigen: ^0.14.2
flutter_test:
sdk: flutter
flutter_lints: ^5.0.0
flutter_lints: ^6.0.0
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec