返回首页
最新
标题:我一直在租用MI300X,因为它们比H100便宜,而且我的使用体验比我在网上看到的评价要顺利得多。ROCm 6.4现在开箱即用,表现不错。如果能节省20%的费用,我愿意多花30分钟来设置我的GPU。<p>我很想听听其他在AI工作负载上进行实验的人的类似经验。
# 在 HarmonyOS Next 中开发简单的通用头部导航栏
在日常页面开发中,大多数页面需要一个头部来显示导航控件和页面信息。为每个页面重复编写这段代码效率低下,并且会导致实现不一致。本指南演示如何创建一个可重用的头部组件。
## 第一步:创建 NavBar 组件
创建一个新的 ArkTS 文件,并使用 `@Component` 装饰器定义自定义组件:
```typescript
import Utils from "../common/utils/Utils";
@Component
export struct NavBar {
// 组件实现将在这里进行
}
```
## 第二步:实现组件属性和 UI
添加属性并构建头部 UI:
```typescript
import Utils from "../common/utils/Utils";
@Component
export struct NavBar {
@Prop title: string = ''; // 头部标题文本
@Prop backImg: string = ''; // 自定义返回按钮图标路径
@Prop bgColor: string = '#FFFFFF'; // 头部背景颜色
@Prop customBack?: () => void; // 自定义返回按钮处理函数
@Prop mode: string = 'center'; // 标题对齐方式:'center' 或 'left'
build() {
Row() {
// 返回按钮部分
Row() {
Image(this.backImg || Utils.getImgPath('home/adult_page_back_black.png'))
.width(Utils.getVp(48))
.height(Utils.getVp(48))
.objectFit(ImageFit.Cover)
}
.onClick(() => {
// 如果提供了自定义处理函数,则使用它,否则使用默认的返回导航
this.customBack ? this.customBack() : router.back();
})
// 标题部分
Row() {
Text(this.title)
.fontColor('#191B27')
.fontSize(Utils.getVp(33))
.fontWeight(FontWeight.Bold)
.textAlign(this.mode === 'center' ? TextAlign.Center : TextAlign.Start)
.width('100%')
}
.margin({ left: this.mode === 'center' ? 0 : Utils.getVp(20) })
.flexShrink(1) // 允许收缩以适应内容
.height('100%')
}
.width('100%')
.padding({ left: Utils.getVp(32), right: Utils.getVp(32) })
.height(Utils.getVp(88))
.backgroundColor(this.bgColor)
}
}
```
## 第三步:在父视图中使用组件
### 居中对齐标题示例:
```typescript
import { NavBar } from './component/NavBar';
@Entry
@Component
struct ParentPage {
build() {
Column() {
NavBar({ title: '页面标题', mode: 'center' })
// 页面内容在这里
}
.width('100%')
.height('100%')
}
}
```
### 左对齐标题示例:
```typescript
import { NavBar } from './component/NavBar';
@Entry
@Component
struct ParentPage {
build() {
Column() {
NavBar({ title: '页面标题', mode: 'left' })
// 页面内容在这里
}
.width('100%')
.height('100%')
}
}
```
## 自定义选项
1. *自定义图标*:传入 `backImg` 属性并指定图像路径
```typescript
NavBar({
title: '设置',
backImg: Utils.getImgPath('icons/custom_back.png')
})
```
2. *自定义背景*:更改头部颜色
```typescript
NavBar({
title: '个人资料',
bgColor: '#F5F5F5'
})
```
3. *自定义返回操作*:重写默认导航
```typescript
NavBar({
title: '结账',
customBack: () => { /* 自定义逻辑 */ }
})
```
## 主要特性
- *响应式设计*:使用 `Utils.getVp()` 适应不同屏幕尺寸
- *灵活布局*:标题对齐选项(居中/左对齐)
- *可定制性*:支持自定义图标、颜色和行为
- *一致的 UI*:确保应用程序中头部外观统一
- *易于集成*:基于属性的简单配置
该实现提供了一个可重用的、可定制的头部组件,消除了代码重复,并确保在整个 HarmonyOS Next 应用程序中提供一致的导航体验。
# HarmonyOS Flutter 插件开发详细指南
## 0. 环境设置
*前提条件*: 配置 HarmonyOS Flutter 环境
*参考*: [HarmonyOS Flutter 环境设置指南](https://juejin.cn/post/7317214081261207603)
*注意*: 下载和编译引擎耗时较长。可根据请求获取预构建的引擎。
------
## 1. 获取原始插件代码
```
git clone <original_plugin_repository>
```
------
## 2. 生成 OHOS 目录
```
# 选项 1: 直接生成(可能失败)
flutter create -t plugin --platforms ohos
# 选项 2: 创建演示项目并复制
flutter create -t plugin --platforms ohos demo
cp -r demo/ohos ./
```
------
## 3. 配置本地依赖
在 `pubspec.yaml` 中添加本地依赖:
```
dependencies:
your_plugin:
path: ../path_to_plugin
```

## 4. 构建插件包
```bash
flutter build hap \
--local-engine-src-path /path/to/ohos_flutter/src \
--local-engine ohos_release_arm64
```
*成功输出*:
```markdown
√ Built build/hap/release/entry-release.hap (XX.XMB)
```
------
## 5. 验证生成的文件
构建成功后:

## 6. 定位插件 HAR 包
插件输出目录:
```markdown
your_plugin/ohos/build/outputs/
└── har
└── your_plugin_ohos.har # 插件包
```

## 7. 将 HAR 添加到演示项目
将 HAR 复制到演示项目:
```bash
cp your_plugin_ohos.har demo_portal/module/ohos/libs/
```
------

## 8. 配置 HAR 依赖

## 9. 初始化插件

## 10. 测试插件功能


## 11. 开发原生实现
按照以下步骤进行原生开发:
1. 分析现有的 iOS/Android 原生逻辑
2. 在 `ohos/src/main/cpp/` 中创建 HarmonyOS 对应实现
3. 实现平台接口:cpp
我注意到,如果说有什么普遍适用的建议,那就是:成长是最重要的。
简单明了。
成长的方式是如此微妙,以至于很容易被忽视,从远处看似乎不重要,但从长远来看却会影响到你。我发现自己从一个在点餐时会出汗不止的人,变成了可以和任何人交谈的人。但这并不是自然而然发生的,而是在经历了漫长的失败、平庸的经历,以及一些我原本认为不会有任何结果的交流之后才来的。根据我的经验,这个过程绝对不是线性的。因此,我很想知道你们认为成长的最佳方式是什么。