DEV Community

Cover image for Search Component Callback, Print Object Specific Type, Uninitialized Exception, Semi-Modal Failure to Display
kouwei qing
kouwei qing

Posted on

Search Component Callback, Print Object Specific Type, Uninitialized Exception, Semi-Modal Failure to Display

[Daily HarmonyOS Next Knowledge] Search Component Callback, Print Object Specific Type, Uninitialized Exception, Semi-Modal Failure to Display, Linear Gradient Adaptation

1. Does the HarmonyOS Search component have a callback event for the "×" icon? What is it specifically?

You can use onChange to listen for when the content is empty.

2. How to print the specific type of an object in HarmonyOS?

As shown below, except for clear types like string/number/undefined, others are all Object? Or are there other keywords to print?

let a = '';
let b = null;
let c = undefined;
let d = 4;
// let e = {};
let f = [];
console.log(a, typeof(a)); // string
console.log(b, typeof(b)); // null object
console.log(c, typeof(c)); // undefined undefined
console.log('', d, typeof(d)); // 4 number
console.log('', f, typeof(f)); // object
// Ideally, it should be Array

let g: User = new User();
console.log('', typeof(g)); // object
// Ideally, it should display as xx.User object

class User {
  id: number = 0;
  name: string = '';
}
Enter fullscreen mode Exit fullscreen mode

In TypeScript, you can use Object.getPrototypeOf(a).constructor.name to get the object type.

3. When a static readonly constant is declared in a HarmonyOS class, the app runs with an error that the class is not initialized.
// Example of declaring a static readonly constant in class RouterConstant:
export class RouterConstant {
  // Home page
  public static readonly MAIN_NOTDATA_PAGE: string = 'RemoteViewPage';
}
Enter fullscreen mode Exit fullscreen mode

Error message during runtime: AAFwkAppKit: [invalidDomain]Error message: RouterConstant is not initialized

Solutions:

  1. Dynamic loading failure exists in the app, and there is an error in the reference chain. Verification method: Use a static import statement in the entry file to preload the file containing the uninitialized variable. If no error occurs after this operation, it indicates dynamic loading failure.
  2. Circular dependency in the code. Reference: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide_no-cycle-V5
4. When switching semi-modal gears in HarmonyOS, the UX occasionally fails to fully display.

When switching a semi-modal from half-screen to full-screen, a gray area sometimes appears, causing the interface to fail to load completely.

This issue can be resolved by using properties introduced in semi-modal API 12.

5. HarmonyOS linearGradient is not adapted to mirrored languages.

When switching to a mirrored language, the property GradientDirection.Left does not change to GradientDirection.Right.

Row()
  .size({ width: '100%', height: 50 })
  .linearGradient({
    direction: GradientDirection.Left,
    colors: [[this.getColorString(this.bottomColorInfo.mainColor, 0), 0.0],
      [this.getColorString(this.bottomColorInfo.mainColor, 1), 1.0]]
  })
Enter fullscreen mode Exit fullscreen mode

linearGradient does not require adaptation; Left remains the Left direction (it is not start). The app can determine the display angle based on RTL (right-to-left) logic independently.

Top comments (0)