flutter 如何做性能优化

102 阅读1分钟

Flutter 性能优化可以通过以下几种方式实现:

  1. 减少布局嵌套层数:
// 原始代码 
Column( children: [ 
Text('Name'), 
Text('Email'), 
Text('Phone'),
Text('Address'),
], ) 
// 优化后的代码 
Row( 
children: [ 
Expanded(child: Text('Name')),
Expanded(child: Text('Email')), 
], ),
Row( 
children: [
Expanded(child: Text('Phone')),
Expanded(child: Text('Address')), ], )
  1. 使用 constfinal 关键字:
final List<String> items = const ['Item 1', 'Item 2', 'Item 3'];
  1. 使用缓存:
class MyWidget extends StatefulWidget {
  final String id;

  const MyWidget({Key key, this.id}) : super(key: key);

  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  String _data;

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

  void _loadData() async {
    final data = await fetchData(widget.id);
    setState(() {
      _data = data;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Text(_data);
  }
}

  1. 使用 CustomPainterCanvas 绘制:
class MyPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()
      ..color = Colors.red
      ..strokeWidth = 4;

    canvas.drawCircle(Offset(size.width / 2, size.height / 2), 50, paint);
  }

  @override
  bool shouldRepaint(MyPainter oldDelegate) => false;

  @override
  bool shouldRebuildSemantics(MyPainter oldDelegate) => false;
}

  1. 使用 WidgetsBindingObserverAnimationController 控制动画:
class MyAnimation extends StatefulWidget {
  @override
  _MyAnimationState createState() => _MyAnimationState();
}

class _MyAnimationState extends State<MyAnimation> with SingleTickerProviderStateMixin {
  AnimationController _controller;

  @override
  void initState() {
    super.initState();
    _controller = AnimationController(vsync: this, duration: Duration(seconds: 2));
    _

  1. 使用 ProfilerDevTools 进行性能监控:使用 ProfilerDevTools 进行性能监控可以更好地了解应用性能。