无状态与有状态重建

Stateless Vs Stateful rebuild

当无状态小部件位于有状态小部件内时,它是否会重绘? 现在无状态小部件无法在 运行 时间重绘,但有状态可以。 问题是无状态小部件在有状态小部件内时是否会重绘?

如果 statefulWidget 重建,

A statelessWidgetstatefulWidgetchild 将被重建。基本上,当在 statefulWidget 中调用 setState 时,旧状态被丢弃,构建方法 运行 具有新状态。因此,如果 statelessWidget 它在 statefulWidgetbuild 方法中引用,是的,它将被重建。

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    print('Stateful widget built');
    return Scaffold(
      appBar: AppBar(
        title: Text('Example'),
      ),
      body: BodyWidget(),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          setState(() {});
        },
        tooltip: 'Set state',
        child: Icon(Icons.add),
      ),
    );
  }
}

class BodyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print('Stateless widget built');
    return Container(
      child: Text('Stateless widget'),
    );
  }
}

试试这个例子,当你点击 Fab 时,它在 statefulWidget 上重新 setState,当每个构建方法是 运行 时,你将在控制台中打印出来.