1
0
mirror of https://github.com/flutter/samples.git synced 2025-11-08 22:09:06 +00:00

Flutter 3.29 beta (#2571)

This commit is contained in:
Eric Windmill
2025-02-12 18:08:01 -05:00
committed by GitHub
parent d62c784789
commit 719fd72c38
685 changed files with 76244 additions and 53721 deletions

View File

@@ -16,21 +16,17 @@ main() async {
print(json.encode({'firstFrame': analyzer.onFirstFrame.value}));
});
analyzer.onFirstPaint.addListener(() {
print(json.encode({
'firstPaint': analyzer.onFirstPaint.value?.$1,
'firstContentfulPaint': analyzer.onFirstPaint.value?.$2,
}));
print(
json.encode({
'firstPaint': analyzer.onFirstPaint.value?.$1,
'firstContentfulPaint': analyzer.onFirstPaint.value?.$2,
}),
);
});
analyzer.onAdditionalFrames.addListener(() {
print(json.encode({
'additionalFrames': analyzer.onAdditionalFrames.value,
}));
print(json.encode({'additionalFrames': analyzer.onAdditionalFrames.value}));
});
runApp(
WebStartupAnalyzerSample(
analyzer: analyzer,
),
);
runApp(WebStartupAnalyzerSample(analyzer: analyzer));
}
class WebStartupAnalyzerSample extends StatelessWidget {
@@ -102,12 +98,14 @@ class _WebStartupAnalyzerScreenState extends State<WebStartupAnalyzerScreen> {
),
if (widget.analyzer.firstPaint != null)
TimingWidget(
name: 'First paint',
timingMs: widget.analyzer.firstPaint!),
name: 'First paint',
timingMs: widget.analyzer.firstPaint!,
),
if (widget.analyzer.firstContentfulPaint != null)
TimingWidget(
name: 'First contentful paint',
timingMs: widget.analyzer.firstContentfulPaint!),
name: 'First contentful paint',
timingMs: widget.analyzer.firstContentfulPaint!,
),
if (widget.analyzer.additionalFrames != null) ...[
for (var i in widget.analyzer.additionalFrames!)
TimingWidget(name: 'Frame', timingMs: i.toDouble()),
@@ -130,11 +128,7 @@ class TimingWidget extends StatelessWidget {
final String name;
final double timingMs;
const TimingWidget({
super.key,
required this.name,
required this.timingMs,
});
const TimingWidget({super.key, required this.name, required this.timingMs});
@override
Widget build(BuildContext context) {

View File

@@ -3,7 +3,7 @@ description: "flutter_web_startup_analyzer example"
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: ^3.5.0
sdk: ^3.7.0-0
flutter: ^3.16.0
dependencies:
flutter:

View File

@@ -16,7 +16,7 @@ class FrameAnalyzer {
List<int> additionalFrameTimes = [];
FrameAnalyzer(this._binding, {this.additionalFrames = 10})
: _remainingFrames = additionalFrames;
: _remainingFrames = additionalFrames;
Future<void> captureAdditionalFrames() {
_binding.addTimingsCallback(_timingsCallback);

View File

@@ -52,9 +52,11 @@ class WebStartupAnalyzer extends WebStartupAnalyzerBase {
List<int>? get additionalFrames => _additionalFrames;
WebStartupAnalyzer({int additionalFrameCount = 5})
: _widgetsBinding = WidgetsFlutterBinding.ensureInitialized() {
_frameAnalyzer =
FrameAnalyzer(_widgetsBinding, additionalFrames: additionalFrameCount);
: _widgetsBinding = WidgetsFlutterBinding.ensureInitialized() {
_frameAnalyzer = FrameAnalyzer(
_widgetsBinding,
additionalFrames: additionalFrameCount,
);
_captureStartupMetrics();
startupTiming = {
'domContentLoaded': domContentLoaded,
@@ -76,8 +78,11 @@ class WebStartupAnalyzer extends WebStartupAnalyzerBase {
_additionalFrames = value;
onAdditionalFrames.value = value;
});
onChange =
Listenable.merge([onFirstFrame, onFirstPaint, onAdditionalFrames]);
onChange = Listenable.merge([
onFirstFrame,
onFirstPaint,
onAdditionalFrames,
]);
}
_captureStartupMetrics() {

View File

@@ -3,7 +3,7 @@ description: "Captures web startup timing data in a Flutter web app"
version: 0.1.0-wip
environment:
sdk: ^3.5.0
sdk: ^3.7.0-0
flutter: ^3.16.0
dependencies: