E/flutter ( 8084): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: SocketException: OS Error: Connection refused

5,246

This seems to be an issue with the Android emulator connecting to a remote server. You can check this Stack Overflow post for a workaround on this issue.

Share:
5,246
Wsaitama
Author by

Wsaitama

Updated on December 16, 2022

Comments

  • Wsaitama
    Wsaitama over 1 year

    I have some problems when i run my application in an android emulator and with the google chrome device. My application works well only in IOS with an iPhone. The problem is on my drop-down and the call to my api, I suppose. In iPhone device I can see in the dropDownButton the data as a list of the API but not in the others devices.

    This is a part of the code that i use to communicate with my api :

    // Creation of deviceGet object with device data
      var deviceGet = new List<Device>();
      Future<void> GetDevice() async {
        // CHANGED
        await GET.url(url1).then((response) {
          //END CHANGED
          setState(() {
            Iterable list = json.decode(response.body);
            deviceGet = list.map((model) => Device.fromJson(model)).toList();
          });
        });
      }
    
      Future<String> getCommands(String deviceName1, String commandName1) async {
        String deviceName = deviceName1;
        String commandName = commandName1;
    
    
        var url = "http://localhost:48082/api/v1/device/name/" +
            deviceName +
            "/command/" +
            commandName1;
        //we have to wait to get the data so we use 'await'
        http.Response response = await http.get(
          //Uri.encodeFull removes all the dashes or extra characters present in our Uri
          Uri.encodeFull(url),
        );
    
        //print(response.body);
        final body = json.decode(response.body);
        //print(body['readings'][0]['value']);
        value = body['readings'][0]['value'];
      }
    

    This is my debug console error:

    /flutter ( 8084): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 43992
    E/flutter ( 8084): #0      IOClient.send 
    package:http/src/io_client.dart:33
    E/flutter ( 8084): <asynchronous suspension>
    E/flutter ( 8084): #1      BaseClient._sendUnstreamed 
    package:http/src/base_client.dart:176
    E/flutter ( 8084): #2      BaseClient.get 
    package:http/src/base_client.dart:35
    E/flutter ( 8084): #3      get.<anonymous closure> 
    package:http/http.dart:46
    E/flutter ( 8084): #4      _withClient 
    package:http/http.dart:166
    E/flutter ( 8084): #5      get 
    package:http/http.dart:46
    E/flutter ( 8084): #6      GET.url 
    package:interface_edge/Get.dart:9
    E/flutter ( 8084): #7      Chart1State.GetDevice 
    package:interface_edge/Chart1.dart:47
    E/flutter ( 8084): #8      Chart1State.wait 
    package:interface_edge/Chart1.dart:85
    E/flutter ( 8084): #9      Chart1State.initState 
    package:interface_edge/Chart1.dart:91
    E/flutter ( 8084): #10     StatefulElement._firstBuild 
    package:flutter/…/widgets/framework.dart:4428
    E/flutter ( 8084): #11     ComponentElement.mount 
    package:flutter/…/widgets/framework.dart:4274
    E/flutter ( 8084): #12     Element.inflateWidget 
    package:flutter/…/widgets/framework.dart:3269
    E/flutter ( 8084): #13     Element.updateChild 
    package:flutter/…/widgets/framework.dart:3063
    E/flutter ( 8084): #14     ComponentElement.performRebuild 
    package:flutter/…/widgets/framework.dart:4316
    E/flutter ( 8084): #15     Element.rebuild 
    E/flutter ( 8084): #21     Element.inflateWidget 
    package:flutter/…/widgets/framework.dart:3269
    E/flutter ( 8084): #22     Element.updateChild 
    package:flutter/…/widgets/framework.dart:3063
    E/flutter ( 8084): #23     SingleChildRenderObjectElement.mount 
    package:flutter/…/widgets/framework.dart:5518
    E/flutter ( 8084): #24     Element.inflateWidget 
    package:flutter/…/widgets/framework.dart:3269
    E/flutter ( 8084): #25     Element.updateChild 
    package:flutter/…/widgets/framework.dart:3063
    E/flutter ( 8084): #26     ComponentElement.performRebuild 
    package:flutter/…/widgets/framework.dart:4316
    E/flutter ( 8084): #27     Element.rebuild 
    package:flutter/…/widgets/framework.dart:4020
    E/flutter ( 8084): #28     ComponentElement._firstBuild 
    package:flutter/…/widgets/framework.dart:4279
    E/flutter ( 8084): #29     ComponentElement.mount 
    package:flutter/…/widgets/framework.dart:4274
    E/flutter ( 8084): #30     Element.inflateWidget 
    package:flutter/…/widgets/framework.dart:3269
    E/flutter ( 8084): #31     Element.updateChild 
    package:flutter/…/widgets/framework.dart:3063
    E/flutter ( 8084): #32     ComponentElement.performRebuild 
    package:flutter/…/widgets/framework.dart:4316
    E/flutter ( 8084): #33     Element.rebuild 
    package:flutter/…/widgets/framework.dart:4020
    E/flutter ( 8084): #34     ComponentElement._firstBuild 
    package:flutter/…/widgets/framework.dart:4279
    E/flutter ( 8084): #35     ComponentElement.mount 
    E/flutter ( 8084): #36     ParentDataElement.mount 
    package:flutter/…/widgets/framework.dart:4690
    E/flutter ( 8084): #37     Element.inflateWidget 
    package:flutter/…/widgets/framework.dart:3269
    E/flutter ( 8084): #38     Element.updateChild 
    package:flutter/…/widgets/framework.dart:3063
    E/flutter ( 8084): #39     ComponentElement.performRebuild 
    package:flutter/…/widgets/framework.dart:4316
    E/flutter ( 8084): #40     Element.rebuild 
    package:flutter/…/widgets/framework.dart:4020
    E/flutter ( 8084): #41     ComponentElement._firstBuild 
    package:flutter/…/widgets/framework.dart:4279
    E/flutter ( 8084): #42     StatefulElement._firstBuild 
    package:flutter/…/widgets/framework.dart:4454
    E/flutter ( 8084): #43     ComponentElement.mount 
    package:flutter/…/widgets/framework.dart:4274
    E/flutter ( 8084): #44     Element.inflateWidget 
    package:flutter/…/widgets/framework.dart:3269
    E/flutter ( 8084): #45     Element.updateChild 
    package:flutter/…/widgets/framework.dart:3063
    E/flutter ( 8084): #46     ComponentElement.performRebuild 
    package:flutter/…/widgets/framework.dart:4316
    E/flutter ( 8084): #47     Element.rebuild 
    package:flutter/…/widgets/framework.dart:4020
    E/flutter ( 8084): #48     ComponentEle
    

    This is my flutter analyze :

    Analyzing chat...                                                       
    
       info • Name types using UpperCamelCase • lib/commandsData.dart:1:7 • camel_case_types
       info • Name types using UpperCamelCase • lib/deviceData.dart:1:7 • camel_case_types
       info • This function has a return type of 'Future<String>', but doesn't end with a return statement •
              lib/getterMarche.dart:25:18 • missing_return
       info • Name non-constant identifiers using lowerCamelCase • lib/main.dart:62:16 •
              non_constant_identifier_names
       info • This function has a return type of 'Future<String>', but doesn't end with a return statement •
              lib/main.dart:73:18 • missing_return
       info • The value of the local variable 'commandName' isn't used • lib/main.dart:75:12 •
              unused_local_variable
       info • This function has a return type of 'List<String>', but doesn't end with a return statement •
              lib/main.dart:94:16 • missing_return
    
    7 issues found. (ran in 6.5s)
    
    
    This is the flutter doctor -v
    
    [✓] Flutter (Channel dev, v1.13.5, on Mac OS X 10.15.1 19B88, locale fr-FR)
        • Flutter version 1.13.5 at /Users/wassimbenjabria/flutter
        • Framework revision 41a911099b (9 weeks ago), 2019-12-19 13:48:02 -0800
        • Engine revision 0f90e6546b
        • Dart version 2.8.0 (build 2.8.0-dev.0.0 aa6709974d)
    
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
        • Android SDK at /Users/wassimbenjabria/Library/Android/sdk
        • Android NDK location not configured (optional; useful for native profiling support)
        • Platform android-29, build-tools 29.0.2
        • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 11.3)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Xcode 11.3, Build version 11C29
        • CocoaPods version 1.8.4
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 3.5)
        • Android Studio at /Applications/Android Studio.app/Contents
        • Flutter plugin installed
        • Dart plugin version 191.8593
        • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    
    [✓] VS Code (version 1.42.1)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.8.1
    
    [✓] Connected device (3 available)
        • AOSP on IA Emulator • emulator-5554 • android-x86    • Android 9 (API 28) (emulator)
        • Chrome              • chrome        • web-javascript • Google Chrome 79.0.3945.130
        • Web Server          • web-server    • web-javascript • Flutter Tools
    
    • No issues found!
    

    Thanks for your help.

    Here is a part of a code with one dropDownButton if you want to reproduce this error.

    import 'dart:convert';
    import 'package:flutter/material.dart';
    
    import 'Get.dart';
    import 'Device.dart';
    import 'deviceData.dart';
    
    var url1 = "http://localhost:48082/api/v1/device";
    
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      build(context) {
        return MaterialApp(
          debugShowCheckedModeBanner: false,
          title: 'My App',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: MyListScreen(),
        );
      }
    }
    
    class MyListScreen extends StatefulWidget {
      @override
      createState() => _MyListScreenState();
    }
    
    class _MyListScreenState extends State {
      List<deviceData> dataDevice = deviceData.getDevicesData();
      List<DropdownMenuItem<deviceData>> listDropDevice;
      deviceData deviceSelection;
    
    
      // Creation of deviceGet object with device data
      var deviceGet = new List<Device>();
      Future<void> GetDevice() async {
        // CHANGED
        await GET.url(url1).then((response) {
          //END CHANGED
          setState(() {
            Iterable list = json.decode(response.body);
            deviceGet = list.map((model) => Device.fromJson(model)).toList();
          });
        });
      }
    
      Future<void> wait() async {
        await GetDevice();
      }
    
      initState() {
        super.initState();
    
        wait().then((result) {
          var nbrDevice = deviceGet.length;
          for (int i = 0; i < nbrDevice;) {
            dataDevice.add(deviceData(deviceGet[i].name, i));
            i = i + 1;
          }
          listDropDevice = buildDropdownMenuItems(dataDevice);
        });
      }
    
      List<DropdownMenuItem<deviceData>> buildDropdownMenuItems(List devices) {
        List<DropdownMenuItem<deviceData>> items = List();
        for (deviceData device1 in devices) {
          items.add(
            DropdownMenuItem(
              value: device1,
              child: Text(device1.name),
            ),
          );
        }
        return items;
      }
    
      onChange(deviceData selectionUtilisateur) {
        setState(() {
          deviceSelection = selectionUtilisateur;
        });
      }
    
      @override
      build(context) {
        return Scaffold(
            appBar: AppBar(
              title: Text("Device List"),
            ),
            body: Column(children: <Widget>[
              Center(child: Text("")),
              DropdownButton(
                  value: deviceSelection,
                  items: listDropDevice,
                  onChanged: onChange,
                  hint: Text("Select the device")),
            ]));
      }
    }