File tree Expand file tree Collapse file tree 4 files changed +25
-9
lines changed 
examples/platform_channel Expand file tree Collapse file tree 4 files changed +25
-9
lines changed Original file line number Diff line number Diff line change @@ -3994,7 +3994,6 @@ targets:
39943994        ["devicelab", "hostonly"] 
39953995task_name : platform_channel_sample_test_windows 
39963996    scheduler : luci 
3997-     bringup : true 
39983997
39993998  - name : Windows plugin_dependencies_test 
40003999    recipe : devicelab/devicelab_drone 
Original file line number Diff line number Diff line change @@ -28,8 +28,12 @@ class _PlatformChannelState extends State<PlatformChannel> {
2828    try  {
2929      final  int ?  result =  await  methodChannel.invokeMethod ('getBatteryLevel' );
3030      batteryLevel =  'Battery level: $result %.' ;
31-     } on  PlatformException  {
32-       batteryLevel =  'Failed to get battery level.' ;
31+     } on  PlatformException  catch  (e) {
32+       if  (e.code ==  'NO_BATTERY' ) {
33+         batteryLevel =  'No battery.' ;
34+       } else  {
35+         batteryLevel =  'Failed to get battery level.' ;
36+       }
3337    }
3438    setState (() {
3539      _batteryLevel =  batteryLevel;
Original file line number Diff line number Diff line change @@ -31,7 +31,11 @@ void main() {
3131        batteryLevel =  await  driver.getText (batteryLevelLabel);
3232      }
3333
34-       expect (batteryLevel.contains ('%' ), isTrue);
34+       // Allow either a battery percentage or "No battery" since it will vary 
35+       // by device; either indicates that a known response came from the host 
36+       // implementation. 
37+       expect (batteryLevel.contains ('%' ) ||  batteryLevel.contains ('No battery' ),
38+           isTrue);
3539    });
3640  });
3741}
Original file line number Diff line number Diff line change 1616
1717#include  " flutter/generated_plugin_registrant.h" 
1818
19+ static  constexpr  int  kBatteryError  = -1 ;
20+ static  constexpr  int  kNoBattery  = -2 ;
21+ 
1922static  int  GetBatteryLevel () {
2023  SYSTEM_POWER_STATUS status;
21-   if  (GetSystemPowerStatus (&status) == 0  || status.BatteryLifePercent  == 255 ) {
22-     return  -1 ;
24+   if  (GetSystemPowerStatus (&status) == 0 ) {
25+     return  kBatteryError ;
26+   } else  if  (status.BatteryFlag  == 128 ) {
27+     return  kNoBattery ;
28+   } else  if  (status.BatteryLifePercent  == 255 ) {
29+     return  kBatteryError ;
2330  }
2431  return  status.BatteryLifePercent ;
2532}
@@ -59,10 +66,12 @@ bool FlutterWindow::OnCreate() {
5966        if  (call.method_name () == " getBatteryLevel" 
6067          int  battery_level = GetBatteryLevel ();
6168
62-           if  (battery_level != -1 ) {
63-             result->Success (battery_level);
64-           } else  {
69+           if  (battery_level == kBatteryError ) {
6570            result->Error (" UNAVAILABLE" " Battery level not available." 
71+           } else  if  (battery_level == kNoBattery ) {
72+             result->Error (" NO_BATTERY" " Device does not have a battery." 
73+           } else  {
74+             result->Success (battery_level);
6675          }
6776        } else  {
6877          result->NotImplemented ();
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments