@@ -222,6 +222,62 @@ void main() {
222222 expect (toggle.value, false , reason: 'The extension is disabled.' );
223223 });
224224 });
225+
226+ group ('ServiceExtensionCheckbox' , () {
227+ testWidgets ('shows value state even when unavailable' , (
228+ WidgetTester tester,
229+ ) async {
230+ final ext = extensions.disableClipLayers;
231+ final customFake = _UnavailableServiceExtensionManager ();
232+ customFake.makeUnavailable (ext.extension );
233+
234+ // Override the serviceExtensionManager on mockServiceManager
235+ when (mockServiceManager.serviceExtensionManager).thenReturn (customFake);
236+
237+ // Set state to enabled: false (which means clips not disabled -> checked true)
238+ await customFake.setServiceExtensionState (
239+ ext.extension ,
240+ enabled: false ,
241+ value: false ,
242+ );
243+
244+ final checkbox = ServiceExtensionCheckbox (serviceExtension: ext);
245+ await tester.pumpWidget (wrap (Scaffold (body: Center (child: checkbox))));
246+ await tester.pumpAndSettle ();
247+
248+ final checkboxFinder = find.byType (Checkbox );
249+ expect (checkboxFinder, findsOneWidget);
250+
251+ final checkboxWidget = tester.widget <Checkbox >(checkboxFinder);
252+ expect (checkboxWidget.value, isTrue);
253+ expect (checkboxWidget.onChanged, isNull);
254+ });
255+ });
256+ }
257+
258+ base class _UnavailableServiceExtensionManager
259+ extends FakeServiceExtensionManager {
260+ final _unavailableExtensions = < String > {};
261+
262+ void makeUnavailable (String name) {
263+ _unavailableExtensions.add (name);
264+ }
265+
266+ @override
267+ Future <bool > waitForServiceExtensionAvailable (String name) {
268+ if (_unavailableExtensions.contains (name)) {
269+ return Future .value (false );
270+ }
271+ return super .waitForServiceExtensionAvailable (name);
272+ }
273+
274+ @override
275+ bool isServiceExtensionAvailable (String name) {
276+ if (_unavailableExtensions.contains (name)) {
277+ return false ;
278+ }
279+ return super .isServiceExtensionAvailable (name);
280+ }
225281}
226282
227283void registerServiceExtension (
0 commit comments