Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 0 additions & 69 deletions .github/workflows/beta.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
strategy:
fail-fast: false
matrix:
flutter_version: [stable, beta]
flutter_version: [stable]
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
Expand Down
35 changes: 19 additions & 16 deletions cupertino_gallery/lib/widgets/sheet_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,25 @@ class SheetPage extends StatelessWidget {
onPressed: () {
Navigator.of(context).push(
CupertinoSheetRoute<void>(
builder: (BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: const Text('Sheet'),
trailing: GestureDetector(
child: const Icon(CupertinoIcons.xmark),
onTap: () {
Navigator.of(context).pop();
},
),
),
child: const Center(
child: Text('This is a sheet'),
),
);
},
scrollableBuilder:
(BuildContext context, ScrollController controller) {
Widget widgetBuilder(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: const Text('Sheet'),
trailing: GestureDetector(
child: const Icon(CupertinoIcons.xmark),
onTap: () {
Navigator.of(context).pop();
},
),
),
child: const Center(child: Text('This is a sheet')),
);
}

return widgetBuilder(context);
},
),
);
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// swift-tools-version: 5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.
//
// Generated file. Do not edit.
//

import PackageDescription

let package = Package(
name: "FlutterGeneratedPluginSwiftPackage",
platforms: [
.iOS("13.0")
],
products: [
.library(name: "FlutterGeneratedPluginSwiftPackage", type: .static, targets: ["FlutterGeneratedPluginSwiftPackage"])
],
dependencies: [
.package(name: "url_launcher_ios", path: "../.packages/url_launcher_ios")
],
targets: [
.target(
name: "FlutterGeneratedPluginSwiftPackage",
dependencies: [
.product(name: "url-launcher-ios", package: "url_launcher_ios")
]
)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
//
// Generated file. Do not edit.
//
32 changes: 32 additions & 0 deletions gemini_tasks/ios/Flutter/ephemeral/flutter_lldb_helper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#
# Generated file, do not edit.
#

import lldb

def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict):
"""Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages."""
base = frame.register["x0"].GetValueAsAddress()
page_len = frame.register["x1"].GetValueAsUnsigned()

# Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the
# first page to see if handled it correctly. This makes diagnosing
# misconfiguration (e.g. missing breakpoint) easier.
data = bytearray(page_len)
data[0:8] = b'IHELPED!'

error = lldb.SBError()
frame.GetThread().GetProcess().WriteMemory(base, data, error)
if not error.Success():
print(f'Failed to write into {base}[+{page_len}]', error)
return

def __lldb_init_module(debugger: lldb.SBDebugger, _):
target = debugger.GetDummyTarget()
# Caveat: must use BreakpointCreateByRegEx here and not
# BreakpointCreateByName. For some reasons callback function does not
# get carried over from dummy target for the later.
bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$")
bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__))
bp.SetAutoContinue(True)
print("-- LLDB integration loaded --")
5 changes: 5 additions & 0 deletions gemini_tasks/ios/Flutter/ephemeral/flutter_lldbinit
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#
# Generated file, do not edit.
#

command script import --relative-to-command-file flutter_lldb_helper.py
11 changes: 11 additions & 0 deletions gemini_tasks/macos/Flutter/ephemeral/Flutter-Generated.xcconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// This is a generated file; do not edit or check into version control.
FLUTTER_ROOT=/Users/ewindmill/development/flutter
FLUTTER_APPLICATION_PATH=/Users/ewindmill/development/samples/gemini_tasks
COCOAPODS_PARALLEL_CODE_SIGN=true
FLUTTER_BUILD_DIR=build
FLUTTER_BUILD_NAME=1.0.0
FLUTTER_BUILD_NUMBER=1
DART_OBFUSCATION=false
TRACK_WIDGET_CREATION=true
TREE_SHAKE_ICONS=false
PACKAGE_CONFIG=.dart_tool/package_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// swift-tools-version: 5.9
// The swift-tools-version declares the minimum version of Swift required to build this package.
//
// Generated file. Do not edit.
//

import PackageDescription

