Flutter随笔01

309 阅读2分钟
1. WidgetsFlutterBinding.ensureInitialized()

今天来聊聊WidgetsFlutterBinding.ensureInitialized(),这行代码用于确保WidgetsFlutterBinding实例已经初始化,WidgetsFlutterBindingFlutter框架的核心,它负责管理应用的生命周期和调度。

  • 2024.07.30
2. Globals.prefs = prefs
class Globals { 
    static SharedPreferences? prefs; 
} 

/// 初始化 
void initApp() { 
    // 获取SharedPreferences实例,并使用globals.dart文件来存储静态变量 
    final prefs = await SharedPreferences.getInstance(); 
    Globals.prefs = prefs; 
} 

在这里定义的Globals类被用作全局的访问点,用于存储在应用程序中需要跨组件访问的数据或对象,其中定义的prefs是静态的,目的是为了让整个应用可以全局访问到。

  • 2024.08.02
3. Column和Row侧轴的默认对齐方式
crossAxisAlignment = CrossAxisAlignment.center 

他们侧轴的默认对齐方式是居中对齐,在Column中所有的Text会居中显示

  • 2024.08.09
4. ListView的shrinkWrap
ListView.builder( 
    itemCount: 3, 
    shrinkWrap: true, 
    itemBuilder: (BuildContext context, int index) { 
        return _buildDevicesItem(); 
    } 
); 

该属性表示是否根据子组件的总长度来设置ListView的长度,默认值是false
默认情况下,ListView会在滚动方向尽可能多的占用空间。
ListView在一个无边界(滚动方向上)的容器中时,shrinkWrap必须为true

  • 2024.08.12
5. SingleChildScrollView嵌套两个ListView的问题

今天遇到个布局的问题,上面是个固定数量的ListView,中间一个按钮,下面又是一个数量不定的ListView,整个页面又是可以滚动的。

关于这个问题,应该怎么解决呢?外层和内层都可以滑动,这样就会产生滑动冲突,我们可以禁止内部ListView的滑动。

  /// ListView 列表
  Widget _buildDevicesList() {
    return ListView.builder(
        itemCount: 3,
        shrinkWrap: true,
        physics: const NeverScrollableScrollPhysics(), // 禁止内部滑动
        itemBuilder: (BuildContext context, int index) {
          return _buildDevicesItem();
        }
    );
  }
  • 2024.08.13 夜
6. Container的阴影
decoration: BoxDecoration(
  ...
  boxShadow: const [
    BoxShadow(
      color: Colors.grey, // 阴影的颜色
      offset: Offset(2, 2), // 阴影相对于父组件的位置
      blurRadius: 4 // 阴影的模糊程度
    )
  ]
)

Offset(2, 2),第一个值是水平偏移,第二个值是垂直偏移

  • 2024.08.15