首页 > 解决方案 > 在flutter中从其他文件访问私有类或函数

问题描述

我创建了一个有很多部分的小部件。因此,在一个文件中创建此小部件并不是一个好习惯。所以,我在许多文件中重新排列。我将这些小部件(部分)设为私有,因此无法在其他文件中访问这些小部件。我只想在根小部件中访问这些小部件。(或者可以在其目录文件中访问私有类)我该怎么做?

// homepage/homepage.dart

import 'package:flutter/material.dart';

class Homepage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          _Part1(),
          _Part2(),
        ],
      ),
    );
  }
}

// homepage/part1.dart
import 'package:flutter/material.dart';

class _Part1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      
    );
  }
}
// homepage/part2.dart
import 'package:flutter/material.dart';

class _Part2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      
    );
  }
}

标签: flutterdartprivate-class

解决方案


Dart 具有part文件功能。虽然这不是我认为的用途,但它也可以在这里工作。只需这样做:

// homepage/homepage.dart

import 'package:flutter/material.dart';

part 'part1.dart';
part 'part2.dart';

class Homepage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          _Part1(),
          _Part2(),
        ],
      ),
    );
  }
}
// homepage/part1.dart
part of 'homepage.dart';

class _Part1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      
    );
  }
}
// homepage/part2.dart
part of 'homepage.dart';

class _Part2 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      
    );
  }
}

部分文件基本上是引用文件的一部分,因此它可以访问引用文件中的所有内容,反之亦然。如果您需要导入任何内容,则必须将它们导入到引用的文件中,因为part文件从引用的文件中获取导入。因此,您会注意到文件中import 'package:flutter/material.dart';没有part


推荐阅读