let package = Package(
name: "FlutterGeneratedPluginSwiftPackage",
platforms: [
.macOS("10.15")
],
products: [
.library(name: "FlutterGeneratedPluginSwiftPackage", type: .static, targets: ["FlutterGeneratedPluginSwiftPackage"])
],
dependencies: [
.package(name: "url_launcher_macos", path: "../.packages/url_launcher_macos")
],
targets: [
.target(
name: "FlutterGeneratedPluginSwiftPackage",
dependencies: [
.product(name: "url-launcher-macos", package: "url_launcher_macos")
]
)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
//
// Generated file. Do not edit.
//
12 changes: 12 additions & 0 deletions gemini_tasks/macos/Flutter/ephemeral/flutter_export_environment.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/sh
# This is a generated file; do not edit or check into version control.
export "FLUTTER_ROOT=/Users/ewindmill/development/flutter"
export "FLUTTER_APPLICATION_PATH=/Users/ewindmill/development/samples/gemini_tasks"
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
export "FLUTTER_BUILD_DIR=build"
export "FLUTTER_BUILD_NAME=1.0.0"
export "FLUTTER_BUILD_NUMBER=1"
export "DART_OBFUSCATION=false"
export "TRACK_WIDGET_CREATION=true"
export "TREE_SHAKE_ICONS=false"
export "PACKAGE_CONFIG=.dart_tool/package_config.json"
5 changes: 5 additions & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,8 @@ skip_ci:
- add_to_app/multiple_flutters/multiple_flutters_module
- add_to_app/plugin/flutter_module_using_plugin
- add_to_app/prebuilt_module/flutter_module

skip_ci_beta:
- material_3_demo
# TODO(ewindmill): info - lib/basic_text_input_client.dart:262:11 - 'setStyle' is deprecated and shouldn't be used. Use updateStyle instead. This feature was deprecated after v3.41.0-0.0.pre. Try replacing the use of the deprecated member with the replacement. - deprecated_member_use on beta branch
- simplistic_editor
43 changes: 42 additions & 1 deletion tool/ci_script.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'dart:convert';
import 'dart:io';
import 'package:path/path.dart' as path;
import 'package:yaml/yaml.dart';
Expand All @@ -8,19 +9,39 @@ Future<void> main() async {
final pubspecContent = await pubspecFile.readAsString();
final pubspecYaml = loadYaml(pubspecContent);

// contains full list of samples
final workspace = pubspecYaml['workspace'] as YamlList?;

if (workspace == null) {
print('No workspace found in pubspec.yaml');
exit(1);
}

// CI always skips the samples on this list
final skipCiList = pubspecYaml['skip_ci'] as YamlList?;

// CI will also skip for samples on specific branches
// This is useful when API changes in the beta branch are causing CI to fail
// and there isn't a solution that works in both beta and main
final channel = await _getFlutterChannel();
print('Current Flutter channel: $channel');

final channelSkipKey = 'skip_ci_$channel';
final channelSkipList = pubspecYaml[channelSkipKey] as YamlList?;
if (channelSkipList != null) {
print('Applying skips for channel "$channel": $channelSkipList');
}

// pub workspace, only run 'get' once
await _runCommand('flutter', ['pub', 'get'], workingDirectory: rootDir.path);

final packages = workspace
.where((e) => skipCiList == null || !skipCiList.contains(e))
.where((e) {
if (skipCiList != null && skipCiList.contains(e)) return false;
if (channelSkipList != null && channelSkipList.contains(e))
return false;
return true;
})
.map((e) => e.toString())
.toList();

Expand Down Expand Up @@ -70,3 +91,23 @@ Future<void> _runCommand(
exit(exitCode);
}
}

Future<String> _getFlutterChannel() async {
try {
final result = await Process.run('flutter', [
'--version',
'--machine',
], runInShell: true);
if (result.exitCode != 0) {
print('Flutter version command failed with exit code ${result.exitCode}');
print('Stdout: ${result.stdout}');
print('Stderr: ${result.stderr}');
return 'unknown';
}
final machineInfo = jsonDecode(result.stdout as String);
return machineInfo['channel'] as String? ?? 'unknown';
} catch (e) {
print('Error detecting Flutter channel: $e');
return 'unknown';
}
}
Loading
Loading