Flutter高性能渲染插件Kraken的使用

Flutter高性能渲染插件Kraken的使用

Kraken

kraken Post

Kraken pub package Integration Test WorkFlow

快速尝试

安装Kraken CLI(仅限macOS和Linux)

$ npm i @openkraken/cli -g

使用Kraken打开

$ kraken run https://raw.githubusercontent.com/openkraken/kraken/master/kraken/example/assets/bundle.js

为什么选择Kraken

快速开发 🎉

与Web标准兼容意味着你无需更改现有的技术栈。

const text = document.createTextNode('Hello World!');
document.body.appendChild(text);

跨平台 ⚛️

无缝集成到Flutter,支持Web、移动(iOS、Android)和桌面(MacOS、Linux、Windows)。

高性能 🚀

提供接近原生的性能,如导航、动画和无限滚动列表。

Flutter版本范围

仅对稳定版的Flutter进行了全面测试。

Kraken 版本 Flutter 版本
>= 0.7.0 < 0.8.0 1.22.0 ~ 1.22.6
>= 0.8.0 < 0.10.0 2.2.0 ~ 2.2.3
>= 0.10.0 < 0.11.0 2.5.0 ~ 2.5.3
>= 0.11.0 2.8.0 ~ 2.8.1

贡献

PRs Welcome

通过贡献Kraken,您同意您的贡献将根据其Apache-2.0许可证进行授权。

阅读我们的贡献指南,让我们一起构建更好的Kraken项目。

感谢所有为Kraken做出贡献的人!

CONTRIBUTORS

版权所有 © 2019年至今,Kraken作者。


示例代码

/*
 * Copyright (C) 2022-present The Kraken authors. All rights reserved.
 */
import 'package:flutter/material.dart';
import 'package:kraken/kraken.dart';
import 'package:kraken/devtools.dart';
import 'package:kraken_websocket/kraken_websocket.dart';

void main() {
  KrakenWebsocket.initialize();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // 这个widget是你的应用的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Kraken浏览器',
      home: MyBrowser(),
    );
  }
}

class MyBrowser extends StatefulWidget {
  MyBrowser({Key? key, this.title}) : super(key: key);

  // 这个widget是你的应用的主页。它是有状态的,意味着它有一个状态对象(定义在下面),这些状态会影响它的外观。
  
  // 这个类是状态的配置。它保存了由父组件(在这个例子中是App widget)提供的值(在这个例子中是标题)并用于状态的构建方法。Widget子类中的字段总是标记为"final"。

  final String? title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyBrowser> {

  OutlineInputBorder outlineBorder = OutlineInputBorder(
    borderSide: BorderSide(color: Colors.transparent, width: 0.0),
    borderRadius: const BorderRadius.all(
      Radius.circular(20.0),
    ),
  );

  [@override](/user/override)
  Widget build(BuildContext context) {
    final MediaQueryData queryData = MediaQuery.of(context);
    final TextEditingController textEditingController = TextEditingController();

    Kraken? _kraken;
    AppBar appBar = AppBar(
        backgroundColor: Colors.black87,
        titleSpacing: 10.0,
        title: Container(
          height: 40.0,
          child: TextField(
            controller: textEditingController,
            onSubmitted: (value) {
              textEditingController.text = value;
              _kraken?.load(KrakenBundle.fromUrl(value));
            },
            decoration: InputDecoration(
              hintText: '输入URL',
              hintStyle: TextStyle(color: Colors.black54, fontSize: 16.0),
              contentPadding: const EdgeInsets.all(10.0),
              filled: true,
              fillColor: Colors.grey,
              border: outlineBorder,
              focusedBorder: outlineBorder,
              enabledBorder: outlineBorder,
            ),
            style: TextStyle(color: Colors.black, fontSize: 16.0),
          ),
        ),
      );

    final Size viewportSize = queryData.size;
    return Scaffold(
        appBar: appBar,
        body: Center(
        child: _kraken = Kraken(
          devToolsService: ChromeDevToolsService(),
          viewportWidth: viewportSize.width - queryData.padding.horizontal,
          viewportHeight: viewportSize.height - appBar.preferredSize.height - queryData.padding.vertical,
          bundle: KrakenBundle.fromUrl('assets:assets/bundle.html'),
        ),
    ));
  }
}

更多关于Flutter高性能渲染插件Kraken的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter高性能渲染插件Kraken的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


Kraken 是由阿里巴巴团队开发的一个基于 Flutter 的高性能渲染引擎,旨在通过 JavaScript 来渲染视图,同时利用 Flutter 的高性能渲染能力。Kraken 允许开发者使用类似于 Web 开发的方式来构建跨平台的移动应用,同时保持接近原生性能的渲染速度。

Kraken 的核心特性:

  1. 基于 Flutter:Kraken 利用 Flutter 的渲染引擎,提供高性能的渲染能力。
  2. JavaScript 运行时:支持使用 JavaScript 来编写业务逻辑和 UI 渲染逻辑。
  3. 跨平台:与 Flutter 一样,Kraken 支持 iOS、Android 和 Web 平台。
  4. 高性能:通过优化渲染流程,Kraken 提供了接近原生应用的性能。
  5. 灵活的 UI 构建:开发者可以使用类似 Web 的方式(HTML/CSS/JavaScript)来构建 UI。
  6. 生态兼容:Kraken 支持部分 Web 标准 API,开发者可以直接使用 Web 生态中的工具和库。

Kraken 的基本使用

1. 安装 Kraken CLI

Kraken 提供了一个命令行工具来初始化和管理项目。首先需要安装 Kraken CLI:

npm install -g @kraken/cli

2. 创建 Kraken 项目

使用 Kraken CLI 创建一个新的项目:

kraken init my_kraken_app
cd my_kraken_app

这将生成一个基本的 Kraken 项目结构,包括 index.jsindex.html 文件。

3. 编写 Kraken 应用

index.html 中编写 HTML 结构,例如:

<!DOCTYPE html>
<html>
  <head>
    <title>Kraken App</title>
  </head>
  <body>
    <h1>Hello, Kraken!</h1>
    <p>This is a Kraken application.</p>
  </body>
</html>

index.js 中编写 JavaScript 逻辑,例如:

document.querySelector('h1').addEventListener('click', () => {
  alert('Hello from Kraken!');
});

4. 运行 Kraken 应用

使用 Kraken CLI 启动应用:

kraken start

这会在默认的浏览器或模拟器中打开应用。

5. 构建 Kraken 应用

当应用开发完成后,可以使用以下命令构建应用:

kraken build
回到顶部