Flutter服务器信息查询插件mc_server_info的使用

发布于 1周前 作者 vueper 来自 Flutter

Flutter服务器信息查询插件mc_server_info的使用

Minecraft Server Info

这是一个用于获取Minecraft服务器信息的Dart包。

使用

首先,你需要在pubspec.yaml文件中添加该依赖:

dependencies:
  mc_server_info: ^版本号

然后,在你的Flutter项目中导入并使用该插件:

import 'package:mc_server_info/mc_server_info.dart';

void main() async {
  try {
    // 发送ping请求到指定的Minecraft服务器
    var serverInfo = await MinecraftServerInfo.get(
      host: 'bedrock.jartex.fun', // 服务器地址
      port: 19132, // 端口号
      timeout: const Duration(seconds: 10), // 超时时间
    );

    // 打印服务器是否在线
    print('Server is online: ${serverInfo.isOnline}');

    // 如果服务器在线,则打印更多详细信息
    if (serverInfo.isOnline) {
      print('Current players: ${serverInfo.players}');
      print('Max players: ${serverInfo.maxPlayers}');
      print('Game type: ${serverInfo.gameType}');
      print('Server ID: ${serverInfo.serverId}');
      print('Version: ${serverInfo.version}');
      print('Software: ${serverInfo.software}');
    }
  } on ServerTimeOutException catch (e) {
    // 如果服务器未在指定时间内响应,则打印超时异常
    print('Server did not respond within the specified timeout period: $e');
  } on HostException catch (e) {
    // 如果主机无效,则打印主机异常
    print('Invalid host: $e');
  } catch (e) {
    // 捕获其他错误
    print('An error occurred: $e');
  }
}

特性

  • 获取Minecraft服务器的信息,包括服务器是否在线、当前玩家数、最大玩家数、服务器版本、软件、服务器ID和游戏类型。
  • 内置超时处理,以防服务器在指定的时间内没有响应。
  • 轻量级且易于使用。

方法

get

发送一个ping包到指定的服务器,并返回服务器的信息。

static Future<ServerModel> get({
  required String host, // 服务器地址
  required int port, // 端口号
  Duration timeout = const Duration(seconds: 10), // 超时时间
})

如果服务器在指定的超时时间内没有响应,则抛出ServerTimeOutException异常。

getUrl

通过URL获取服务器信息。

static Future<ServerModel> getUrl(String url)

更多关于Flutter服务器信息查询插件mc_server_info的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter服务器信息查询插件mc_server_info的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用mc_server_info插件来查询Minecraft服务器信息的示例代码。这个插件通常用于获取Minecraft服务器的状态、玩家列表、延迟等信息。假设你已经通过pubspec.yaml文件添加了mc_server_info依赖,并且已经运行了flutter pub get

1. 添加依赖

首先,在你的pubspec.yaml文件中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  mc_server_info: ^最新版本号  # 请替换为实际可用的最新版本号

2. 导入包

在你的Dart文件中(例如main.dart),导入mc_server_info包:

import 'package:flutter/material.dart';
import 'package:mc_server_info/mc_server_info.dart';

3. 使用插件查询服务器信息

下面是一个完整的示例,展示了如何使用mc_server_info插件来获取并显示Minecraft服务器的信息:

void main() {
  runApp(MyApp());
}

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

class ServerInfoScreen extends StatefulWidget {
  @override
  _ServerInfoScreenState createState() => _ServerInfoScreenState();
}

class _ServerInfoScreenState extends State<ServerInfoScreen> {
  String serverStatus = '';
  List<String> players = [];
  int ping = -1;

  void queryServerInfo() async {
    String serverAddress = "你的服务器地址:端口";  // 替换为你的Minecraft服务器地址和端口
    try {
      ServerInfoResponse response = await MinecraftServerInfo.queryInfo(serverAddress);

      setState(() {
        serverStatus = response.serverStatus.toString();
        players = response.players.map((player) => player.name).toList();
        ping = response.ping;
      });
    } catch (e) {
      setState(() {
        serverStatus = "无法连接到服务器";
        players = [];
        ping = -1;
      });
      print("Error: $e");
    }
  }

  @override
  void initState() {
    super.initState();
    queryServerInfo();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Minecraft Server Info'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(8.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Text('服务器状态:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            Text(serverStatus),
            SizedBox(height: 16),
            Text('在线玩家:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            Wrap(
              spacing: 8,
              runSpacing: 8,
              children: players.map((player) => Chip(
                label: Text(player),
              )).toList(),
            ),
            SizedBox(height: 16),
            Text('延迟 (毫秒):', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            Text(ping.toString()),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. 权限: 确保你的应用有网络访问权限。对于Android,通常不需要额外配置,但对于iOS,你可能需要在Info.plist中添加网络权限描述。

  2. 错误处理: 在实际应用中,应该添加更多的错误处理逻辑,例如重试机制、超时处理等。

  3. UI优化: 根据需要,可以进一步优化UI,比如添加加载状态提示、错误提示等。

  4. 依赖版本: 确保你使用的mc_server_info插件版本与Flutter SDK兼容。

通过上述代码,你可以在你的Flutter应用中查询并显示Minecraft服务器的状态、玩家列表和延迟信息。

回到顶部