Как создать заставку во Flutter с изображением svg

Я хочу создать заставку в флаттере. У меня есть файл изображения svg, и я не хочу преобразовывать его в JPG или PNG. Есть ли способ создать заставку с файлом изображения svg во Flutter?

Хотите реализовать заставку на нативной стороне.

ОБНОВЛЕНИЕ С SVG-КОДОМ:

<?xml version = "1.0" encoding = "iso-8859-1"?>
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg fill = "#000000" version = "1.1" id = "Capa_1" xmlns = "http://www.w3.org/2000/svg" xmlns:xlink = "http://www.w3.org/1999/xlink" 
     width = "800px" height = "800px" viewBox = "0 0 45.917 45.917"
     xml:space = "preserve">
<g>
    <g>
        <path d = "M33.523,28.334c-0.717,1.155-1.498,2.358-2.344,3.608c7.121,1.065,10.766,3.347,10.766,4.481
            c0,1.511-6.459,5.054-18.986,5.054c-12.528,0-18.988-3.543-18.988-5.054c0-1.135,3.645-3.416,10.768-4.481
            c-0.847-1.25-1.628-2.453-2.345-3.608C5.365,29.661,0,32.385,0,36.424c0,5.925,11.551,9.024,22.959,9.024s22.958-3.1,22.958-9.024
            C45.917,32.385,40.553,29.661,33.523,28.334z"/>
        <path d = "M22.96,36.047c1.032,0,2.003-0.491,2.613-1.325c3.905-5.33,10.813-15.508,10.813-20.827
            c0-7.416-6.012-13.427-13.427-13.427c-7.417,0-13.427,6.011-13.427,13.427c0,5.318,6.906,15.497,10.812,20.827
            C20.957,35.556,21.928,36.047,22.96,36.047z M17.374,13.63c0-3.084,2.5-5.584,5.585-5.584c3.084,0,5.584,2.5,5.584,5.584
            s-2.5,5.584-5.584,5.584C19.874,19.215,17.374,16.715,17.374,13.63z"/>
    </g>
</g>
</svg>

@Buddy: Нет, еще нет

Harry 29.04.2023 11:03

Вы можете поделиться своим файлом svg, я могу сначала попробовать его на своем устройстве

JB Jason 29.04.2023 11:18

У меня есть код обновления svg. вы можете создать файл и сохранить этот код в формате .svg.

Harry 29.04.2023 11:38

@Buddy: я обновил ответ, если хочешь, можешь проверить. Спасибо.

Harry 01.05.2023 15:57
2
4
129
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

попробуйте проверить flutter_svg от https://pub.dev это должно помочь

Я хочу заставку на родной стороне Android и iOS. С этим пакетом это возможно только тогда, когда мы делаем заставку в флаттер-виджете.

Harry 29.04.2023 11:05

Следуйте за мной по этим шагам

Шаг 1

добавьте flutter_svg в свой проект, введя эту команду flutter pub add flutter_svg


Шаг 2

создайте файл dart и внутри него создайте виджет stateFull и поместите свой svg внутрь

class SplashScreen extends StatefulWidget {
  const SplashScreen({super.key});

  @override
  State<SplashScreen> createState() => SplashScreenState();
}

class SplashScreenState extends State<SplashScreen> {
@override
void initState((){
  Future.delay(Duration(milisecound:500));
  Navigator.of(context).pushNamed('/home');
})
  @override
  Widget build(BuildContext context) {
    return Scaffold(
    body:Center(
    child:SvgPicture.string("<SVG></SVG>")
)
);
  }
}

Шаг 3

теперь мы должны изменить main.dart в MaterialApp и сделать его домашним для нашей заставки, тогда мы закончили

MaterialApp(home:SplashScreen());

Я хочу реализовать заставку на родной стороне, а не в флаттере. Потому что перед загрузкой Flutter Engine появляется белый экран.

Harry 29.04.2023 14:38

вы используете флаттер, а затем хотите реализовать нативный?

Abolfazl Mashhadi 29.04.2023 14:40

Чтобы преодолеть белый экран до того, как загрузится флаттер-движок.

Harry 29.04.2023 14:40

белый экран отображается только при отладке, он исчезает при экспорте

Abolfazl Mashhadi 29.04.2023 14:42
Ответ принят как подходящий

Поскольку я обнаружил, что packages для введения SplashScreen следует принимать только формат изображения как JPG и PNG. После работы над приложением я нашел решение сделать заставку без какого-либо пакета, используя изображение SVG как в Android, так и в iOS.

Следуйте инструкциям ниже, если вы хотите представить SplashScreen с SVG.

1.Андроид

Шаг 1:

Откройте модуль Android из приложения Flutter в Android Studio отдельно.

Шаг 2:

Откройте папку res в drawable --> включите Vector Asset (укажите путь к вашему svg изображению).

Шаг 3:

Теперь сделайте один новый рисуемый splash_screen_image с background color и включите свой Vector Asset Drawable (который мы включили в предыдущем шаге 2).

Рисуемый файл splash_screen_image.xml должен выглядеть следующим образом:

<?xml version = "1.0" encoding = "utf-8"?>
<layer-list xmlns:android = "http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape = "rectangle">
            <solid
                android:color = "your color"/>

            <size
                android:width = "150dp"
                android:height = "150dp"/>
        </shape>
    </item>



    <item android:gravity = "center" android:drawable = "@drawable/ic_svg"/>
</layer-list>

Шаг 4:

Теперь откройте launch_background.xml и добавьте наш новый рисунок splash_screen_image.xml.

Наш launch_background.xml будет выглядеть следующим образом:

<?xml version = "1.0" encoding = "utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android = "http://schemas.android.com/apk/res/android">
    <item android:drawable = "@drawable/splash_screen_image" />

    <!-- You can insert your own image assets here -->
    <!-- <item>
        <bitmap
            android:gravity = "center"
            android:src = "@mipmap/launch_image" />
    </item> -->
</layer-list>

(Примечание: при необходимости внесите те же изменения в launch_background.xml(v21))

Шаг 5:

Ваш экран-заставка Android готов и протестируйте его, запустив приложение флаттера на устройстве Android.

2. iOS

Примечание -> Убедитесь, что вы работаете с последней версией xcode, которая поддерживает изображение svg.

Шаг 1

Откройте модуль iOS в XCode.

Шаг 2

Открыть Asset --> LaunchImage

Шаг 3

Перетащите SVG image file в пространство, указанное как 1x, 2x, 3x.

Шаг: 4

Теперь откройте LaunchScreen.storyBoard и измените цвет фона в соответствии с вашими требованиями.

Шаг: 5

Протестируйте свое флаттер-приложение, открыв его на устройстве iOS или в симуляторе.

Я надеюсь, что это оказалось очень полезным.

Другие вопросы по теме