| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import '../test_utils.dart'; |
| import 'project.dart'; |
| |
| /// Spawns a background isolate that prints a debug message. |
| class BackgroundProject extends Project { |
| |
| @override |
| final String pubspec = ''' |
| name: test |
| environment: |
| sdk: ">=2.12.0-0 <3.0.0" |
| |
| dependencies: |
| flutter: |
| sdk: flutter |
| '''; |
| |
| @override |
| final String main = r''' |
| import 'dart:async'; |
| import 'dart:isolate'; |
| |
| import 'package:flutter/widgets.dart'; |
| import 'package:flutter/material.dart'; |
| |
| void main() { |
| Isolate.spawn<void>(background, null, debugName: 'background'); |
| TestMain(); |
| } |
| |
| void background(void message) { |
| TestIsolate(); |
| } |
| |
| class TestMain { |
| TestMain() { |
| debugPrint('Main thread'); |
| } |
| } |
| |
| class TestIsolate { |
| TestIsolate() { |
| debugPrint('Isolate thread'); |
| } |
| } |
| '''; |
| |
| void updateTestIsolatePhrase(String message) { |
| final String newMainContents = main.replaceFirst('Isolate thread', message); |
| writeFile(fileSystem.path.join(dir.path, 'lib', 'main.dart'), newMainContents, |
| writeFutureModifiedDate: true); |
| } |
| } |
| |
| // Spawns a background isolate that repeats a message. |
| class RepeatingBackgroundProject extends Project { |
| |
| @override |
| final String pubspec = ''' |
| name: test |
| environment: |
| sdk: ">=2.12.0-0 <3.0.0" |
| |
| dependencies: |
| flutter: |
| sdk: flutter |
| '''; |
| |
| @override |
| final String main = r''' |
| import 'dart:async'; |
| import 'dart:isolate'; |
| |
| import 'package:flutter/widgets.dart'; |
| import 'package:flutter/material.dart'; |
| |
| void main() { |
| Isolate.spawn<void>(background, null, debugName: 'background'); |
| TestMain(); |
| } |
| |
| void background(void message) { |
| Timer.periodic(const Duration(milliseconds: 500), (Timer timer) => TestIsolate()); |
| } |
| |
| class TestMain { |
| TestMain() { |
| debugPrint('Main thread'); |
| } |
| } |
| |
| class TestIsolate { |
| TestIsolate() { |
| debugPrint('Isolate thread'); |
| } |
| } |
| '''; |
| |
| void updateTestIsolatePhrase(String message) { |
| final String newMainContents = main.replaceFirst('Isolate thread', message); |
| writeFile( |
| fileSystem.path.join(dir.path, 'lib', 'main.dart'), |
| newMainContents, |
| writeFutureModifiedDate: true, |
| ); |
| } |
| } |