簡體   English   中英

Flutter:如何把ssh變成樹莓派

[英]Flutter: how to ssh into a Raspberry Pi

所以我正在嘗試做一件非常簡單的事情(理論上)。 我想與我的 Raspberry Pi 通信,我想把它做成一個應用程序。 我正在查看 flutter 軟件包,其中一個允許您訪問 ssh。所以我想我只需將 ssh 放入我的 Pi 並運行一個腳本,但我收到一個錯誤,我不知道它是什么意思。 提前感謝您的幫助:這是我的代碼和錯誤:

import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:ssh/ssh.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Lights',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Center(
            child: RaisedButton(
              onPressed: lightsOff,
              child: Text("Lights Off"),
            ),
          ),
        ],
      ),
    );
  }

  Future<void> lightsOff() async {
    final pi = new SSHClient(
      host: "IP_ADDRESS",
      port: 22,
      username: "pi",
      passwordOrKey: "raspberry",
    );

    String result;
    try {
      result = await pi.connect();
      if (result == "session_connected")
        result = await pi.execute("sudo python /home/pi/Desktop/scripts/lightOff.py");
    } on PlatformException catch (e) {
      print('Error: ${e.code}\nError Message: ${e.message}');
    }
  }
}

錯誤:

flutter: ══╡ EXCEPTION CAUGHT BY SERVICES LIBRARY ╞══════════════════════════════════════════════════════════
flutter: The following MissingPluginException was thrown while activating platform stream on channel
flutter: shell_sftp:
flutter: MissingPluginException(No implementation found for method listen on channel shell_sftp)
flutter:
flutter: When the exception was thrown, this was the stack:
flutter: #0      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:291:7)
flutter: <asynchronous suspension>
flutter: #1      EventChannel.receiveBroadcastStream.<anonymous closure> (package:flutter/src/services/platform_channel.dart:437:29)
flutter: <asynchronous suspension>
flutter: #9      new SSHClient (package:ssh/ssh.dart:40:40)
flutter: #10     _MyHomePageState.lightsOff (package:lights/main.dart:48:20)
flutter: <asynchronous suspension>
flutter: #11     _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
flutter: #12     _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
flutter: #13     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
flutter: #14     TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
flutter: #15     TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:175:7)
flutter: #16     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:315:9)
flutter: #17     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:73:12)
flutter: #18     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:11)
flutter: #19     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:180:19)
flutter: #20     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
flutter: #21     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
flutter: #22     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
flutter: #23     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
flutter: #24     _invoke1 (dart:ui/hooks.dart:168:13)
flutter: #25     _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)
flutter: (elided 7 frames from package dart:async)
flutter: ════════════════════════════════════════════════════════════════════════════════════════════════════
[VERBOSE-2:shell.cc(184)] Dart Error: Unhandled exception:
MissingPluginException(No implementation found for method connectToHost on channel ssh)
#0      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:291:7)
<asynchronous suspension>
#1      SSHClient.connect (package:ssh/ssh.dart:63:33)
<asynchronous suspension>
#2      _MyHomePageState.lightsOff (package:lights/main.dart:57:25)
#3      _AsyncAwaitCompleter.start (dart:async/runtime/libasync_patch.dart:49:6)
#4      _MyHomePageState.lightsOff (package:lights/main.dart:47:25)
#5      _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
#6      _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
#7      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
#8      TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
#9      TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gesture<…>

在將新的 package 添加到 pubspec.yaml 后嘗試Hot ReloadHot Restart時會拋出異常。

嘗試停止正在運行的項目(應用程序),然后重新運行它。 這樣添加的包(包含實現)也被推送到設備。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM